中國第一軟件開發_我第一次開發企業軟件中學到的知識

中國第一軟件開發

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/

中國第一軟件開發

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

react-native-Cocoapods-Swift-Project

https://reactnative.cn/docs/integration-with-existing-apps/ 1、創建一個xcode工程,single View就行,項目語言選擇swift,oc的直接生成就行不用這么麻煩。 2、把跟目錄上創建 node的package.json,執行命令 npm init npm install react-nati…

用shell或者python寫出各種圖形

首先是shell等邊三角形[roothxy my_script]# sh ff.sh num:6************************* *********** [roothxy my_script]# cat ff.sh #!/bin/bash ######################################################################### # File Name: ff.sh # Author: huxianyong # mai…

cfdiv2/c/找規律

題目連接 £&#xff1a;若n<4&#xff0c;NO&#xff1b; £&#xff1a;若n4,特判&#xff0c;n5&#xff0c;特判。 £&#xff1a;若n>6,用2-4組成24&#xff0c;1和5和6組成零&#xff0c;即可。 #include <set> #include <map> #includ…

linux lcd顯示流程,求助 armlinux中實現lcd顯示

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓/* for (bufIdx0; bufIdx < NUM_DISPLAY_BUFS-1; bufIdx) {fbp[bufIdx1] fbp[bufIdx] displaySize;}*/for(bufIdx0;bufIdx{buf(unsigned int *)fbp;for (i0; i < displaySize / sizeof(unsigned int); i) {buf[i] UYVY_BL…

android引入開源庫_為好目錄引入開源:通過代碼幫助公益組織

android引入開源庫by Michael D. Johnson邁克爾約翰遜(Michael D.Johnson) 為好目錄引入開源&#xff1a;通過代碼幫助公益組織 (Introducing the Open Source for Good Directory: Help Nonprofits with Code) A few months ago, we asked 20,000 people why they were learn…

第二階段站立會議08

站立會議內容&#xff1a; 大家準備繼續將代碼進行融合&#xff0c;進行測試對一些功能進行優化。 1、會議照片&#xff1a; 2、任務展板&#xff1a; 3、燃盡圖&#xff1a; 轉載于:https://www.cnblogs.com/smcoder/p/7002539.html

ionic view 視圖

ionic view 方法 $ionicView.loaded視圖已經被加載了。這事件只發生一次當視圖被創建并添加到Dom中。當跳出頁面并且被緩存了的話&#xff0c;再次訪問這個頁面時這個時間將不會被激活。Loaded事件是個好方式讓你為這個視圖設置你的代碼&#xff1b; 然而&#xff0c;他并不是…

ios開發 mvp實踐_實踐中開發人員的工作流程-我們如何在30天內建立??MVP

ios開發 mvp實踐by Lna Faure萊娜福雷(LnaFaure) 實踐中開發人員的工作流程-我們如何在30天內建立??MVP (The developer’s workflow in practice — how we built our MVP in 30 days) As a web developer, I often get to start projects from scratch and make decisions…

linux智能電壓表設計與實現,畢業論文 智能數字電壓表設計.doc

畢業論文畢業論文智能數字電壓表設計智能數字電壓表設計- PAGE I -摘要隨著微電子技術和計算機技術的迅速發展&#xff0c;特別是單片機的出現和發展&#xff0c;使傳統的電子測量儀器在原理、功能、精度及自動化水平等方面發生了巨大的變化&#xff0c;形成一種新一代的測量儀…

git——學習筆記(三)分支管理

一、創建、合并分支 每次提交&#xff0c;git都往后走一格&#xff0c;串成一跳時間線&#xff0c;head指向的是分支&#xff0c;分支指向提交。master是主分支&#xff0c;dev是另一條分支&#xff0c;分支就像指針一樣&#xff0c;合并、刪除分支時&#xff0c;修改的都是指針…

Redis 它是什么?它用來做什么?它的優勢與短板如何?

閱讀目的&#xff1a; 對什么是內存型數據庫有概念性的認知。?Redis 是什么&#xff1f; 通常而言目前的數據庫分類有幾種&#xff0c;包括 SQL/NSQL,&#xff0c;關系數據庫&#xff0c;鍵值數據庫等等 等&#xff0c;分類的標準也不以&#xff0c;Redis本質上也是一種鍵值…

阿里巴巴是如何打通 CMDB,實現就近訪問的?

CMDB在企業中&#xff0c;一般用于存放與機器設備、應用、服務等相關的元數據。當企業的機器及應用達到一定規模后就需要這樣一個系統來存儲和管理它們的元數據。有一些廣泛使用的屬性&#xff0c;例如機器的IP、主機名、機房、應用、region等&#xff0c;這些數據一般會在機器…

我們分析了成千上萬的編程訪談。 這就是我們學到的東西。

by Aline Lerner通過艾琳勒納(Aline Lerner) 我們分析了成千上萬的編程訪談。 這就是我們學到的東西。 (We analyzed thousands of coding interviews. Here’s what we learned.) Note: I wrote most of the words in this post, but the legendary Dave Holtz did the heavy…

Java 9 新功能之 HTTP2 和 REPL

對Java 9的炒作將不再局限于模塊化&#xff08;modularity&#xff09;&#xff0c;Java 9正在搜羅大量額外的功能模塊&#xff0c;這些功能模塊正作為Java增強提案&#xff08;JEP&#xff09;提交&#xff0c;并在OpenJDK (Java SE的參考實現項目&#xff09;中實現。 在這篇…

c語言編譯程序首要工作,c語言試卷

c語言試卷一、選擇題(每小題1分&#xff0c;共40分)。(以下A、B、C、D四個選項中只有一個是正確的。)1&#xff0e;一個C語言程序是由()。A&#xff0e;一個主程序和若干子程序組成B&#xff0e;函數C&#xff0e;若干過程組成D&#xff0e;若干子程序組成2&#xff0e;C語言源…

Mac通過wifi連接 Android設備

公司用的全是mac開發&#xff0c;但是全是type-C接口&#xff0c;每次背電腦回家啊&#xff0c;還得帶個數據線轉換器…… 想著回來&#xff0c;直接通過Wi-Fi連接手機就好&#xff0c;發現完全忘了之前套路&#xff0c;現在趕緊記下一波&#xff0c;保證包教包會&#xff01; …

貝葉斯統計推斷_統計推斷對決:頻繁主義者與貝葉斯主義者

貝葉斯統計推斷by Kirill Dubovikov通過基里爾杜博維科夫(Kirill Dubovikov) 統計推斷對決&#xff1a;頻繁主義者與貝葉斯主義者 (Statistical Inference Showdown: The Frequentists VS The Bayesians) 推理 (Inference) Statistical Inference is a very important topic t…

iOS之由身份證號返回性別

該博文出自&#xff1a;http://www.cnblogs.com/yang-guang-girl/p/5683454.html - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.NSString *sex[self sexStrFromIdentityCard:"139876456767892345"];NSLog("--s…

c語言程序設計k.r,【答題】C語言程序設計問題與解釋實驗

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include#define N 13main(){int y,m,D,q,t0,i,day0,a0,Day,n,k,O[N]{0,31,29,31,30,31,30,31,31,30,31,30,31},p[N]{0,31,28,31,30,31,30,31,31,30,31,30,31};//y是年&#xff0c;m是月&#xff0c;D是日&#xff0c;q計算周幾&am…

運維命令

1 文件管理2 軟件管理3 系統管理4 服務管理5 網絡管理6 磁盤管理7 用戶管理8 腳本相關9 服務配置----------------------------------1 文件管理----------------------------------創建空白文件touch不提示刪除非空目錄rm -rf 目錄名(-r:遞歸刪除-f 強制)####################…