专业程序员有哪些表现

成为一个专业人士是所有程序员的目标。笔者在硅谷待了将近3年,在这里近距离观察了Google, Facebook, Uber等公司的大拿,并有幸与其中的一部分一起工作。在此分享大牛程序员的行为风格以及我自己的所思所想,希望对大家有所帮助。
特此声明:此为我个人主观观点,欢迎异见以及讨论。

承担责任

这是专业和不专业的分水岭。对于一般的程序员来说,他的责任就是及时、高质量的完成任务;对于 Tech Lead 来说,其责任就是统领全组,合理安排任务,让组员各司其职。这里包括3点:

  • 承担合适的责任。选择自己能力范围内、自己喜欢做的。一旦选择了工作,请承担完成的责任;
  • 学会说不。经常看到,产品经理或者领导会催促在极短的时间内完成任务,而程序员这个时候总是欲拒还休,说我来试试吧。专业的程序员对于任务有靠谱的预判和掌控力。当完成不了的时候,一定要说不。否则既是对自己不负责任,也是对他人不负责任。
专业程序员有哪些表现

专业程序员有哪些表现

 

对于程序员来说,没有try这种事

  • 应对最坏的情况。程序员最悲催的莫过于搞不定任务,这个时候一定不要推卸责任。这时候最重要的是给出一个切实可行的补救方案,最好有一个完成任务的时间点。老板不在乎你为什么完不成,在乎的是究竟怎样能完成。

高质量的代码

  • 没有Bug,每一段代码都要有相应测试。很多人不写测试,那是因为他们抱着侥幸心理觉得自己代码没问题,同时写测试又很浪费时间。实际上保证代码质量的第一要素就是测试,测试可以让你检测不同输入所产生的输出,有时候甚至可以推动你去修改开发代码以提高质量。
  • 可读性要高。刚学计算机的同学,变量随性命名,整个文档看不到注释。笔者认为,所有 public 的类、结构体、枚举、变量、方法都需要注释 ,因为 public 是外部可见的,极有可能是常见的API,这时候让别人看懂就十分重要。
  • 可扩展性和解耦性。最好的代码不仅针对当前特殊的情况,还可以应对其他情况;以后即使对现有的代码进行大量修改,也不应该影响其他模块。

代码上的时间

一个专业的程序员一周的花在计算机上的时间应该为每周60小时。最基本的40小时,要花在工作中。剩下的20小时,要花在提高自己身上。提高可以是多种多样的:读博客、做项目、看文档、上公开课。

有人说没时间,我们来算一笔账。一周有168个小时,假设你一天睡8小时,吃喝拉撒2小时,这样你还剩 168 – (8 + 2) x 7 = 98小时。然后你花在代码上60个小时,你还剩 98 – 60 = 38小时。你完全可以用20个小时陪伴家人(我知道很多人没有成家),再用10个小时与朋友聚会出游,就算这样,你也还有8个小时可以自由支配。

之所以要在代码上花费这么长时间,是因为软件这一行这一行变化太快了:乔布斯逝世才5年,Google已经声称移动时代已经过去,现在是人工智能时代;Objective-C还没火几年,转眼Swift已经出到了第3个版本;Html 5刚刚落寞,Facebook又推出了React Native试图整合Android和iOS两个平台。。。技术的进步,总是让程序员有太多的东西要去学习。

就在上周,Oculus宣布 React 支持 VR

对自己领域的精通

无论是前端、后端、还是移动端,都有自己的一套架构体系。作为一名专业的程序员,我觉得应该至少对自己领域所有的知识都有涉猎了解;对于核心的部分,则要做到烂熟于心的程度。

我有点反感简书上的一类文章《再不学XXX你就Out了》。这类文章一般都是说新技术又新又酷,鼓励大家快来学啊。学习新技术的原因永远不是因为它新、它潮,而是因为它可以更好的解决当前问题。对于深度和广度两个维度谁先谁后的问题,我个人永远支持深度优先。只有本专业弄通的情况下,才能融会贯通。Andrew Ng出名是因为他在Machine Learning的专长;提到John Carmack,大家都会想到游戏编程狂人;谈起乔布斯,大家都绕不开iPhone。专业程序员能做普通程序员不能做的,这才叫专业。

思维模式

很多程序员平常写代码只在乎能快速解决问题,不在乎选择解决问题的方法和原因,这是典型的不知其所以然。专业的程序员,理应对每一个问题、每一步设计都有自己的理解。

举个iOS开发中的例子。假如遇到一个新App,你发现整个App运用了大量的RxSwift 技术。你就要想为什么用RxSwift? 是方便测试?是整合逻辑?还是为了解耦架构?再进一步思考,为什么这个 iOS App 用的是 RxSwift 而不用ReactiveCocoa?是为了和Android端用 RxJava 保持一致的代码风格吗?

也许上面的问题和你工作需要解决的具体问题毫无关系,但是理解清楚个中要害却是提升内功的关键所在。

沟通

很多程序员只想写代码,做个安安静静的美男子,这当然无可厚非。但是你真的确定,正在在做的东西是老板希望、客户期待的吗?作为一名程序员,理解自己应该做什么、达到什么效果、同时让老板知道什么能够实现、什么实现不了,才是专业的表现。

举个Google中工作的实例:
部门经理:我们组A这个项目要赶紧干完,VP盯着我们。
程序员甲:好,那我赶紧做。
程序员乙:好。但能问一下这个项目为什么VP盯着?做了对整个组或者Google有什么好处?A项目的所有功能都要完成吗?有没有具体的截止日期?

上面我们可以看到,也许程序员甲和乙技术能力相同,但是甲更偏向于兢兢业业、努力干活的老黄牛程序员,他写出的代码很有可能是他认为非常好的代码;而乙则更擅长沟通,更有大局观的程序员,他写出的代码就更有可能被大家都认可。他们的专业程度高下立判。

合作

与组员的合作是专业程序员工作学习中重要的一环。除了沟通很重要以外,我想着重谈的一点,就是程序员在合作中不能掺杂着办公室政治。我所认识或者听说的硅谷的大牛,跟同事皆是坦诚相待,对后辈也是倾囊相授。

为什么会这样?因为首先,大家都理解了相关的知识,项目才能快速的推动,整体的工作效率才会提升;再者,自己懂知识,不代表自己能讲清楚它,随着与同事的交流和分享,知识本身会更加完善,对其理解也会更加全面扎实;最后,无私的分享和帮助有利于构建良好的工作环境和团队氛围。

技术的发展各有各的不同,但是专业程序员的行为方式,却总能看出相似的影子。我在硅谷的几年,技术学了不少,但我觉得自己真正进步的地方,乃是身体力行了很多硅谷大牛的工作作风。我很荣幸与一群专业的程序员一起工作。以同事相称。

未经允许不得转载:杨永博客 » 专业程序员有哪些表现

赞 (1)

评论 23

  • 昵称 (必填)
  • 邮箱(必填)
  • 网址(选填)
  1. 新用户246020我到看完都以为她穿的是辐射避难所连体服。。。回复
  2. 新用户250396字幕链接:http://pan.baidu.com/s/1qW7Iupm 密码:euve回复
  3. minecraftI've learn several excellent stuff here. Definitely price bookmarking for revisiting. I surprise how much attempt you set to make one of these magnificent informative website.回复
  4. minecraftI loved as much as you will receive carried out right here. The sketch is tasteful, your authored material stylish. nonetheless, you command get bought an nervousness over that you wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly a lot often inside case you shield this increase.回复
  5. minecraftThanks for finally talking about >专业程序员有哪些表现-杨永博客 <Loved it!回复
  6. minecraftExcellent pieces. Keep posting such kind of information on your blog. Im really impressed by your site. Hello there, You have performed an incredible job. I will certainly digg it and in my opinion suggest to my friends. I'm confident they will be benefited from this site.回复
  7. minecraft free download 2018Hey there! Do you use Twitter? I'd like to follow you if that would be ok. I'm absolutely enjoying your blog and look forward to new posts.回复
  8. minecraft free download 2018You really make it seem so easy with your presentation but I find this matter to be actually something which I think I would never understand. It seems too complex and extremely broad for me. I am looking forward for your next post, I'll try to get the hang of it!回复
  9. minecraft free download 2018I'm now not certain the place you're getting your info, however good topic. I must spend a while studying more or figuring out more. Thank you for fantastic info I was looking for this information for my mission.回复
  10. minecraft free download 2018This piece of writing is actually a pleasant one it assists new the web viewers, who are wishing in favor of blogging.回复
  11. minecraft free download 2018For newest information you have to pay a quick visit world wide web and on the web I found this site as a best site for latest updates.回复
  12. tinder dating siteIncredible quest there. What happened after? Good luck!回复
  13. tinder dating siteI’m not that much of a online reader to be honest but your blogs really nice, keep it up! I'll go ahead and bookmark your website to come back later on. Many thanks回复
  14. minecraft secret free downloadHi there, just became aware of your blog through Google, and found that it's truly informative. I am going to watch out for brussels. I'll be grateful if you continue this in future. Numerous people will be benefited from your writing. Cheers!回复
  15. Benefits of Coconut OilWhen someone writes an piece of writing he/she keeps the plan of a user in his/her mind that how a user can understand it. So that's why this paragraph is great. Thanks!回复
  16. Benefits of Coconut OilHello this is kinda of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I'm starting a blog soon but have no coding know-how so I wanted to get guidance from someone with experience. Any help would be greatly appreciated!回复
  17. Health Benefits of Coconut OilI am really enjoying the theme/design of your web site. Do you ever run into any web browser compatibility problems? A couple of my blog audience have complained about my website not working correctly in Explorer but looks great in Chrome. Do you have any suggestions to help fix this issue?回复
  18. Health Benefits of Coconut OilHello everybody, here every person is sharing these know-how, thus it's pleasant to read this webpage, and I used to visit this blog all the time.回复
  19. Health Benefits of Coconut OilHey there, I think your website might be having browser compatibility issues. When I look at your website in Ie, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, wonderful blog!回复
  20. Health Benefits of Coconut OilHello, i feel that i saw you visited my website thus i came to go back the prefer?.I'm trying to find issues to enhance my web site!I guess its adequate to use a few of your ideas!!回复
  21. http://twitter.com/descargar_hqDescargar facebook Hi there! Someone in my Myspace group shared this site with us so I came to take a look. I'm definitely loving the information. I'm bookmarking and will be tweeting this to my followers! Excellent blog and wonderful style and design. Descargar facebook回复
  22. descargar facebookIts like you read my thoughts! You seem to understand a lot about this, such as you wrote the guide in it or something. I think that you could do with a few p.c. to drive the message house a little bit, but other than that, that is fantastic blog. A great read. I will certainly be back.回复
  23. quest barsIf you are going for finest contents like I do, only pay a visit this website daily since it offers quality contents, thanks回复