作为一名入行快十年的程序员,我认为诸如debug这种技术性的能力不是最重要的,毕竟技术性能力数不胜数。我认为,对于一名程序员来说,下面几点能力的培养可以给题主在将来的工作上带来很大的帮助。
1、表达能力。
两年前合作过一个做前端开发的同事,有一次他和产品经理交流需求文档时,他他明明知道有一个环节出现了错误,但他却不知道要如何解释这个问题,最后导致项目不得不延期完成。
所以说,一个人无法清晰地表达自己的观点,对于团队合作是十分不利的。工作中需要表达能力的地方无处不在。对一个程序员而言,学会清楚地表达自己的设计,才能更好地进行协同开发,包括各类流程图及架构图,这些都是表达自己想法的重要方式。
2、数据分析汇总能力。
还记得我刚入行不久时,带我实习的同事给了我一些之前的数据,让我做一些流程的优化。当时我的只懂敲代码,哪懂搞数据啊?但是后来学会了分析汇总数据之后,发现这个能力在工作上还是有很大帮助的。
在开始写代码前对数据进行全面分析汇总,可以把代码设计、时序图、UML图做得更好,为后续代码编写更好地铺路。在项目结束后做好也能对每一个步骤、每一个模块进行分析汇总,这样才能让你通过这个项目有更多的收获。
3、社交能力。
假设同样在工作中遇到了无法自己解决的难题,人缘好的人会向同事求助,问题往往会迎刃而解,而“埋头苦干”又不喜欢打交道的人只能自己死磕,大大推迟了工作进度。
这里给你一个比较好的方法,你先准备好一个连续的话题,比如“吃饭了吗?”、“在哪吃的?”、“吃了什么?好吃吗?”,当你遇到常见的同事时先主动打招呼,然后开始聊这些话题。相信我,不出一个月,你习惯了与人交流,在社交方面也就不存在什么问题了。
4、时间管理的能力。
一天工作8小时,你决定先摸摸鱼再开始写代码。但当你刚摸完鱼,准备开始写代码时,又突然被叫去开会了。于是你便赶不上工作进度,不得不加班工作。此时正在加班的你就会想:“大意了,没想到突然要开会,早知道先把时间安排好了。”
都说计划赶不上变化,所以在规划时间的同时也要给自己预留时间。也就是说,如果你的上班时间是8小时,那你的计划时间尽量不要超过6小时,把多出来的时间预留出来,用于处理一些可能发生的突发事项。当然,时间管理不仅是一种能力,也是一种习惯,学会坚持是很重要的。
5、自主学习能力
程序开发领域的技术迭代速度还是比较快的,所以程序员十分需要自主学习的能力。同样是一起面试进来的同事,他下班后在学习,你下班后在打游戏,你们之间的差距就会越来越大。
所以说,有自学能力的人才有自我增值的空间。首先你要学会自律,把碎片时间利用起来学习工作之外的东西。其次,学以致用非常重要,以解决问题为导向,从工作的实际需要出发。一个人越能学以致用,就越容易自主自发地学习,因为他真真切切地体会到了学习带来的好处。
6、学会使用搜索引擎。
在编程领域我们所学的还只是冰山一角,除了现有且还不懂的知识外,每年都会有新的东西出现。即便你去请教你的同事、老师,他们可能帮不上忙。这时搜索引擎的重要性便体现出来了。
搜索引擎谁都会用,但能不能熟练运用是关键,毕竟熟能生巧。谷歌、百度上都可以找到许多供程序员学习的平台。与此同时,学好英语也是十分重要的,因为如GitHub等很好的平台都是全英文网站。
7、学会了解行业新风向的能力。
程序员的职业生涯相对较短,并且程序员数量过剩。因此,作为一个程序员,我们要学会如何在众多竞争者中脱颖而出。除了提高自己的技术水平以外,了解行业新风向也是十分重要的。只有紧跟技术的潮流,才不会被淘汰。
想要在第一时间跟上前沿,阅读英文资讯是最好的办法,如在SegmentFault 和 GitHub上。另外,邮件订阅也是很好的方法,如Fullweb、Pycoders、HTML5weekly等。