写代码是一回事,学习成为一名软件工程师是另一回事
软件适用于今天。学习成为一名伟大的软件工程师是永远的
Pexels上的Pixabay上的照片
学校是一回事。教育是另一回事——AustinKleon——像艺术家一样偷东西:没人告诉你关于创意的10件事
编写代码是一回事,学习成为一名软件工程师是另一回事。
只有通过考试并定期驾驶,您才能真正学会驾驶汽车。成为一名熟练的驾驶员不仅仅是能够在不撞车的情况下驾驶汽车,了解理论。它能够驾驭你在路上遇到的所有情况和场景,并与路上所有疯狂的疯子打交道。
作为一名软件开发人员和创建软件就像驾驶汽车,但要复杂一千倍,疯子数量是两倍。
软件是开发人员创造的,技能、经验和知识是开发人员获得的。软件开发技能是您构建高质量软件和交付软件项目的方式。
作为开发人员做你的工作和创建软件是一回事,但要发展你的职业生涯,你需要学习软件开发的基础知识。
开发人员的教育不仅仅是编写代码。您编写的代码,技术技能并不是职业的坚实基础,因为在5/10年后您将需要不同的技术技能。
您创建项目所需的软件,因为这是客户和您工作的公司所支付的费用。开发人员的价值基于他们的技能、知识和经验。开发人员需要确保他们正在学习、改进并成为更好的软件开发人员。
理想情况下,您将同时进行这两项工作,但这并不总是可能的,需要确保这发生的开发人员。
当您作为开发人员感到太自在时,是时候考虑转向新事物了。
掌握工艺
软件开发是你永远无法掌握的技能
软件开发人员始终是软件开发的学生,每当您认为自己知道自己在做什么时,它就会打您的脸。优秀的开发人员是谦虚的,因为软件开发会用令人尴尬的错误来粉碎过度自信。
你无法避免错误、问题和灾难。因此,您需要谦虚地承认错误,并需要一个团队来帮助您找到并修复它们。
当您作为开发人员开始时,您将专注于创建代码以满足需求。我曾经认为成为一名开发人员只是编写代码。
软件开发还有许多其他方面,从设计、架构、单元测试到DevOps和ALM。收集需求并澄清假设。
有许多最佳实践,例如SOLID原则、DRY(不要重复自己)、KISS等。
最佳实践和基本技能具有长期利益。这使初级开发人员难以理解它们,因为没有初始好处。
命名良好的代码,旨在易于测试,不是初稿代码。它不仅仅是工作。它易于阅读、理解和更改。
我在有行方法的遗留代码上工作。该方法的作用类似于状态机并控制案例的状态。改变是一场噩梦,因为如果你改变一行,它可能会破坏它下面的任何代码。
一项更改可能会影响行代码,而且几乎不可能进行测试。一个简单的代码更改可能需要一周的时间来完成和测试。
另一段代码的命名很糟糕,并使用了第13个月的变量。看代码,看不懂第13个月是什么,没意义。
我必须计算出第13个月是一个变量,用于存储在汽车的第1年和第2年之间传递的用于维修目的的值。
经验很有价值,因为通过使用糟糕的代码并看到它导致的问题,它会激励你在未来不再犯这些错误。
坚实的基础
每个软件项目都针对独特的需求创建独特的软件。它建立在软件工程基础之上。质量开发是通过良好的流程、最佳实践、DevOps、代码审查来完成的。
您需要确保您的最佳实践没有过时,并愿意更新它们。将会有新的工具、软件和技术需要您更新最佳实践。
首席开发人员需要了解软件开发过程的各个方面应该如何运行。您需要谦虚并乐于更新您的开发流程。
基本的软件工程技能
技术变化,但软件开发保持不变
技术随着新的语言、服务、工具和最佳实践而发展。
无论技术如何,开发人员都需要掌握一些基本的软件工程技能,这些技能都会很有用。
命名(评级不足但代码简单易读的关键)
设计代码(简单设计,不复杂)
设计模式
单元测试
开发运维
软技能
文档
开发最佳实践
敏捷开发
错误修复
这些核心技能是软件开发的基础。如果你不知道伟大的代码是什么样子并且不理解它为什么伟大,那么你就不能写出伟大的代码。另一方面是你需要知道糟糕的代码是什么样子的,这样你才能负担得起,并理解为什么这些代码是糟糕的。
如果初级开发人员没有得到指导或没有意识到代码会产生未来的问题,他们不会停止编写低质量的代码。糟糕的代码现在可以工作,但在未来会产生问题。糟糕的代码就像错误。如果您不承认自己犯了错误,就无法避免错误。
牛仔开发人员不了解软件开发的最佳实践或好处。如果你不了解一种方法的好处,你就不会使用它。
不是经验并不都是有价值的
使用技能和知识从事软件项目就像在跑步机上跑步一样。你付出了很多努力,却无处可去。
获得技能经验的价值已经有限,因为它会为你的简历中的技能增加更多时间。
宝贵的经验是您学习新知识和技能的新情况,您可以将其用于未来的项目。
保持好奇心——尽可能多地学习
优秀的开发人员学会理解不仅仅是创建软件。理解有助于您在未来创建软件、避免问题并更好地了解软件开发的工作原理。
作为软件开发人员,您可以对自己和您的教育做出最好的投资。在软件开发之外学习将使您更好地进行软件开发,因为很多软件开发都是与人一起解决问题。
“每天都试着比你醒来时更聪明一点。忠实而良好地履行你的职责。系统地,您会取得领先,但不一定是快速突进。尽管如此,你还是通过为快速冲刺做准备来建立纪律。一天一天,一次一英寸地把它挤出来。归根结底——如果你活得够久——大多数人都会得到他们应得的。”查理芒格
作为一名软件开发人员,您希望每天少吸点东西,减少错误并用坏代码换好代码。作为一名软件开发人员,每天都在进步,随着你的技能、知识和经验的增长,生活会变得更轻松。
软技能
软件开发是一项团队运动,因此您与其他人沟通和工作的效率越高越好。
软件开发中的所有大问题都是人造成的,人解决的。
有效的沟通、说服和协作是值得投资的核心技能。
我曾经展示过一个我是ScrumMaster的团队的演示和进度。我的Scrum团队工作出色,进展顺利,但客户对团队或我并不确定。
我从一位经理那里得到了一些反馈,他解释说我以错误和负面信息为主导,并将积极的观点留到最后。这就像用扩音器传坏消息,低声说好消息。这给人一种我和团队做得不好的感觉。
感知就是现实。
从那时起,我在演示、沟通方面做了很多工作。你没有太多时间交流;你需要让它计数。
所有的项目、促销和其他重要的决定都是由人做出的。你需要建立关系并影响他们。
结论
睡觉时比醒来时更想了解软件开发。
改进不是取得巨大的飞跃,而是持续改进和不断学习。
其他开发人员是知识的重要来源,使学习更容易和愉快。与您的开发人员同行学习,复制他们的成功并避免他们的错误。