如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2011年10月10日

甚麼是卓越的軟體工程師


Fred Wang(Hsinhsu,Taiwan) 譯 2011/10/10
Davin Lafon列出幾點卓越(Great)的軟體工程師與好(Good)的軟體工程師的差別
1.It is not the code they write. It is the code they don't have to write. 譯 : 不是看他寫的程式,而是他怎樣不寫那些程式。
譯者註 : 卓越的軟體工程師知道用甚麼最簡單的方式就可以達到目標,甚至不用寫程式。如果寫程式也能以最簡捷明瞭的方式完成程式,而功能確絲毫不變。
2.It is not how fast they grow a code base, in terms of lines of code or complexity, but about how fast they shrink it without losing feature or functionality. 譯 : 不是看他多快地寫出很多的程式,寫多少行或多複雜。而是看他他能多快地讓程式碼變少,但功能卻完全不受影響。
譯者註 : 卓越的軟體工程師維護程式,可能是自己寫的或別人寫的,能夠不斷改善與進化程式(提高程式的可讀性,可維護性與效能等),卻不會影響程式的運作。也就是程式重構的能力很強。
3.If you try to start the 'whats the best language' argument with them, do they smile, or maybe look bored, and then change the subject? Or do they evangelize? If they evangelize, they're not a great software engineer. 譯 : 如果你要跟他們討論"甚麼是最好的程式語言?"他會微笑,覺得這個問題很無聊並想轉移話題。如果他推薦並宣揚某特定語言,他就不會是卓越的軟體工程師。
譯者註 : 卓越的軟體工程師不受限於程式語言,而能了解並善用各種程式語言的特性完成任務。
4.It is not about the code or the language. Nor is it about 'obsession', 'knack', 'talent' or any other pseudo magical term. Simply- do they understand software beyond the level of code? Do they understand the software on the architectural level? Or can they only think about lines of code? Can they slip between mathematical abstractions of problems and software? Can they work with stakeholders to understand their needs for the system, or will they develop the system they want to code, that they think you should really want? Someone can be a great hacker or coder or programmer, but that is not he same as a great Software Engineer. I say this without a value scale- a great programmer is a great programmer... But you don't ask a master welder to design a bridge. 譯 : 不是看他會寫甚麼程式或用甚麼語言。也不是多“痴迷”,多“熟練”,多“天才”或其他神奇的字眼。而是他了解軟體的程式設計層次與架構層次嗎?或他只有在乎寫多少行程式?;他可以遊走於數學抽象性與軟體間嗎?他可以與利益關係人一起工作去了解他們對系統的需求嗎?,或者只是開發他想開發的系統或認為你應該要的系統?,有人可以成為一個卓越的駭客或程式設計師,但不一定能成為卓越的軟體工程師。我並沒有貶低卓越程式設計師的價值......但你不能要求電焊的專家去設計一座橋樑。
譯者註 : 卓越的軟體工程師不會迷惑於不切實際讚詞,也不只是了解程式怎麼寫,而是在軟體建構過程需求分析,系統設計,架構設計都能面面俱到,不會落於見樹不見林的問題。
5.Can they 'spot the flaw' when everyone else in the room is enamored of some solution or hot new thing, and moreover, can they explain that fundamental flaw in a way that makes it clear to *everyone* in the room. 譯 : 當房間內其他的人著迷於一些解決方案或熱門的新東西的時候,他是否可以點出缺陷並用讓其他人都可以了解的方式解釋基本的缺陷或問題。
譯者註 : 卓越的軟體工程師喜歡保持懷疑的態度,不放過任何可能的疑點,並且能了解並清楚地分析與解釋。
6.Can they Listen? If not then they are not a great software engineer. 譯 : 他能夠傾聽嗎? 如果不能就不是卓越的軟體工程式
譯者註 : 卓越的軟體工程師絕不是怪胎,他能夠融入團隊,或帶領團隊。

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)