大家在寻找的高级程序员到底是什么样子的?
工作至少有6、7年以上,能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架。
有 N 年以上编程经验(大部分都说5年以上)
有出版过技术图书
对某领域内对常用框架原理有了解,并且实际使用超过2年
可以随时随地快速写出常见的一些算法
至少封装过一个被全局使用的开发框架
写出来的代码,阅读起来很好理解
能带领其他人员成功完成项目
专业能力
连接能力
领导能力
很难提出正确的问题,大多会直接问别人这个功能应该怎么做。如果你清楚地向他解释,他就会完全按你说的去做,甚至你写的示例代码都会copy过去。因为在他们的世界里,只有编译成功和编译失败,任务完成和任务未完成。
经常犯错误,所以会预留过多“弹性时间”,以便有时间在到期日之前重做。所以总会抱怨“没时间”。
对与自己有工作交集的人员的职能没有认识。比如,对测试人员总是充满敌意的,因为他们发现了错误,“阻碍”了自己完成工作。
还没注意养成一些好习惯,比如习惯性的提炼重复代码、编写风格一致的代码、自测等等。
针对一个问题,可以提出多个方案,但是无法做出准确的决策。一旦更权威的人给出了他的选择,中级程序员就会不假思索的按照建议执行。
可以看出代码中的一些设计模式,但是自己写代码的时候除了单例和工厂,其它的几乎想不到。
在讨论一些时髦的框架和技术的时候总能聊上几句,但是追问这个框架或者技术有什么缺点,基本说不上来。甚至,草率的在项目中运用上这些时髦的框架和技术,最终导致线上问题频发,不得不让高级程序员来收拾残局。
能够对自己完成任务所需的时间有准确的评估,但是评估他人的时间不会因人而异,也会以自己作为标准来评估。
对与自己有工作交集的人员的职能有了一定的认识。比如,会主动寻求测试的配合,帮助自己交付更高质量的项目。
与初级和中级程序员不同,他们抛出问题不是为了正确的做事,而是做正确的事。他们会询问为什么要这样做以及你想要实现什么。当你告诉他们目标是什么后,他们或许会通过暗示这种方式是错误的而另一种更好来做出一些修正;当然,更重要的是还会提供论据说服你。
因为提前明确了做事的目标,所以在动手做一件事的过程中,他会在关键细节思考有没有更好的方法,甚至是那些不在之前的讨论范围的新尝试。
他可以轻松地承认他不知道什么,并且向你请教。同时也可以轻松地向他人讲清楚他所知道的事情。
他们理解合作的人员的职能的作用,不但知道什么时候向谁寻求帮助,还知道自己如何更好的帮助他们。
困难的事交给他们很放心,因为他们擅长的不是某种技术,而是解决问题的能力。他们总能解决那些之前从未遇到过的新问题,哪怕它们很困难。
首先就是前面提到的第一点,多关注业务。不了解业务,你啥都设计不出来。或者把马设计成了驴……
如果某个功能的开发/修改,以“天”为工时单位,一定要先画图。具体画什么图,可以参考我之前写的文章:。
搞明白每个设计模式的特点和适用场景,注意,不需要把代码怎么写背下来。只要你每次写代码之前扫一眼设计模式的列表,看看有没有适用的。如果有的话,再去“依样画葫芦”按照设计模式去实现,经过时间的积累,慢慢地,你真正掌握的设计模式就越来越多了。这有助于锻炼你的设计能力。
Any fool can write code that a computer can understand. Good programmers write code that humans can understand
Martin Fowler
原创不易,如果你觉得这篇文章还不错,就「在看」或者「分享」一下吧。鼓励我的创作 :)
大家在寻找的高级程序员到底是什么样子的?相关推荐
- 高级程序员到底长什么样子?
我们的中国文化,对"面子"看得特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外. 但是你真要问每个人,你认为的高级 XXX 是什么样子的,估计每个人都有 ...
- 高级程序员到底高级在哪里?
身为一名技术人,你是否遇到过这些情况? 工作效率低:别人1小时就能修复的bug,你需要3小时 没有存在感:技术趋势看不透,和同事聊天完全插不上话 技术提升慢:苦熬996,但升职加薪仍然遥遥无期 面试总 ...
- 从高级程序员到 CTO 的 4 次能力跃迁!
见字如面,我是军哥! 常常会被问到这样的问题,CTO.架构师.技术经理和高级程序员到底有什么区别呢?多大规模的技术团队应该配备什么级别的技术负责人呢?被问多了就想梳理思路写下来,另外文末有今天晚上直播 ...
- 如何从初级程序员变成高级程序员?赶紧看一看
高级程序员是一名犯过其领域内所有可能犯到的错误的专家. 如果按照工作经验对软件开发人员进行分类,可能是这样的: 初级:2-3 年工作经验 高级:10 年以上工作经验 中级:介于初级和高级之间 这种按工 ...
- 真正的程序员到底应该是什么样子的?
第一章 (推荐看完整篇文章,再回过头看一遍第一章) 我非常幸运出生在一个电脑和电子游戏还没有普遍的时代.所以我可以和我的小伙伴们一起玩耍,同时发明属于我们的游戏. 我们十分会玩:用树枝做成'��'.我 ...
- 优秀的程序员都在哪里 如何寻找优秀的程序员?
优秀的程序员都在哪里 这是你第一次公开招募雇员.如同大多数人一样,你会发布广告,可能也会浏览一些大型的网上论坛,然后你就收到了一吨的简历. 一份份看下去,你会想:"嗯嗯嗯,这人应该可以.&q ...
- 寻找优秀的程序员之实战指南-2
寻找优秀的程序员之实战指南 --选自<软件随想录:程序员部落酋长Joel谈软件> [好消息]本书今天(12.10)互动有货,感兴趣的朋友可以 逛逛去 [续]http://blog.csdn ...
- 寻找优秀的程序员之实战指南-1
寻找优秀的程序员之实战指南 --选自<软件随想录:程序员部落酋长Joel谈软件> [好消息]本书今天(12.10)互动有货,感兴趣的朋友可以 逛逛去 2006 年 9 月 7 日 ,星期四 ...
- 《C++编程惯用法——高级程序员常用方法和技巧》——2.7 Const
本节书摘来自异步社区出版社<C++编程惯用法--高级程序员常用方法和技巧>一书中的第2章,第2.7节,作者: [美]Robert B. Murray ,更多章节内容可以访问云栖社区&quo ...
最新文章
- Win2008学习(二),群集的仲裁配置
- 如何在centos7下tomcat中安装https
- java开发和测试开发,附小技巧
- 关闭生成调试信息和嵌入清单
- 转载:flash 跨域 crossdomain.xml
- linux如何把mysql表名换成小写_让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)...
- Fast R-CNN: 我变快了,也变强了!
- 在linux中安装.sh 文件
- SAP 电商云 Spartacus UI Quick order 产品搜索结果页面的显示逻辑
- java向应用程序传递参数_Java应用程序中的消息传递主体
- 嵌入式开发-lesson9-顺序结构程序设计
- 20180826(04)-Java序列化
- Hive分区过多有何坏处以及分区时的注意事项
- 设计模式笔记二十二:空对象模式
- js中递归调用返回值为undefined问题
- Sql Server 存储过程分页大全(2005,2000)
- Linux Vi 的使用
- java 优先级文档_java 优先级队列.pdf
- 正十二面体二面角的一种求法
- 上传文件计算机传输的,电脑文件怎么传输到iPad