程序员的“非程序员”之路
摘要:
20多年前我就开始写代码,很喜欢写代码,直到现在为止仍然热度不减!人生总是会和你开点小玩笑,我在多年之前走上了”非程序员“之路。我觉得无论你将来是否继续走技术路线,你的程序员经历将为你打下雄厚的基础。本文为你分享我的一些心得,为你分享一些程序员也应该掌握的”非程序员“技能,希望对你有帮助。
什么是”非程序员“?
什么是程序员?这应该不用解释了。所以”非程序员“就很容易解释了,只要你从事的是IT类工作,但又不是写代码的,你就是”非程序员“!
”非程序员“常见的职位有:项目经理、产品经理、测试工程师、配置管理员、实施工程师、SQA等;除此以外还有部门经理、副总、总经理、老板!
按照时间顺序,我做过的职位有:程序员、项目经理、研发中心经理、副总经理、常务副总,后来我创业了,所以老板我也当了一回!(PS:我这个老板是光棍司令)
我的程序员之路
如果我问你:你写过代码吗?
你肯定会说:写过,而且还写了很多!
请你留意,我说的是”写“代码,而不是”敲“代码噢。
我的运气比较好,高中一年级的时候学校就开课《BASIC语言》这门课。当时电脑是很稀缺的资源,家里没有计算机,虽然学校有计算机房,但上机的时间并不多。当时我编写程序的方式就是用笔在练习本上写代码,调试程序的方法就是在脑袋里面运行这个程序。平时我写下大量的代码在练习本上,非常珍惜上机时间,想榨干在电脑房中的每一秒中。虽然当时我的大部分时间是在练习本上写代码,在脑袋中运行,但就是因为这样的编程方式打造了我的编程基本功和素养。
我对计算机编程的强烈兴趣,驱使我报考大学时的第一志愿就是计算机软件,但我的高考成绩不理想,只考上了第二志愿……
我大学读的是”城镇建设“专业。这是一个”伟大“的专业,我们的系主任说:这个专业是用来培养建委主任的(现在叫建设局局长)!当时我们兴奋和自我陶醉了一翻,结果毕业时我们没有人能找到”建委主任‘的工作,直到现在好像也没有同学坐上了这个岗位。
大学毕业后我在某事业单位从事市政方面的工作,但我很快憋不住,我找到了一份新工作,在某软件公司做程序员,开发建筑预算方面的软件,正式开始了我的程序员的生涯。接着下来的5年时间,我写下了大量代码。当时整个公司13个,其中程序员4人,但作为程序员的我除了写代码,还需要自己分析需求,自己测试自己的软件,自己管理自己等。这样的工作模式,让我得到全面的锻炼。
我的非程序员之路
公司规模不断扩大,开发人员的数量增加了不少,后来做的项目一般都会配备几名程序员和一名测试,而我“理所当然”地当上了项目经理。最开始做项目经理的时候,还可以写一些代码,后来要花更多的时间处理需求、客户关系、项目管理、团队建设等事情,基本上没有时间去写代码了。
不多久,公司打算将我推向“研发中心经理”的职位,这是一个莫大的诱惑!刚接任研发中心经理一职,还期望能有一半时间来研究技术,实际上这是不可能滴。后来我还先后负责了ISO9001、CMM3级和CMMI5级的工作。
我从心里面其实是更喜欢走技术路线的,当初选择了管理路线让我踏上了“不归路”。我原本在技术上有很多“第一”:公司中编程最熟练的第一人,第一个最熟悉C#,第一个最熟悉SQLServer等等,多年所从事的“非程序员”工作虽然让我掌握了不少新技能,但同时也在技术上“废掉”了我的武功。
如果上天再给我一次机会,我会不会仍然选择这样的 一条路呢?
世界上没有这么多如果,我们只能做到总结以前,把握现在,面向未来。
上文简介了我的经历,下面开始为分享一些我的心得体会,无论你是否打算继续走技术之路,希望对你能有帮助。
关于程序员的几个误区
1.)30岁不能再干程序员
当年不知道谁说程序员不适合干到30岁,因为人脑越老越不适应这样的工作,程序员要趁30岁前做好转型的准备。我当做了研发中心经理,选择了管理路线,其中一部分原因就是受这个“30岁不能再干程序员”的影响!
国外四五十岁的程序员很多,人家写的代码越老越牛B,脑袋的思考能力完全不见到减退,反而越发厉害,所以"30岁不能再干程序员"就是一句坑爹的话!
当然这句话在中国说是有背景的,那就是程序员没日没夜的加班,如果是这样的状态,当然是很难挨到30岁的。所以我们要保护好自己的身体资源,特别是脑袋,记住两句话:
a)加班有害健康!
b)工作是公司的,身体是自己的!
2)程序员 = 码农
一些外行领导认为程序员就是一种低技术含量的工种,随便在街上可以抓一把,你不干还有很多人干!就算是我们程序员本身,也将自己自嘲为“码农”。
程序员是高技术含量的工种,如果你掌握了核心技术,你是相当值钱的!但是在我们中国高技术含量项目或软件太少了,所以如果你连续几个月觉得自己技术上没有什么进步的话,你要想办法找一些更有挑战的工作了。
3)掌握的开发语言越多越潮就越好
开发语言不在多,在于精!对于编程老手来说,掌握一门开发语言的语法可能只需要几天的时间,但编程的素养和深厚的编程功力是需要多年沉淀的。
我刚学会我的第一种开发语言BASIC,自认为感觉良好,自以为凭借自己小聪明就能运用BASIC写出很强大的程序。后来参加了程序员兴趣小组学习班,系统地学习了一些算法,才发现自己是井底之蛙。刚开始工作的几年开发语言用的是VB,还学习了一些设计模式,自以为自己很OO,后来随着工作经验的积累和遇到不同的问题,才发现自己是多么的肤浅。
编程基本功需要在学校阶段就打造,并且要让自己爱上编程。除了要认真完成所有编程课程的课后作业、练习和课程设计外,你自己还要尝试去挑战一些高技术难度的题目。
给几个题目你参考一下:
a)写一个五子棋(或象棋)之类的程序。
b)写一个画UML图的程序。
c)写一个视频播放程序,要自己写解码器。
自己独立完成需求、设计、实现和测试等全部工作。
程序员应该掌握的几个非程序员技能
程序员不仅要学习技术,也需要掌握一些“非程序员”的技能,这些技能能帮助你开阔视野,加速你的成功!
1)需求分析能力
2)活用UML分析及解决问题的能力
3)软件测试能力
4)项目管理基本知识
5)口头表达能力和书面表达能力
6)团队协作能力
以上知识不能只看书本,更关键是实际操练,操练的最有效办法就是:自己独立完成一个软件的所有工作;当自己具备一定基础后,就和几个同学或朋友去挑战更高难度和复杂度的软件项目。
职场上的一些小建议
1)想清楚自己想干什么。
星爷说过:人生没有理想,和一条咸鱼没有什么分别!
人生能有多少个十年,要尽早发现自己想干什么,并要尽早做好通盘规划。
2)多为自己着想,不要太过顾全大局。
读大学时,老师给我的评价是:综合素质和能力很强。工作后,老板给我的评价也是这样。但这样的评价,可能会带来杯具的事情……
因为我综合素质和能力强,所以在安排工作的时候,别人都可以挑一些他喜欢或他擅长的事情做,而我因为是“全能”的,所以我要去干一些别人不喜欢或不擅长的事情。我曾经试过好多次将自己想研究的技术点让给别人,久而久之我就失去了很多掌握高精尖技术的机会。至今为止我在技术上的一个最大遗憾就是,没有能精通C++编程,我曾经有机会和有条件去开发C++的绘图程序的,但我让给别人了……
“人不为己天诛地灭”这句话很有道理,当然不是要你去自私自利,但也不能太过于“大公无私”,根据自己的发展路线,要主动去争取一些能提升你的技能的机会。
3)不要说少多做,要多说多做。
“少说多做”被誉为一种美德,但每个公司都会有办公室政治,少说多做会让你吃大亏,你需要的是多说多做!除了要干好事情,也需要让你的老板、同事及时知道你的工作成绩。成功人士不仅仅是靠实力的,还需要包装和宣传。
4)精通技术能帮你创业,精通管理可能只能帮你找到好工作。
大学毕业之前,我的职业规划是这样的:争取几年内达到月入过万,然后争取5年左右的时间能通过打工积累一点点的钱和技术,然后通过自己的技术去创业。可能很多程序员都有这样的类似想法。
我曾经试过两次创业:
第一次创业:我打工的同时和一些朋友合伙成立一个公司,我负责开发软件,我的合作伙伴负责市场方面的工作。但最终还是失败了。
第二次创业:从2010年开始我辞职出来单干,全职做软件研发方面的咨询和培训服务。目前正在进行中……
如果你技术足够牛B,能找到合适的合作伙伴,并且能找到投资人,那么成功的机会是很大的!有技术你就有创业的本钱。
我第二次创业就比较尴尬了,当时我已经干了很多年的管理工作,技术上已经被废武功,我的去路可能只有两个选择:
a)找一个新公司任职管理层的职位;
b)创业搞咨询和培训方面的事情。
我不想再打工,所以选择了b),但搞培训和咨询其实是很难做大的,每次上课其实都是体力活+脑力活。
这与我多年前的梦想是完全不一样的,我期待自己的公司具备核心技术,并且这个核心技术能为社会带来很大价值,公司能通过这样的模式赚到很多钱。
小结
每个人都会有自己成长之路,每位企业家都会有自己的创业之路。
我走了不少弯路,本文分享一些小心得,希望能对你有一点点小帮助。