在网络上程序员有很多种称呼,如:码农、程序猿、屌丝程序员、软件工程师等,其中好些都是用于调侃,或者说不是褒义词。我更喜欢用工匠精神,追求极致来形容程序员,或者说是工程师。
本文分享一些与技术无关的内容,讲讲程序员在其他方面的修养。
目录
1、学会沟通。
2、会写文档。
3、读一些与技术无关的书。
4、学会包装。
5、建立社会化联系。
木讷、安安静静写代码、不善言辞是人们对程序员的第一印象,讲话、沟通似乎是大多数程序员的硬伤。程序员的性格比较简单、直接,这其实对做技术来讲是件好事。
程序员跟熟悉的人(团队内部熟悉的人)还是能进行比较好的交流的(比如跟内部的人进行接口联调、技术设计、测试、上线等)。而一旦到了会议上,特别是有老板或者有客户在场的时候,他们就变得哑口无言了,或者说话支支吾吾,不大方。
另外有些程序员自己处理一个问题时,能够很快速地实现,但是让他把自己所知道的教给其他人,就变得比较艰难了,不知道怎么跟对方沟通。还有涉及到跨部门沟通时,或者项目管理过程相关沟通时,就会变得迟疑,没那么有自信。
我的建议是,有一说一,勇敢说出自己的真实想法。这个的前提是,你得要有自己的认知、想法,然后能够用语言准确表达出来,让你说的和你想的一致即可。你在职业生涯初级阶段的时候,就应该有针对性、有意识地锻炼自己的讲话能力。在一些没那么重要的会议上,你可以表达出你的意见和观点。在技术团队内部进行技术分享、架构设计分享、或者就某一个具体问题发表自己的意见,其实都能够积累你讲话的底气。日积月累,你就不会恐惧会议的场合,只要你对会议的内容有见解,你就不用在意开会的人是谁了?
当你学会了个体沟通以后,局部沟通以后,你得试着主持一个会议。主持会议,或者主持某项过程,更需要一个程序员清晰的工作思路,还有完备的沟通协调能力。
事实上,很多程序员只会写代码,并不怎么喜欢或者说并不怎么会写文档。他们对自己写的代码非常认真负责,会进行自测、优化。有些经验丰富的可能会做一些架构设计文档、概要设计文档。
让程序员写文档或者做一些PPT介绍时,他们就觉得很为难(不知如何下手),或者不屑一顾(会写代码就行了,为啥要写文档),无奈被迫之下码出的一个文档往往质量也很差。他们觉得写代码才有技术含量,且代码的实现逻辑他们自己都清楚,没必要为自己写文档。如果写文档是为别人写,他们的热情就不像写代码那样高涨了。
我觉得文档是你完成代码编写后的一个最佳展示机会,代码结束编写后,很少被其他人看,除非是存在bug,被接手的程序员来填坑(填坑往往也是被骂的)。但文档却不一样,被阅读的概率很大。从一个文档中,可以看到作者很多东西,如:思路是否缜密、逻辑性是否强、设计方案是否优秀、需要注意的地方是否有文档对照等。往往阅读文档的人,都会对编写文档的人心存感激,因为你为他提供了一把钥匙,在他一无所知的情况下。
可以说,文档质量的高低是衡量一名程序员是否优秀的重要标准之一。即使这个程序员离开公司了,他留下来的文档也还会保留很久,为新来者提供很多帮助。哪怕这份文档后续被变更了,改成其他的模样了,文档的修改记录里面仍然会有历史版本记录,留下你的大名。优秀的文档跟优秀的代码一样,能够让人产生信任和好感,文档比代码更加让人直观。
刚步入职场的程序员,大多数其实都是挺上进的,必然会对自己所掌握的专业知识不满足,然后学习很多专业方面的知识,如编程语言方面的、数据库方面的、架构方面的、运维方面的、中间件方面的技术书籍等等。这个其实本身很好的,但随着职业的发展,仅靠这些似乎也是不够的,或者换句话说,如果能够掌握一些跟技术无关的知识,百利而无一害。
建议大家去读读那些与技术无关的书籍,这样其实对你所做的本身还是有很大帮助的。举个例子,你技术方面不错,写了一个框架解决了某个具体问题,你想把这个框架分享给更多的人,然后你就把这个代码开源到github。如果你就仅仅做到这一步,很有可能你这个优秀的框架就被淹没在浩浩荡荡的项目里去了。酒香也怕巷子深,程序员不太善于自我营销,不太善于产品运营和推广,一个很重要的原因是他们把边界定得太狭窄了,大部分认知都是技术方面的。知识体系过于单一,很难跳出技术范畴与人交流。
你可以结合自己的情况阅读一些产品方面、运营方面、行业方面的书籍,这些其实对所从事本岗位是很直接帮助的。事实上,你完全可以不设边界,阅读任何历史、人文、经济、财经、社会、艺术类的书籍,他们能够帮助你丰富自己的知识和思想,使你变得更加全面和完善,也能帮助你建立更多的自信,获得更多的灵感。
你也可以阅读优秀人物的传记,从他们身上你可以获取更多成功与失败的经验。树立榜样,让你找到前进的方向,完善自己的人格,打造自己的风格。
包装并不是一个贬义词,对一个货真价实拥有自己本事的程序员,学会包装,只能说是如虎添翼,绝对不是投机取巧。如前面所述,你用自己的专业能力写了一个优秀的开源框架,你已经完成第一步,把它放入到了开源平台中。但这个时候的优秀定义,是你自己定义的,因为还没有用户知晓你这个产品,也还没有用户开始使用你的产品解决他们的问题,所以你这个产品的价值还不是最大化的。
酒香也怕巷子深,你得为你的开源软件包装一下,写一份完美的产品说明书,精心制作。包含了你产品的亮点介绍、解决了什么问题、有什么创新等等。有了这份与原有功能相匹配的包装以后,用户就可以直观地看到你是否属于优秀的产品,就能够一下子甄别出是否属于他想要的。
同样的,程序员对自己也是需要包装的。比如参加一些协会、技术交流群、线下技术沙龙会议、开源平台活跃者、公司内部分享会议等等。包装的前提,不是夸大,而是首先得有配得上说明的能力。有能力,却不能让别人一眼识别出来,是不少程序员的通病。其实,我们可以通过寻找一些优秀的文档案例,学习他们是如何精心制作的,把自己的简历,或者自己的产品不断完善包装起来。
一个完全封闭的程序员(不仅仅是对人封闭,对很多新鲜事物、开放式创新式事物也封闭)一定不是一个优秀的程序员,优秀的程序员往往愿意并善于与他人交流、分享自己的经验和想法,并在交流中得到有益的东西。
通过这些社会化的活动能够使你的想法和技能更加完善。
能够使你建立权威,你的技术博客、你的开源项目会让人觉得你是专家,你会拥有一批自己的粉丝受众。
你可以找到与你兴趣相同的人,一起做有趣的事情。
你的社交网络将因此扩大,这意味着你所获得的机会将会更多。
程序员是一个独特的群体,他们简单直接,佩服那些真正厉害的人。他们当中,很多也是追求工匠精神和极致追求的。我想除了技术专业方面的追求以外,有其他更多的修养,这样会走得更加稳、更加长远。