给新人程序员的八点建议
他结合自身经历,对许多刚踏入程序员行列的新人程序员,他给出了以下八点建议 ……
今 年已经是陈皓在程序员行业里的第十个年头了。总结这十年,毕业的头两年,陈皓在银行中昏昏沉沉中度过,“这是我最失败的时候,两年的时间几乎完全白费 了”。后来在上海的两年,我拼命地学习看书,并不断总结所做的项目,这个阶段是我补课的阶段,也是我量变的阶段。到了北京的这五年,是我从量质向质变转换 的阶段。
拼命看书
刚毕业的时候,陈皓也像很多刚毕业的学生一样,根本没有对自己的职业进行过比较好的规划。“还记得当时什么都没有想,就是想做一些实际的事情,好好的专研一些技术。实在没有别的什么想法。”在毕业头三年中( 1998 年到 2001 年),不要说是对未来的职业有所规划,对所学的技术也是毫无规划。
离开银行后到上海加入了一家专做银行的系统集成的公司,发现自己和别人的差距非常的大,所以开始拼命地看书和学习,在到上海的头一年中,看了四、五十本书,研究的技术包括 PB, delphi, SQL, HTML, CSS, DHTML, java, Perl, CGI, ASP, PHP, JSP, XML, UML, MFC, Lotus Notes, Unix, Oracle, Informix, C++, ActiveX, ODBC, ADO, .NET, COM, 乃至 CISCO 路由器的配置, Photoshop, 3DMAX ……陈皓学得很杂很泛,完全没有目的,只是觉得别人懂的自己也要懂。”
“看了许多许多的书,完全没有好好想想自己应该走什么方向。现在回头看来也不知道是好还是不好。”
也许是看的书太多,懂的东西太多,后来有机会参与了一次全国性质的项目。后台是 AIX+Informix 用 C 开发,前台是用 PB 的 PFC 做界面,通过 IBM 的 CICS 这个中间件连通前后台。在开发这个项目的一年时间里,陈皓对 Unix/C/C++ 以及分布式系统有了非常深刻地认识,并深深地迷上了它们,同时对大型软件工程的流程和管理有了非常深刻的了解。
这个项目对陈皓的影响非常大,除了技术上的收获之外,更让陈皓逐渐确定了自己的规划。
技术之外
2002 年底,北京一家做分布式计算 / 网格计算平台的加拿大公司对我产生了兴趣,经过 5 轮面试陈皓拿到了 offer ,又一次开始了我的奔走——从上海来到了北京。
新的公司让陈皓的 Unix/C/C++ 得到了非常大的巩固,“这个公司也让我这个土狼学到了很多很多,特别是认识和观念上。”特别是在带领一个 team 对公司欧洲用户做 Customer Service 方面 的工作时,陈皓学到了很多客户管理的知识,英语能力、与人沟通的能力以及对软件的认识得到了完全的升华。
陈皓开始使用一种和以前完全不一样的方法去思考问题 —— 从用户的角度对问题进行思考。“此时,技术方向对我来说已不重要,技术对我来说已经变得非常简单,因为技术只需要看书看文档就可以获取。”陈皓开始用全新的方式思考如何管理一个团队,如何制造一个成功的软件,如何管理客户。并由此有了更进一步的职业规则 —— 成为一个成功的技术主管、建立一个成功的团队、开发一个成功的软件产品。
给新人程序员的八点建议
走过弯路,有过迷茫,回首九年陈皓感慨万千。 “今天,我对许多刚上路的朋友都会说,人生的规则很重要, 从上大学时就要好好规划。”他结合自身经历, 对许多刚踏入程序员行列的新人程序员,他给出了以下八点建议:
1. 在大学的时候尽量多地进入公司参与实际工作,一方面积累工作经验,另一方面,提前认识工作和自己,以便毕业时更准确地把握自己的方向。
2. 从毕业开始到毕业后至少 5 年内,踏踏实实地专研技术,这是一个积累过程,千万不要把心思放在钱和职位上。钱和职位只是能力的附属品,不要让其喧宾夺主。
3. 从毕业后 3 年到 7 年的时间,注意学习工作当中的方法以及相关的管理和流程,不但要知其然,还要知其所以然。
4. 30 岁以前,踏踏实实地学习。学技术,学做人,学做事。 30 岁以后再谈自己的发展。
5. 毕业后的前 5 年主要是量的积累,要不停地积累知识和方法。毕业后的 5 到 10 年主要是质变,应该着重于思维和想法的更新。后五年应该有很强的包容能力和接受新东西的能力,千万不要太过固执和坚持自己的想法。
6. 换工作要“承前启后”,前面的工作会成为后面工作的一个基础,而后面的工作又会成为前面工作的一个很自然的延续。
7. 不要只把心思放在技术上,技术是 hard skill ,只要下工夫就一定会掌握。更要注意与人沟通等为人处事的 soft skill 上。 hard skill 像一个大树的根,而 soft skill 则像一个大树的枝叶。树根是你的根基,能让你站得很稳,而枝叶能让你向天空伸展,获得发展。
8. 对于程序员来说,应该始终记住,技术不是主要的,主要的是通过技术能够解决什么样的问题。一定经常想要解决什么的问题,要满足什么样的需求,而不是要用什么样的技术。