写点什么

如何成为一名优秀的软件工程师

  • 2014-09-21
  • 本文字数:1353 字

    阅读完需:约 4 分钟

成为一名优秀的软件工程师是每一个软件工程师的目标,但是在实际中,优秀的软件工程师和一般的软件工程师的表现肯定是参差不齐的,这是什么原因造成的呢?这是一个我们必须反思的问题,同时还是一个关乎团队建设和个人成长的重要问题。Katsuya Noguchi 总结了优秀的软件工程师和一般的软件工程师的不同表现,为如何成长为优秀的软件工程师提供了启发和指导。

现对这些不同点进行了整理更新,具体内容如下:

1、编写高质量的代码

良好的编程习惯不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。优秀的软件工程师都具有良好的编程习惯,他们编写尽量少的代码即可满足需求,还能够引入恰当的抽象层次,重构代码,将业务逻辑和其他程序逻辑分离。

一般的软件工程师编写不出高质量的代码,他们只关心自己的代码是否能够达到预期的输出结果,只要有输出结果,就认为自己的任务完成了,根本不在乎代码的可维护性和可读性。

2、快速、高质量的产出

优秀的软件工程师能够在代码质量和开发所耗时间上做出很好的权衡,能够严格控制技术风险,不断完善自己,能够在有限的时间内写出高质量的代码。

一般的工程师写出的代码质量很低,还声称是最优的设计,时间限制常常是他们怠工的借口。他们的代码会给企业带来很大的负担,并给团队成员留下一大堆问题。

3、解决问题能力

优秀的软件工程师不会盲目地编写项目代码,他们会确定每个问题的目标,找出问题的根本原因,并找到解决问题的合理方案。优秀的软件工程师会将大问题分拆为小问题,针对小问题进行理解、构思、计划、维护和重用。

一般的软件工程师只是匆忙编码,解决所分配的问题,不会进一步思考正在解决的问题,从不考虑长期影响。

4、正确的决定

优秀的软件工程师深知没有完美的设计、服务和工具,他们还深刻理解可选方案以及实际状况的约束并能做出适当的权衡。

一般的软件工程师只是盲目地使用当前比较流行的服务、设计和工具,而不做更深一步的理解和研究。

5、团队精神

团队精神和协作能力是程序员应该具备的最基本素质,优秀的软件工程师所写的代码不仅能够让机器高效地执行,更重要的是能够方便其他工程师阅读、改进和使用。他们写测试用例,确保所写代码的正确性,还能够方便其他人对程序进行改进。他们充分利用审查和使用代码的机会,学习其他部分的代码、分享代码风格、控制整个代码的质量。他们认识到并且坚信,代码审查的过程是相互学习和提高整个工程团队产出质量的最佳时机之一。他们的评论能够帮助团队成员成长,他们考虑整体设计、边缘情况、格式改进及提高代码整体质量的其他优化措施。

一般的软件工程师根本就不关心自己代码的可维护性和可读性,他们很少写测试用例,除非写测试用例是指派的任务。

6、洞察力

优秀的软件工程师具有长远的眼光,使他们能够承担起各种困难的软件项目,他们经历过无数的非预期任务,如被喊去解决线上服务器的问题,处理积累了很多技术债的代码以及面对较为紧张的期限。

一般的软件工程师对发生的问题从不积极响应,还责怪别人处理不当;当事情进展不顺时,他们很容易失去信心或推卸责任,不主动、不认真地解决问题。


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-09-21 08:325811
用户头像

发布了 92 篇内容, 共 46.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

mysql字符匹配批量修改

毛佳伟🐳

MySQL

Week2:作业二

车小勺的男神

微信支付的软件架构究竟有多牛逼...

程序员生活志

微信 架构

计算机操作系统基础(三)---进程管理之五状态模型

书旅

php laravel 多线程 操作系统 进程

游戏夜读 | 这是一款情绪游戏

game1night

ARTS 第四周 6.15-6.21

我笔盒呢

网络性能篇 (13讲)

程序员老王

计算机操作系统基础(一)---操作系统概览

书旅

php laravel 多线程 操作系统 进程

疫情常态下区块链构建分布式数字身份

CECBC

疫情 区块链技术 分布式数字身份

JDBC 批量插入:MyBatis、PostgreSQL

羊八井

postgresql mybatis JDBC

如何搭建一个Hadoop集群

Rayjun

大数据 hadoop

ARTS 第五周 6.21-6.28

我笔盒呢

MySQL InnoDB存储引擎 - 事务

Axe

学写PEP,参与Python语言的设计

早睡蟒

Python Python PEP PEP

在以后的高校招生中,应用区块链技术,可以防、治冒名顶替吗?

CECBC

区块链技术 高考 信息防篡改

来了!8M/S+速度,Pdown复活!

程序员生活志

架构师训练营:第四周第一节,互联网架构系统架构的演化

zcj

极客大学架构师训练营

serverless之一:入门

毛佳伟🐳

Serverless

区块链≠分布式账本,别再傻傻分不清

CECBC

区块链技术 高考 信息防篡改

计算机操作系统基础(二)---进程管理之进程实体

书旅

php laravel 多线程 操作系统 进程

Week2:作业一

车小勺的男神

如何让你的大脑更健康

兆熊

架构师训练营第四周总结

烟雨濛濛

神器工具:新一代多系统启动 U 盘装机解决方案

JackTian

工具软件 U盘启动盘 安装操作系统 ventoy ISO 镜像文件

ARTS打卡-04

Geek_yansheng25

ARTS Week5

时之虫

ARTS 打卡计划

计算机操作系统基础(四)---进程管理之进程同步

书旅

php laravel 多线程 操作系统 进程

架构师训练营 - 第 3 周命题作业

红了哟

架构师训练营 - 第 3 周学习总结

红了哟

Github仓库如何选择开源许可证

早睡蟒

GitHub 开源 GitHub license

[深入理解Redis]读取RDB文件

老胡爱分享

redis 源码阅读

如何成为一名优秀的软件工程师_语言 & 开发_李士窑_InfoQ精选文章