从 初级程序猿(半年) - 项目主力(一年) - 初级技术管理(一年) - 中级技术管理(两年) - 部门管理(两年) - 高层管理(三年) - 职业经理人,程序员怎么升职呢?
1. Love Coding 热爱编程
大四开始找工作的时候,我正在上一门可视化编程的课,大概就是用VC编写出可以绘图、简单动画 和播放多媒体文件等各种操作的程序。基于这门课,我编写了贪吃蛇、俄罗斯方块等各种游戏。另 外的一段编程经历是大二时候的Java大作业,编了一个很弱的图片管理器。实际上,这些程序都非 常弱智,那时候的我算法极差,代码规范性极差,甚至于对SDK或库函数的掌握也极差,是个地地 道道的菜鸟,但这并不妨碍我喜欢编程。 任何成功背后,都有不为人知的苦闷和寂寞。程序猿的苦逼之处,就在于别人高谈阔论指点江山的 时候,别人推杯换盏觥筹交错的时候,别人出差南北纵横内外的时候,别人利用工作之便撩妹泡妞 啪啪啪的时候,你只有面对屏幕,把键盘敲的啪啪啪。如果你忍受不了这种寂寞,体会不到其中的 乐趣,请尽早换行。
2. Know yourself 贵有自知之明
这个词,说的容易,做起来特别难。人的性格在十几岁的时候 基本就定性了,二十几岁的人再想彻底改变自己,极难,有这个毅力,估计什么都能做好了。 所以,弄清楚你到底适不适合干程序猿这一行,我多年的经验总结下来,优 秀的程序猿都有如下的性格特质(或部分):细心严谨、细节强迫症、完美主义、做事情有条理、 耐得住寂寞、喜欢跟机器跟代码打交道(相比跟人打交道)、口才一般不佳、容易偏激或钻牛角 尖、人情世故方面稍显笨拙。仔细想想自己是什么样的人,结合上一条,有没有一颗热爱coding的心,你就能知道自己到底适不 适合这一行。
3. Be reliable 可靠,说到做到,做好本职
作为程序猿,最基本要求是:代码可读性好、功能正常没有明显bug。 但我见过太多这行里的毛头小伙,数字常量到处埋,函数命名用拼音,if else 十层八层嵌套,匈牙 利命名法和Linux命名法混杂,代码像挤在一张皱了的纸上,零注释或写完代码补注释,异常处理缺 失,还有基本功能一用就崩溃,还辩解说,在我那里是好的呀。遇到这一类人,通常我在心里先给 打个D等(ABCD),日后恐难以翻身。 还有稍微进阶一点的毛病,说这个功能包我身上没问题,又或者一周之内绝对给你搞定,领导你放 心。最后拿出来的代码不是错漏百出,就是规定时间根本完不成,而且到deadline前你询问他的时 候才告诉你搞不定。。。项目组里有这样的人,要么得配一个给他擦屁股的,要么得配一个项目助 理时刻监督他,换一句话说,他的贡献值其实为负。 程序猿要想进阶,其实什么设计模式、架构、高深算法、莫测技术都不重要,这些都只是术,或者 说套路。最核心的应该是,把简单的任务完成好,之后再完成更难一点的任务,这样你就慢慢进阶 了。为了自己的承诺和项目组整体的进度,有的时候,你需要在保证质量的基础上,拼命加班,不 负所托。 再补充一点,可靠并不是说绝不出错,是人都会犯错。但你不能重复犯错,相同的错误出现两次, 会严重影响别人对你的信心。
4. Do the simple things right 再简单的事情都要做好,注重细节
你review过的代码里最低级的错误是什么?我遇到很多很多,“==”写成“=”、三个参数只传了俩、“1 <= month && month <= 12” 写成“0 < month && month < 12”、不判断返回值 就直接下一步调用,太多太多。这类人,你是老板,你敢提拔他当主管?
5. Be open-minded, don't be defensive 心态开放,接受他人意见
别人批评建议的时候不要 习惯性辩解和说不, 当你的领导,愿意明确对你提出指导,不管是耐心的说教还是严厉的批评,你都应该抱着“有则改 之无则加勉”的心态,即使要反驳,也要准备充分的理由和依据。面对领导的意见,要弄清楚其准确意图,然后实施针对性的改进措施。这就是团队里的游戏规则和生存之道。即使不是领导,是平级和下属,也应该采用类似的心态和应对方法。
6. Be logical. 有很好的条理,想事情做事情有逻辑
很多程序猿,表达的时候通常是“我认为”、“我觉得”,或者说“听我的,只要这样这样,就能 怎样怎样”但是一旦你追问其结论的依据,或者推导过程时,他又拿不出来。又或者,只知道埋头 苦干,压根不管方向对错,轻重缓急。 程序猿是100%纯正的脑力工作者,但很多人却把自己变成体力工作者,自嘲自己身处劳动密集型 产业,有的人甚至以日产出几千行代码为傲。这无疑是自废武功,自己把自己往“码 农”的“农”字上推。定位问题,分析问题,解决问题,贯穿其中的都突出一个“逻辑”。无论是 写设计文档、编写代码、测试,还是产品功能、用户需求、交互设计,概莫能外。先思考,谋定而 后动,思考的过程,也就是找出因果关系,找出1234条论据以支持论点,找出step1 step2 step3 直至结果的推导步骤的过程。 当你有良好的条理性,有严谨的逻辑,也许凭直觉也能做出正确的判断。但时刻别忘了这一点。
7. Be thankful 懂得感恩
什么是感恩?就是对指导、帮助、提携乃至批评过你的人的一种由衷的感激之情,懂得感恩的人都是善良的,善良且努力的人运气都不会太差(哈哈,仿烂鸡汤体)。只要你懂得感恩,甚至无需你做太多,只需要适时的表达,对方就能感受到你是孺子可教的,他就会觉得他的付出没有白费,而 不是面对一个木头人或白眼狼。我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取
8. Understand your products and users 理解你的产品和用户
很多程序猿,痴迷于修炼技术,常常会在一个简单功能模块里面运用某某高深的算法和莫测的技 术,纯粹为了炫技,而不去考虑是否过度优化,是否用户并不需要这么复杂的功能,是否投入产出 比并不合理。无视用户、产品和市场规律的思考方式,就是纯技术化思维。 你要做的,是应该快速把产品发 布,再去倾听用户的呼声,可能100万用户里,都不会有人关注你花了几周时间死磕的问题,但他们会爆出更多更重要更迫切的问题。 你要时刻关注你的产品,关注你的用户,从电商的网评,从售后的热线,从论坛的帖子,从行业外的朋友,获取他们对于你产品的第一手的评价。一个好的程序猿,也应该是一个好的产品经理。否则你就是一个缺乏大脑的泥瓦匠,而不是一个建筑师。 作为一个程序猿的leader,你是要代表团队去跟产品经理撕逼的,如果你不懂产品,那么你的团队 也就完了。
9. Have good communication skills 良好沟通
做一个牛逼的程序猿,其实可以不用怎么讲话,用牛逼的代码和运行结果去碾压别人即可。但如果 你想做程序猿的leader,还继续保持这么高冷的姿态可不行。沟通无疑是管理的基础,一个程序猿 想升职,想做管理,必然需要证明自己拥有不错的沟通能力。跟高层领导要资源,跟产品经理撕 逼,跟测试部门搞好关系,跟设计妹子开开玩笑,跟程序猿搞基,不会沟通显然是不行的,最好是 亦庄亦谐,荤素兼备。 这里不展开讲如何拥有良好的沟通技巧。只说几点:1. 沟通的意愿最重要,只要你愿意主动沟通, 事情总会向好的方面发展。2. 沟通要真诚,不要套路。3. 口才不行,你可以多用写,写还有个好处 就是留有证据,方便以后撕逼。
10. Take responsibility 承担责任
常在河边走,哪有不湿鞋。代码写多了,挖坑是必然的。面对爆出来的Bug,面对领导的责备,没 什么好说的,自己惹的,自己clean up。 放更长远来看,谁都会出错。这时候是各种借口推诿,还是大大方方承认,并且用最快的速度处理干净?我认为正确的处理 方式是后者,这不单单是能力问题,更多的是人品问题。 当你有朝一日当了leader,你手下犯了事,你也得大大方方站出来“我把关不严,责任我担”,绝 不是把手下推出去了事(放你身上可能是小事,放他身上可能就得开除了),回过头再关起门内部 处理。只有这样,你的手下才会服你,才会有人为你拼命干活。
最后,做不好管理就做纯技术,做资深专家、技术大拿也挺好,不要强扭。