中国第一软件开发

In this article, I’ll share ten lessons I learned from my first project as a self-taught software developer. I was working for a consulting company at the time, and my official title was Software Engineer. The project I worked on was a web application for the public sector.

在本文中,我将分享作为一个自学成才的软件开发人员从我的第一个项目中学到的十个教训。 当时我在一家咨询公司工作,我的正式头衔是软件工程师。 我从事的项目是公共部门的Web应用程序。

第1课:尽快学习架构 (Lesson 1: learn the architecture as soon as possible)

In the beginning, the most challenging part was getting used to the amount of code that was written. There must have been at least a million lines of code by the time I started! This became so much easier after learning about the architecture that we were using. I remember being confused about this at the time.

刚开始时,最具挑战性的部分是习惯了所编写的代码量。 到我开始时,至少必须有一百万行代码! 在了解了我们所使用的体系结构之后,这变得非常容易。 我记得当时对此感到困惑。

It wasn’t until I did a crash course on layered architecture, offered by the company, that I really understood how to navigate through the code base. I got a very brief overview when I started, but I wish I had a better understanding sooner than I did.

直到我完成了公司提供的有关分层体系结构的速成课程后,我才真正了解如何在代码库中导航。 我刚开始时获得了非常简短的概述,但是我希望我能比以前更快地了解。

第2课:不要在架构上走捷径 (Lesson 2: don’t take shortcuts with the architecture)

Half way through my time on the project, we added a lot of new functionality. We were able to do some of this with newer technology. As I still didn’t really understand the value of the architecture we were using, I decided to take shortcuts. This ended up costing time and resources when we had to go back and fix it.

在我完成项目的过程中,我们添加了许多新功能。 我们能够使用较新的技术来做到这一点。 由于我仍然不太真正了解我们所使用的体系结构的价值,因此我决定采用捷径。 当我们不得不回去修复它时,这浪费了时间和资源。

第三课:不要低估业务环境的价值 (Lesson 3: do not underestimate the value of the business context)

An important part of the project is learning the business requirements. I completely underestimated the importance of this for the whole duration of the project. This was an expensive mistake. If you don’t understand the business context of your work, it is very easy to go down the wrong path.

该项目的重要部分是学习业务需求。 我完全低估了这个在整个项目过程中的重要性。 这是一个代价高昂的错误。 如果您不了解工作的业务背景,那么走错路很容易。

教训4:不要低估自学的价值 (Lesson 4: do not underestimate the value of being self-taught)

This project allowed me to gain a lot of confidence in my abilities as a developer. I strongly believe that, if you have the right tools, you can become an expert in anything.

这个项目使我对自己作为开发人员的能力充满了信心。 我坚信,如果您拥有正确的工具,则可以成为任何事物的专家。

While I’m not claiming to be an expert, my self-taught learning material was more than enough to prepare me for this project. Keep in mind — the list was much shorter back when I started! This revelation inspired me to write Was studying worth it?

虽然我并没有声称自己是专家,但我自学的学习材料足以让我为这个项目做准备。 请记住-当我开始时,列表要短得多! 这个启示启发了我写这篇文章值得学习吗?

第5课:编写快速的测试,并删除过时的测试 (Lesson 5: write tests that are fast, and delete those that become obsolete)

Our project consisted of many tests. We had an autonomous test suite that ran unit tests, persistence tests, and integration tests. The unit tests took a few minutes to run, but all of them together took a whole hour! I realized that quick tests are best, and there’s no point in hanging on to old tests that are obsolete.

我们的项目包括许多测试。 我们有一个自治的测试套件,可以运行单元测试,持久性测试和集成测试。 单元测试需要花费几分钟的时间,但是所有这些一起花费了一个小时! 我意识到快速测试是最好的,并且没有必要继续使用过时的旧测试。

第六课:提防少做的后果 (Lesson 6: be wary of the consequences of committing less often)

We were using Subversion for our version control. Unfortunately, the code we were committing was automatically checked in to the repository. We very rarely worked with branches, as the opportunity cost seemed to be too high. This led to committing code less often. I still tried to commit frequently, but I would sometimes break the build — I didn’t think I needed to invest the hour running the tests locally.

我们使用Subversion进行版本控制。 不幸的是,我们提交的代码已自动签入存储库。 我们很少与分支机构合作,因为机会成本似乎太高了。 这导致提交代码的频率降低。 我仍然尝试频繁提交,但有时会中断构建-我认为我不需要花费时间在本地运行测试。

第7课:编写可靠的测试-不要忘记维护它们 (Lessons 7: write reliable tests — and don’t forget to maintain them)

On top of that, some tests were not always green. They would work sometimes, but they would fail just as often. This would cause the build to be red. As a result, I didn’t really appreciate the value of a red build. Sometimes the build would be red for days because someone didn’t notice that another test had been broken.

最重要的是,某些测试并不总是绿色的。 它们有时会起作用,但它们也会经常失败。 这将导致构建为红色。 结果,我并不真正欣赏红色版本的价值。 有时,由于有人没有注意到另一个测试已被破坏,所以构建会持续几天的时间是红色的。

第8课:尽快检查代码 (Lesson 8: review the code as soon as possible)

Typically, we would have one developer writing the code and another developer reviewing the code. I had opportunities to do both. Often, I would get a feature to develop. Before finishing it, I would be given something to review. It might take days before I got around to reviewing.

通常,我们会让一名开发人员编写代码,而让另一名开发人员查看代码。 我有机会做这两个。 通常,我会开发一个功能。 在完成之前,我将得到一些回顾。 我可能需要几天才能进行审核。

This often caused headaches, because the code I was reviewing was not the same as the code that had been developed. Pair programming would have avoided this problem, but that was not the way we worked.

这经常引起头痛,因为我正在查看的代码与开发的代码不同。 结对编程可以避免这个问题,但是那不是我们的工作方式。

第9课:重构应伴随测试 (Lesson 9: refactoring should be accompanied by tests)

Tests were only introduced five years into the project’s lifespan. Before that, all the testing was done manually. This meant that a lot of the code base didn’t have any test coverage, which is dangerous.

测试仅在项目寿命的五年内进行。 在此之前,所有测试都是手动完成的。 这意味着很多代码库没有任何测试范围,这很危险。

Personally, I really like the idea of applying the boy scout rule to code. I naturally tended to refactor a lot. But as we didn’t have test coverage for everything that I refactored, I would sometimes introduce defects into our software.

就个人而言,我真的很喜欢将童子军规则应用于代码的想法。 我自然倾向于重构很多。 但是由于我们没有对重构的所有内容进行测试,因此有时会在软件中引入缺陷。

第10课:开发软件是业务价值和卓越软件之间的折衷方案 (Lesson 10: developing software is a compromise between business value and software excellence)

We used a V-model for the software development process. This included deadlines for developing, manually testing, and releasing the software. We didn’t have unlimited time to develop or review the code we were writing. In some cases, I would spend too much time perfecting the code, which wouldn’t always deliver business value.

我们在软件开发过程中使用了V模型 。 这包括开发,手动测试和发布软件的截止日期。 我们没有无限的时间来开发或审查我们正在编写的代码。 在某些情况下,我会花太多时间来完善代码,而这并不总是能带来业务价值。

最后的想法 (Final thoughts)

This project was a very valuable learning experience for me. I hope you were also able to learn something from it. Let me know in the comments below if you had any similar or contrasting experiences!

这个项目对我来说是非常宝贵的学习经验。 希望您也能从中学到一些东西。 如果您有任何相似或对比的经历,请在下面的评论中告诉我!



Before you go… Thanks for reading the article! I write about my professional and educational experiences as a self-taught software developer, so check out my blog or subscribe to my newsletter for more content.

开始之前……感谢您阅读本文! 我写的是自学成才的软件开发人员的专业和教育经历,因此请查看我的博客或订阅新闻通讯以获取更多内容。

You might also like:

您可能还喜欢:

  • Learning material — software development (my learning path starting with Intro to Computer Science)

    学习资料-软件开发 (我的学习路径从计算机科学概论开始)

  • Testing Apollo Server with Typescript

    使用Typescript测试Apollo服务器

  • Was studying worth it?

    学习值得吗?

翻译自: https://www.freecodecamp.org/news/what-i-learned-by-developing-enterprise-software-for-the-first-time-d630481ce6eb/

中国第一软件开发

中国第一软件开发_我第一次开发企业软件中学到的知识相关推荐

  1. 安卓手机软件开发_同一款手机软件购买会员 苹果竟比安卓普遍贵30%

    最近,有细心的网友发现,在同样一款手机软件内,购买一样的会员,安卓手机和苹果手机所支付的费用却不一样.苹果手机买APP会员普遍比安卓手机贵30%,最为关键的是,有法律界人士表示这是正常. 同一软件会员 ...

  2. 恩施软件开发人员每月多少钱_恩施软件开发学习,恩施软件开发学习哪家好,恩施软件开发学习一般能拿多少工资...

    恩施软件开发学习,恩施软件开发学习哪家好,恩施软件开发学习一般能拿多少工资 首页 > 软件 > 恩施软件开发学习 作者:镀金池   发布时间:2017-11-22 18:54 因为cent ...

  3. 本文写给广大正在做软件开发的、曾经做过软件开发的以及即将做软件开发的女同胞们。同时也希望男同胞们能够给女同胞多一些理解和包容,多一些关心和帮助,让女同胞能在软件开发的路上走的更远一点,走的更好一

    本文写给广大正在做软件开发的.曾经做过软件开发的以及即将做软件开发的女同胞们.同时也希望男同胞们能够给女同胞多一些理解和包容,多一些关心和帮助,让女同胞能在软件开发的路上走的更远一点,走的更好一些.  ...

  4. 软件开发六大发展趋势,真正“软件人”都在关注,值得一看

    随着摩尔定律的终结,未来5至10年将迎来计算机硬件与软件架构的黄金时代,如何成为一个顺应时代发展的真正"软件人" ,跳出"基础代码".告别996,这是当下众多码 ...

  5. 为什么linux的新得立软件下载,linux,debian_蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理?,linux,debian - phpStudy...

    蝶变(Debian)_Xfce_新立得软件管理_安装不上软件了,怎么处理? (synaptic:9573): GLib-CRITICAL **: g_child_watch_add_full: ass ...

  6. 华为大连软件开发云上线,打造软件云生态,加速软件产业升级

    2016年12月22日,2016华为大连软件开发云上线大会在大连市成功举办,吸引了近千余名政府和软件企业高层.教育行业精英.开发人员.媒体.意见领袖等出席.在本次大会上,华为发布了集华为研发实践.前沿 ...

  7. 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...

    残疾人软件开发 by Scott Vinkle 由Scott Vinkle 更高级别的可访问性:我使freeCodeCamp指南对残疾人更有用的5种方式 (Next Level Accessibili ...

  8. 业余软件开发_我需要在业余时间编码才能成为一名优秀的开发人员

    业余软件开发 "You need to code in your spare time to be a good developer" - I've been hearing th ...

  9. 经验教训 软件开发_我作为开发人员10多年的经验教训

    经验教训 软件开发 12个月. (12 months.) That's the time we wasted while rewriting our software from scratch. 那是 ...

最新文章

  1. 在Markdown中用mermaid画流程图和ER图
  2. 【大会】海量高清视频服务端架构设计的变与不变
  3. 在使用angularjs过程,ng-repeat中track by的作用
  4. 鸟瞰 MySQL,唬住面试官!
  5. 斗鱼Q3财报:移动端季度平均MAU再创新高至6190万,付费用户720万
  6. 论文阅读:BPFINet: Boundary-aware progressive feature integration network for salient object detection
  7. .NET Windows服务开发流程
  8. postman导出请求url_postman接口测试之复制多个接口或collections到某个子文件夹或collections下...
  9. 超级计算机燕 排名,特斯拉超级计算机算力全球第五,展现无人驾驶领域野心...
  10. boost线程指南手册
  11. 凤凰项目:一个IT运维的传奇故事
  12. 松下服务器报警13参数修改,新版松下伺服发生故障报警代码一览及对策.doc
  13. Nova 组件如何协同工作 - 每天5分钟玩转 OpenStack(24)
  14. php ping 域名,怎么利用PHP去ping一个地址_PHP
  15. win10更新失败 无法安装 Windows,因为这台电脑的磁盘布局不受UEFI固件支持
  16. 【JavaWeb学习】HTML的基础标签
  17. DirectX11 模板测试
  18. 2022非常火过postman的一款技术人必备的接口测试神器:Apifox
  19. DIV 布局之上下布局上不动下自动适应
  20. 2.14Python标准库使用案例:使用turtle绘制奥林匹克五环

热门文章

  1. 「一本通 6.4 例 4」曹冲养猪(CRT)
  2. JQuery发起ajax请求,并在页面动态的添加元素
  3. 期权价格的上限和下限
  4. 用solidity语言开发代币智能合约
  5. 3.js模式-策略模式
  6. yml的mybatis的sql查看
  7. [转载]使用.net 2003中的ngen.exe编译.net程序
  8. yum配置中driver-class-name: com.mysql.jdbc.Driver报错
  9. [Egret][文档]遮罩
  10. 20155229 实验一《Java开发环境的熟悉》实验报告