程序员=青春饭”?不,程序员是一个具备长久生命力的职业( 二 )


我相信每个人身体里都有某种特质,这种特质让你在某个领域取得成就的可能性远远大于其他,这种特质也能让你异于他人 。但是,人们并不是生来就知道自己擅长干什么的,需要花时间去寻找,找到它,然后去做自己最擅长的事情,这对你漫长的职业生涯是一笔巨大的财富 。
需要五年这么久的时间吗?依我个人的经历,恐怕更长也说不定 。无论程序员也好,软件工程师也罢,叫着简单,领域知识却是浩如烟海 。进入现代互联网阶段,程序员的领域细分到了令人发指的程度,比如XX语言工程师,前端工程师,后端工程师,架构师,大数据工程师,安全工程师,运维工程师,移动开发工程师,DBA等等,叫法繁复,甚至职能重叠,这些角色最初都叫做程序员,最终他们像一棵大树,枝条粗壮,蜿蜒生长,然后在树冠分开,并结出了各种各样的果实 。同时,每个细分的领域又会衍生出浩瀚的领域知识 。
比如编程语言,常用的编程语言就有几十种,静态语言,动态语言,脚本语言,函数式编程,面向对象编程,过程式编程等等,从平台角度,JAVA VM上有Java,Scala,Groovy,Clojure,Jython,Ceylon等,。Net平台上有C#,J#,F#,VB.Net,VC#,ASP.Net,移动平台有IOS,Android,windows Phone ......
即便我们把目光聚焦在一门语言或技术上,Java,你也不可能仅仅掌握它的语法特性和函数库,然后写写业务表单和增加改查就完了.Java的虚拟机,性能,并发编程,Jit技术,垃圾收集,集群,分布式,异常,日志服务,还有大量的Java平台开源项目,都需要深入了解 。除此之外,一些数据结构和算法也是程序员们应该掌握的内容,比如栈,队列,链表,二叉树,红黑树,B树,散列表,排序算法,查找算法,最小路径,最小生成树等等......
这么看来,五年的时间并不长是不是?
当然,还有一种可能,你花费了五年的时间,发现自己并不适合做程序员,虽然这听起来有点悲哀,但也不失为一件好事,因为你还有时间转型啊 。程序员几乎可以转型为其他任何角色,反过来却很难 。我们听说过很多优秀的产品经理,创业者,管理者最初都是程序员,却很少听说哪个顶尖的程序员是从产品经理转过来的,有吗?反正我不知道 。
程序员如何做出好产品?在很多人眼中,产品经理做需求,程序员做实现,似乎是一对冤家对头,比如最新的段子是这样的:产品经理失踪了,程序员第一时间到警察局报警警察对程序员说:你先冷静一下,你这样一直笑没办法做笔录 。
其实根本不是这样,一个好的产品,一定是程序员和产品经理一起努力协作的结果,甚至,很多技术人员本身就是这个产品的产品经理,有的即负责技术又设计产品,有的干脆是从程序员转成了产品经理 。
张小龙在刚并入腾讯的时候负责QQ邮箱,那时候他觉得自己应该做一个管理者,产品的事情让团队的人去做就行了 。“说老实话,我个人没有太关注它的体验,几乎很少参与到产品的设计中,结果出了大问题」 。之后张小龙彻底改变风格,重回一线 。「从极简版开始,我真正投入去做一些我自己掌握的产品体验,我怎么说就怎么做,任何一个元素要改都必须得到我的同意才行,我会全程参与到这个产品的每一个功能体验中」 。最后始有微信 。
据说张小龙是那个时代南方最好的程序员 。
马化腾对技术和产品的重视程度也由来已久,他在2008年的公开演讲中就说:产品和服务是需要大量技术背景支持的,我们希望的产品经理是非常资深的,最好是由做过前端,后端开发的技术研发人员晋升而来 。好的产品应该交到一个有技术能力,有经验的人员手上,这样会让大家更加放心 。如果产品经理不合格,让很多兄弟陪着干,结果发现方向错误,这是非常浪费和挫伤团队士气的 。
如果你是个程序员,如果你热爱你的正在研发的产品,一定要参与到产品的方方面面中来,彻底了解产品的逻辑,体验,交互和用户心理,每一次版本发布后去观察用户的反馈,收集产品数据,与产品经理反复探讨和确认每一个细节 。
事实上,无论产品经理和设计师做到何等的事无巨细,最终软件是由程序员写出来的,这个产品必定天然携带了这些程序员的特质和元素,如果程序员在每一行代码中倾注了自己的情感,这个产品就是个有情感会呼吸的产品 。如果程序员只是实现产品的工具,那做出来的东西也是没有生气的,苍白的 。
只有程序员和产品经理同时全情投入,才有可能做出最好的产品 。


推荐阅读