怎麼做才能成為一名合格的軟體工程師?

在過去六年多的時間裡,我在初創公司中任職過不同崗位,也在事業單位工作過。在這些不同角色中我認識到了一個觀點。我慢慢意識到一些原以為無關緊要的事情的重要性。這篇文章是根據我的經驗,針對剛入行的年輕工程師的一些建議。

你的第一印象

一份新工作要有一個好的開端。不要遲到, 不要當混球, 別一上來就說我們需要拋棄公司正在用的框架。

抵制住那些試圖證明自己的誘惑, 會有更好的, 更謙遜的方式。請繼續讀下去。

做出好的估算

業務和技術之間溝通的一半都是確認需求和工作量估算。

工作量估算歸結為兩點: 你認為什麼時候能完成,以及你對那個日期有多自信。

這是一個你需要從經驗中磨練的技能,但我有兩個秘訣:

  1. 工作量越大,估算就越難。我總是把一個大的任務分成更小的部分,每一個有1-3天的工作量。
  2. 如果你說要花一個星期,他們會問: 「好的,你能在3天內完成嗎?」要時刻準備為你的估算辯護。

態度很重要

負責一個服務。負責一個領域。理解服務背後的業務原因。

發現問題並開始改進,一點一點地改進。別幻想在最後時刻扭轉乾坤。

你可能需要一段時間才能感覺到自己完全掌握它。我想這有點像收養一隻流浪狗,剛開始對它有點感覺,但隨著時間的推移,你會越來越了解它。

如果你的服務出現故障或發現一個嚴重的bug?-?停止手上的工作,無論是多有趣或無聊,馬上修復它。這是基本的職業道德。這不容易,成熟後才能理解。你需要慢慢適應。

有些事情會發生並可能影響到你的服務,你需要時刻關注它們。

例如,你的服務在等待另一個人在開發的的功能。要麼客氣地催促他,要麼自己去做。努力設法推進工作。

在興趣和主要工作中找平衡

有趣的工作是那些在智力上具有挑戰性的工作。例如演算法優化、數據結構設計或人工智慧。這肯定會提高技術水平。它可能會也可能不會改善你的服務。

重要的工作是那些公司給我們工資要我們做的事。例如與業務夥伴的系統集成或者調整營銷模板, 使它們在各類設備上都很好地顯示。

有時候,最重要的工作不是最有趣的。

我們是工程師,我們活著是為了解決難題。然而,我們必須在做有趣的事情和重要的事情之間取得平衡。

看透深度和廣度之間的含義

年輕的工程師希望對軟體工程有一個全方位360°的視角。

不要陷入你是個前端開發(或後端,或運維)的陷阱。至少要在一定程度上了解所有這些領域。

別誤會,你會想要專註於某一行。不過,我的觀點是確保在一定程度上掌握其他方面的知識。因為從長遠來看,這將幫助你成為一個更好的工程師。

請記住,沒有前端工程師或後端工程師這樣的東西。只有工程師。工程師的工作是解決問題,所以要做到這一點。

明白BOOS想要你做什麼?

細節會因工作和公司而異,但不管你在哪裡,有些事情都是一樣的:

  1. 沒有人喜歡一個愛發牢騷的人。不要因為他們讓你「更新15個不同模板的措辭」就抱怨,或吐槽任何其他種類的粗活。抱怨越多,你會發現你的同事比你在事業上發展地更快。你不想每一次都做這些工作,但是除了抱怨之外,還有更好的方法來得到更好的工作。
  2. 完成任務。「完工了,就等著合併到主分支(master)了」,這意味著工作還沒有完成。合併到主分支並部署到預生產/生產環境。你的老闆會很感激你,如果你說「完成」就代表確實完成了。
  3. 了解與你領域相關的關鍵數據。它會給人一個深刻的印象,你確實了解你的領域。是的,這也適用於軟體工程。不用說,捏造數據是你能做的最糟糕的事情。如果你不知道就直說,然後說「給我10分鐘查一下」。

你的BOOS不希望你做什麼?

  1. 當一個重大問題出現時,不要隱藏。直接告訴你的老闆, 有些事情不正常,你正在處理。告訴業務在解決此問題之前,你不能進行任何其他的工作。
  2. 對任務不要過度承諾。如果你認為業務給你的工作可以在3天內完成,承諾他們6天,而不是2天。因為總會有其他的事情出現,它們會花掉你5天時間。但是你答應了他們要6天,這意味著你仍然「超過預期」,因此你很「擅長估算」。

最後的建議

不要 刪除 生產環境資料庫。


推薦閱讀:

軟體測試經典sql面試題(學生表_課程表_成績表_教師表)

TAG:軟體工程師 | 軟體開發 |