博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中国第一软件开发_我第一次开发企业软件中学到的知识
阅读量:2524 次
发布时间:2019-05-11

本文共 6775 字,大约阅读时间需要 22 分钟。

中国第一软件开发

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 , 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 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

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

第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 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.

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

第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. 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 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 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.

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

最后的想法 (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 or subscribe to for more content.

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

You might also like:

您可能还喜欢:

  • (my learning path starting with Intro to Computer Science)

    (我的学习路径从计算机科学概论开始)

翻译自:

中国第一软件开发

转载地址:http://htrwd.baihongyu.com/

你可能感兴趣的文章
Java程序生成exe可执行文件
查看>>
什么是blob,mysql blob大小配置介绍
查看>>
模运算的规则
查看>>
CSS样式布局入门介绍,非常详尽
查看>>
20171027_Python学习第二周五次课
查看>>
LDAP验证用户名和密码
查看>>
【linux】Tomcat 安装
查看>>
JAVA中对同一问题分别使用内部类与匿名内部类实现
查看>>
处女男学Android(七)---Android 应用资源之StateListDrawable
查看>>
超级台阶
查看>>
每天专注三件事
查看>>
graph driver-device mapper-01driver初始化
查看>>
javabean总结
查看>>
android app崩溃日志收集以及上传
查看>>
3、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——用户登录
查看>>
js 事件
查看>>
简易selenium自动化测试框架(Python)
查看>>
IP地址
查看>>
C#弹出对话框
查看>>
love~LBJ,奥布莱恩神杯3
查看>>