在你刚开始创业时,写了一大堆只有自己看的懂的代码。日后在你进行招聘的时候,你要如何让你的员工也能看得懂这些代码?如果你曾经经历过这个过程,你就会知道这件事情有多么让人心力憔悴。因此作者将自己的经验分享给所有人。* @( V+ }9 [% i6 ?* ]. F/ ~
9 o. c b \- `0 G4 d6 Q8 Y8 \! m% T$ W, z. m' V' b
在上高中的时候,我和好朋友Neal创办了一家公司。在刚开始的时候,我们两个人都在进行编程工作。但是不久之后,我们就拆分了彼此的任务:他开始负责宣传我们的网站,而我继续进行技术开发工作。在那个时候,这样的分工让我们获得了不错的效果:在我们的通力合作之下,我们可以自己照顾过来网站的所有工作。我们不需要别人的帮助,不需要花费大价钱去请开发人员或是将产品的开发工作外包给第三方企业。
) y( X" \% X9 ]) @
Q8 J6 u# r1 q' O7年之后,我们开始扩大规模,开始全职经营我们的网站,并且继续这种自给自足的经营方式。在刚刚开始的时候,我们还可以照应的过来。但是一段时间之后,随着工作量的增加,我们发现已经到了必须进行招聘的时候。为了实现我们的目标——更多的营收、新产品和新功能——我们决定进行招聘,组建我们的开发人员团队。这个想法听上去很让人激动,不是吗?
/ i* x- E: n ^4 N9 Z# F" Q: J, q- {" F8 R- s N" @
但是现实和理想总是差的太远。2 l6 n; x3 \) h8 ]- ]9 o
# ^7 l0 ^! [! g; Q1 f t4 M+ m我紧缩双眉,看着我曾经写下的那些代码。代码库里有着几千条尚未经过测试的代码、诸多只有我自己才能看懂的快捷方式。而我的代码风格,即使是最顶尖的开发人员也未必能看的明白。我看着这个代码深渊,心里不禁在想,会有人看的懂我所编写的这些代码吗?: M9 ? @9 b% k# s0 Y- Q9 a) }
4 ^; S% i) @2 E9 z; `
为了实现我们的目标,我开始强迫自己开始了长时间的代码整理工作。如今已经几年过去了,在不断的努力过后,我终于克服了这些困难,并且从一个创始人成功转型成企业的领导人,以下就是我的经验:
! K% r0 n' g* i4 ^. z
3 }4 j0 Z9 C+ W9 [- C( f2 M& a1. 保持整理难度不继续增加
" q$ N3 e3 l; I6 s
1 R& o$ Q3 p; E整理代码的第一条原则,就是不要增加原有的整理难度。你在过去的几年中编写了大量的代码,这些代码杂乱无章,需要你进行整理,这就是所谓的整理难度,没有人会喜欢这个东西。然而你,你的首要目标不是要减少难度,而是确保你在增加新功能的时候难度不会继续增加。这就像是个人理财一样,减少开销是一个长期的目标,你的近期目标是不要增加开销。
6 ]- p" \1 m' L5 G& C8 Y) }. f Q4 b% |9 z# T* f
这意味着,当你想要为产品增加新功能的时候,你应该用符合你预期的方式增加新代码。每增加一条代码,你就应该立刻进行测试,不要拖延到以后;在必要的时候,你应该添加文档块,对代码进行说明;在增加代码的时候,采用标准的代码书写方式。这样做,能够让你的代码整理工作稍微轻松一点。$ E p/ a# v5 d( t C5 ~8 }
/ X# h# a4 o, F% B" m) o) z( h5 v
2. 不要试图一口吃成个胖子
$ o! c5 N- p3 P: M5 z/ K: U5 I; m5 J5 ~" N: j7 K
终于要开始代码的整理工作了,你要让整理困难越变越少。不要试图一次性解决所有问题。如果你想添加一个新功能,而这个新功能需要配合以前的代码才能实现,那就先整理这段旧代码。随着时间的推移,你会发现以前积累的问题已经被逐渐解决了。这种方式要比一开始就试图整理所有代码容易的多。因为当你一次性试图解决大量问题的时候,你会感到手足无措,甚至不知道该从哪里开始。
7 b* }( F; }9 z& V2 v- G! _. H( [ \8 N' }" K& s, B# L5 ]' F9 I
3. 雇佣的第一个人很重要
/ R" s# I$ l1 s8 O. M( I$ F$ }% ^5 h/ U3 v+ L- Z- U
所有人都知道招聘非常重要。如果你的目标是整理此前纷乱的代码,那么你应该找到一个熟悉你所使用的工具和代码语言的人,此外,这个人还必须有着非常好的性格。编程能力当然重要,但是拥有耐心和幽默感同样重要。找到这样一个人也许要花费很长的时间,但是没关系,因为这样的人一个就够了。在找到他之后,日后其他的工程师都会以这个人为核心,他将引领你的工程团队。
9 y( B; Q& [( h; }; c
! P8 J0 \6 U* A: U, M4 j/ j# G N4. 不要吝惜时间5 O" X3 B9 ^1 p- q& O
8 G& z3 A% X( J! D1 A
在找到合适的人之后,你会发现你将花费大量的时间向他们讲解你的代码,有的时候同一个问题你要跟他们讲解许多次。你也许会不耐烦,也许会觉得这是在浪费时间。但是请相信我,你必须要这么做,哪怕是和工程团队进行过度的交流。2 L/ t- ~) W3 b8 b" V/ O
8 H* z, Z, s# D/ E; [. D. D6 G o) Q1 [5. 对于最后的核心代码,等待合适的时机进行处理
6 ^& u5 O) K0 M
3 h' e( r5 r$ J* q# i* I. x在组建了工程团队之后,他们就会为你提供帮助。一两年之后,你会发现你的代码库已经从“你编写的代码”变成了“工程团队编写的代码”。但是你还会发现,一些核心代码还是没有任何变化,你的工程团队也不愿去触碰它,而且这些代码是深深嵌入在整个系统中的。也许你的团队曾经尝试过整理这些代码,但是碰到了巨大的困难,于是他们不再愿意再次去尝试整理。/ y* ~. P) ] r* ^: ?( ?
6 J, N( E# s l: g& R/ a q如何解决这个问题?我发现,最好的解决方式就是等待。先让产品继续工作,你会发现在未来的某一个时间点上会出现一些时机,让你可以删除一部分这些纷乱的代码。例如你最难解决的是登录验证系统代码,突然间产品团队建议你放弃原有的登录系统,让用户改用Facebook账号登录,这个时候你就可以删除以前的相关代码了。或者是某一天你决定对产品进行转型,这些难以整理的代码突然变得毫无用处了。
. _ K. N. T( r, e7 O( }& q
1 {- r/ K \% w4 g4 Y/ q从科技企业创始人向科技团队领导人的转型并不容易,但是希望我的这些经验能够为你提供一些帮助。
9 ]6 k: V {, q, `; |, C8 j- G2 X1 T( W( o+ C6 l0 a! m7 X
|
上一篇:程序员10大职业生存技巧下一篇:wemall微信微商城
|