软件开发日常思考

研发人员的能力等级

通常的软件公司在招人时会对研发人员划分等级,如初级研发工程师,中级研发工程师,高级研发工程师,资深研发工程师,专家,甚至科学家。职位越高,对应的薪资也就越高。每个公司也有自己的一套评价标准,比如学历要求,工作经验要求。公司比较看重候选人掌握的技能,它必须与对应职位所需的技能相匹配。作为等级制度中的一员,在实践中会不自觉的和比自己等级高的同事做比较。比较的过程中发现了一些差距,在这里简单谈谈几点。

工作效率

高级研发:熟练使用IDE快捷键和配置;熟练使用工具类;熟练操作Linux;对于常见的问题,能够快速定位到原因,并给出解决方案。
初级研发:IDE快捷键和配置,百度;工具类使用,百度;Linux操作,百度;解决问题,百度。工作一小时,百度60分钟。

困难问题攻克

高级研发:结合网络,给出最优的解决方案。
初级研发:百度,未果。解决不了。删库跑路。

知识面

高级研发:具备独立架设系统的能力。可以独立研发并交付整个项目。通常具备前端、后端、数据库、中间件、运维、设计、编写文档、画流程图、制定研发计划、保证项目质量、Windows脚本、Linux脚本,行业等知识。
初级研发:我只懂后端,不精通;我只懂前端,不精通。无法独立完成一个项目。

编码质量

高级研发:逻辑清晰,便于维护,性能高,bug少。使用最高效的算法实现最复杂的需求。
初级研发:网上摘抄,阅读困难,性能低,bug多。可能自己都不清楚为什么它能运行。

编写软件的原则

在我短短的编码生涯中,我一直是以实现需求为目标。比如编写一个网站,只要这个网站具备了所有客户需要的功能,那就算结束。后来发现,只考虑可用性还远远不够。一个合规的产品,还要考虑安全性、可维护性、代码简洁和性能等因素。

技能提升的途径

比如说我是一个Java开发工程师,如何更精进呢?

  1. 需要经常阅读java api,熟悉常用的jar包后端框架。这些东西可以说是现成的,只要有时间便可以积累掌握。
  2. 积累自己的代码库,对于常用的操作可以记下来,后边开发时可以提高效率。
  3. 多向厉害的人学习。对于生活圈外的人,关注他们的博客;平常可以接触到的人,则尽量多和他们交流。
  4. 学习权威资料。如果我们关注某方面知识,最好从官方文档或其它权威的资料入手,可以少走弯路。

研发误区

  1. 软件是为了解决问题,不是为了炫耀技术。不要太追求新技术,不要为了维护自己的编码风格延误进度。
  2. 不要自己想需求。要严格按照客户要求去做,如果觉得做法不合适,需要在前期讲明,一旦确定下来,自己不能随意更改。软件的主要目的是为客户提供服务。

什么是程序员

我经常以Java研发自居,因为我主要使用Java语言来开发软件。但我知道这不是我真正的角色,我真正的角色是一个程序员。程序员应该了解语言的本质,它们都是一组规则,用来操作数据,包括获取数据,处理数据,存储数据和展示数据。程序员不应该把自己局限于某一语言,只要有需求,就用最合适的语言去实现它。

传统的软件公司和互联网公司

在传统的软件公司工作,通常需要负责项目的整个生命周期,如需求确认,研发,测试,部署,运维,文档编写等等。其中研发,又分为前端,后端,数据库,中间件等。对提高研发的知识面很有帮助。

互联网公司通常有明确的分工,比如,产品经理,美工,前端,后端,DBA,运维,测试等。每个岗位的人只需要做好自己的任务并和上下层做好对接即可。对提高某一领域的知识深度很有帮助。

总结

进步需要动力,而动力来源于认识到自己的不足。目标搞清楚,干起来就快了。
上面的内容零零碎碎没有逻辑,算是一篇碎碎念。基于此,想到一首诗,在这里作为结束语分享给大家:

横看成岭侧成峰,远近高低各不同。
不识庐山真面目,只缘身在此山中。

你可能感兴趣的:(思维的乐趣,编程的智慧)