这几天又在重操旧业,准备带一个外包项目,作PM。项目不大,面试了几家外包公司,真是颇有感触。
不敢说摆资格,但将近十年的程序员生涯,一路走来,还是想给这些初初入世的程序员一些建议。
1.编码是基础,不要忘本追管理,切记浮躁心态。
转向管理这个我不反对,也是一个不错的发展方向。但是最近的面试,大都2到3年就当项目经理。一问技术,连普通的程序员都不如,给我解释是好久没有编码了,忘光了。其实,我始终有一个感觉,如果你是学技术出身的,你技术跟不上,肯定管不好,至少无法服众,这个是很现实的。是,程序员是苦,是累,但是既然走过,就要把这个基础打扎实了。管理是不错的名号,不过也是表面的现象,看看PMP吧。没有经过足够的磨练,是不可能把东西管好的。倒反,急于带上管理者的帽子,过几年你会发现,实际没什么长进。大的工程管不来,技术也都丢光了,高不成低不就,不知能做啥。
2.向设计发展,多学学面向对象的设计方法
程序员,大家都直接的任务是coding了。如果把软件行业比作建筑,那么coding应该就是最底层的工地工人干的活。而设计,应该类比建筑行业的画图纸的人。
确实,纯粹的coding在我看来,不过就是一种打字运动,不用花费太多的脑力,中专人员都可以赶这些活。但作为一个程序员,总应该跨越这个限制。把做好一个设计,作为自己的一个目标。
面向对象,这个东西太抽象了,我不好解释。这是一个设计的思想,甚至可以认为一个哲学。思路和理念甚至和生活、做人、处世都有相通的地方。掌握他,你的境界就会提升。
领悟这个东西不好说,可能是一瞬间的事情。但是在这之前,我建议看看《设计模式》,再此之上,模仿着模式,自己动手。再就,平时接到工程项目时,设计多往设计模式上靠。多思考,为何这里可以这样用,有什么好处。多思考,逐步逐步脱离“模式”。这样,逐步逐步,面向对象的思路,就会在心中逐步形成。
回头再强调一下,程序员,就不要老停留在coding阶段。这次面试了好几个人,甚至有一个77年的。回过头来,连UML都看不懂,连类和类之间有多少种关系都搞不清楚。这样的程序员,也就只能coding,除了coding还只能是coding。
3.不要僵化。
这也是容易在某个程度上难以突破的地方。简单的说,就是太过教条化。把《设计模式》当圣经,把面向对象里面的什么扩展性什么重用性当作设计目的。
是的,软件设计有很多规则,但只是建议,不是公式。软件业,还没有成熟到象建筑一样,有相关定律可寻,有公式可算。
设计无“黑白”这我始终认为的。设计领域,没有所谓的对错。因此也没有一成不变的定律。所有所谓大师总结出来的规律,要应用,也要看具体情况。我们所要了解的,是这些个大师为何提出这样的规律。而不是把这些的规律本身,硬生生的搬到我们的设计上。为设计而设计,那么设计就会成为实现的负担!
实际上这也是因果识别的一个过程。大师门提出的内容,往往不是事务的本质,而是现象。我们找到其原因,抓住其本质。实际上,我们自然而然的就会遵守他们提出来的意见了。
然而因果,何谓因,何谓果。往往不被人发现。举个例子:人们常说“明师出高徒”,明师是因,高徒是果。但我却觉得反之。明师出高徒,这是果。高徒择明师才是因。
想想挺快,眨眼功夫工作就要第九个年头了,这几年积累了些经验。不过,很难表达,希望这些能对某些人有些启发。