论程序员的自我修养
最近招了大半个月的人,结果是没有找到一个合适的。其实我们的要求不高,只想找两个合格的程序员而已。但是没有,所以有感而发,写下这篇唠叨。。。
我对合格程序员的定义是:
1、可以独立解决问题
这个问题不是编程问题,而是业务问题,或者说是公司生存和发展道路上遇到的问题。当然,生死存亡的大问题轮不到程序员来解决,所以大家就不必在这上面抬杠了。
问:你面对问题时,一般都是个什么套路?业务上的。
答:先看日志,找到问题后调试一下,看看哪里代码有问题改一下就好了。
没毛病!碰上bug我们都是这么干的不是么?可我已经说了是业务上的问题啊,难道还不够直白?好吧,我只能认为他根本就没有思考过业务问题,从来都是领导怎么吩咐就怎么做的。这不是程序员!这是码农!!我们团队不想要码农!!!
那么,遇到业务问题该如何解决呢?
我想大家都会有自己的套路,我这里简单说下我的套路,抛砖引玉。
首先,得搞清楚问题是什么,对吧。对症才能下药。只有抓住问题的核心,明了其本质,才能真正解决问题。
其次,要制定解决方案。我们知彼之后,还得知己。要确定自己需要什么样的结果,以及拥有的资源和能够付出的代价。做到了知己知彼,那解决方案就不会是纸上谈兵了。只有可以落地执行的解决方案,才是有用的解决方案。在这个过程中,就需要和各方面的人员进行充分的沟通和讨论,这一点很重要,否则基本不可能形成一个大家都能够认可的结果。这一点评论中有园友指出,我在这里做一个补充。
然后,找齐相关人员开会讨论,形成一个决策。
最后,就是按决策来执行了。
一个人应该有独立思考的能力和习惯,应该有自己的一套解决问题的方法论。个人认为这两点决定了一个人能不能把一件事做对、做好。
2、要有自己的见解和思想,不人云亦云。
没有思想,写不出好的代码!只会翻来覆去地重复搬砖的,还是码农。搬砖5年和搬砖1年,有区别么?你好意思在简历上写5年工作经验么?
问:你拿到任务后,工作流程是怎么样的?
答:都是领导告诉我需求,然后我按需求开发。
好吧,我输了。你接到任务难道不先做设计么?哪怕别人已经做过设计,你也得自己做个设计进行对比才知道别人的设计合不合理啊,才能学习进步啊。什么?不会做设计?那不是刚好是个学习的机会么?天天抱怨没有机会,天天对机会视而不见,这样真的好么?
咱们作为程序员,写好代码是基本的能力吧。如果别的方面都很强,但代码稀烂,那还是转行做产品经理比较有前途。
3、工作上不独立特行,可以和团队其他人一起愉快地工作。
有能力有主见是好事,但如果因为性格问题和团队格格不入,就不是好事了。我目前还没面过这样的人,不知道是幸运还是悲哀。。。