你的编程能力从什么时候开始突飞猛进?

编程能力的提高不能一蹴而就。需要在很多个日夜里对着显示屏思考工作。好似随风潜入夜,润物细无声。

下文是Java工程师经历的回顾。

规范

刚进入公司参加工作时,认真阅读规范文档。领导或前辈还会审查代码,SQL脚本,接口定义,并提供优化建议。一段时间后,养成了良好的习惯。最起码保证了代码的可读性。

 

体验优雅

工作一段时间后,发现业务根本做不完。每来一个新需求,就加一“坨”代码。一段时间后去修bug或改逻辑时,连自己都快看不懂代码的含义了,加班带上痛苦面具。

 

重新梳理需求,采用合适的设计模式去实现一组业务。比如:使用模板方法模式,抽象父类统一主逻辑,子类扩展子逻辑。使用策略模式,将策略的选择交给客户端,简化条件判断臃肿的服务端

一顿操作后,程序对扩展开放,实现新需求不需要对程序做多少改动。我初次写出了优雅的代码,对自己的表现很满意,体会到了编程的乐趣。

 

兼职运维

领导觉得我工作积极努力,于是安排了更多的事情,其中就包括项目部署。这时候就去快速学Linux,Docker,K8s。项目从测试环境到正式上线到日常监控,都已略懂一二。感觉自己快要独挡一面了。涨薪指日可待。

 

系统学习

然而事情并没那么简单。项目中出现了自己解决不了的问题,或触及了知识盲区,或一知半解。翻车是常有的事。

 

请教同事后总结出来是自身基础不牢固,没有形成体系。最终听同事的建议,买了相关的书籍,系统性的学习。让自己在日常项目中能百战不殆,也让好在涨薪时更有底气。

 

英语能力

通过系统学习后,对某块知识的掌握一比较全面了。但有时还需深入研究某个地方,发现国内资料匮乏或资料翻译不准确。这时不得不硬着头皮看官方文档,原版书籍,去国外网站找方案,获取第一手信息。刚开始吃力,借助翻译软件,连猜带蒙,还不能整段阅读。

 

一段时候后,发现居然能较为流畅地阅读专业资料,英语水平提高了不少,也可以在同事面前秀一把。

 

中间件

业务写的不少了,公司也换过几家。项目环境的变化,让我对常用的中间件都比较熟悉了,比如MQ,ES,Spring,Dubbo,Zookeeper,Redis等,也能较快的入手微服务项目。差不多达到了中级工程师的水平。这个阶段对于程序员来说是个坎。有一定能力,但容易高不成低不就。Java中级工程师需要掌握的技能推推荐看我的这篇回答。

一个中级java应该掌握哪些知识?9 赞同 · 1 评论回答

不造轮子

工作多年,头发越来越少。如何保住稀少的头发,这是个问题。前边已经积累了不少的信息检索能力。现在发挥用场了。对熟悉的技术场景,不会再去重复造轮子,而是优先考虑网上成熟的方案。这时差不多已经成了Github,Gitee,StackOverflow的常客了。开发效率有明显的提高。

 

重视性能

节约出来的时间或工作需要,开始关注服务器性能,SQL性能,程序复杂度。编程不只是为了完成任务,同时还兼顾了性能。没错,活是干不完的。

 

轮子制造者

到现在HR甚至不愿叫我一声高级或资深。常规业务开发已经不满足了我了。有了足够的编码经验与内功,领导开始安排开发公司的基础包,搭建高并发框架,重要模块的任务。不然公司开出来的薪资得亏本。

向上管理,向下兼容

在职场中学习多年。逐渐明白编程不仅是对着屏幕敲键盘。对领导安排的任务要及时汇报,打破信息壁垒。对前端,产品,尤其是合作的后端同事要时常沟通,以免方向跑偏。对下属犯的错与能力不足的地方要包容,重要是是看到其成长。总之编程能力不只是写代码的能力,还包含了工程师的专业素养。

冲出围城

编程的时候与人交流做多的场景就是需求评审会。程序员群体普遍缺少沟通与演讲能力,信奉技术至上的观点。对业务与产品,用户和市场考虑的少。人生总有第一次,当我第一次敢在需求评审会上发言,站在用户角度提出了优化产品建议后。现在看来真是冲出了围城,打开了一片天,原来开发工程师不只有代码。迎合市场,赚取流量,拥抱资本,技术只是达成这些目标的手段。

平衡

或是因为有了新家庭,或是因为体力下降,或是因为功成名就。以前拼命编程,通宵学习,忽视了很多东西。想法的转变意识到,我想要的是活在当下,珍惜现有,平衡好工作与生活,一步一个脚印地去提高。可谓是众里寻他千百度。这就是编程,这才是生活。