York Jong's Library tagged → View Popular
寻找优秀的程序员
当一份份看的时候,你会想,“嗯嗯嗯,这人应该可以”,或者,“这人差远了”,或者,“我要知道他能不能下决心搬到布法罗[1]来”。但是,我保证有一件事肯定不会发生,那就是你对自己说:“哇,这家伙太聪明了!这种人,我们一定要得到!” 事实上,当你看完几千份简历——假定你懂得如何看简历,那可并不容易——你都看完了,足足几千份的求职申请,老实说,你从中没有发现一个优秀的程序员。一个也没有
-
那些优秀的程序员,就同所有行业中最好的人才一样,是不会出现在招聘市场上的
-
大多数时候,优秀的程序员(我几乎是在重复了)是那么优秀(对,我就是在重复),未来的雇主通常会一眼看出他们的优秀,这意味着,这些程序员基本上想去哪里工作,就能去那里工作。所以,老实说,他们不会发出许多份简历,到处找工作
- 4 more annotations...
石頭閒語:擁抱變化,從函數指標到函數個體 - 樂多日誌
有一天,"偉大的"架構設計師交代甲和乙兩位程序員共同負責撰寫一個小程式。這個程式配置了兩個陣列,一個是傳統的整數陣列,一個是整數vector。這個程式要將這兩個陣列的內容傾印出來。
97 Things Every Programmer Should Know
Welcome to the home page for the 97 Things Every Programmer Should Know project, pearls of wisdom for programmers collected from leading practitioners.
追求神乎其技的程式設計之道(七) | vgod’s blog
上一篇談到了優秀程式設計師的第一要件:「熱情」,這一篇我想要談我覺得熱情之外最重要的能力:「思考」,特別是抽象化的思考能力
-
所有的程式都可以看成一個巨大的金字塔,頂端是這個程式的最終目標,一個模糊的概念;底部是細節的程式碼。而中間是一個經由不斷切割與抽象化所構成的高塔,每一個程式都是切割為許多的元件、模組,再切為更細的class和function,再來是最底下的變數與邏輯判斷式
-
平凡和偉大的程式設計師,我覺得他們之間的差別就在於能看到多少這個高塔中間的分層。厲害的高手都很善於切換自己思考的高度,一下能跟你討論高階的系統架構設計,一下又能深入到最底下的組合語言和二進位除錯。他們腦中除了有這高塔每一層的詳盡平面圖,甚至也非常了解不同樓層之間的交互關係
- 1 more annotations...
追求神乎其技的程式設計之道(六) | vgod’s blog
-
程式員的兩種型態,一是重視演算法、資料結構、執行效率的「效率魔人」,二是重視程式架構、擴充性、彈性、可理解性的「架構狂」。這兩種人其實都很好,要完成一個偉大的軟體,團隊中兩種人一定都要有。比較糟糕的是,有很多「第三型態人」,他們的信念只有一條:「程式只要會動就好」。第三型態人不在乎效率,也不管架構漂不漂亮,上面要求他做什麼,他就想辦法東湊西湊,從Google找程式剪貼,從MSDN抓範例來用,反正只要能隨便測過一個case就能交差了
-
要成為一個優秀的程式設計師的關鍵是什麼?關鍵不在於coding速度有多快、懂多少演算法,或是背了多少patterns,最重要的是「熱情」
- 1 more annotations...
Rob Pike: Notes on Programming in C
What follows is a set of short essays that collectively encourage a philosophy of clarity in programming rather than giving hard rules.
-
Length is not a virtue in a name;
clarity of expression is. -
When the variable names are
huge, it's harder to see what's going on. - 13 more annotations...
Harvard Mathematics Department : Computing: programming
Several chapters of "The Practice of Programming by B.W. Kernighan and R. Pike" contain rules or guidelines that summarize a discussion and are listetd in the Appendix of that book.
-
- Test code at its boundaries.
- Test pre- and post-conditions.
- Use assertions.
- Program defensively.
- Check error returns.
- Test incrementally.
- Test simple parts first.
- Know what output to expect.
- Verify conservation properties.
- Compare independent implementations.
- Measure test coverage.
- Automate regression testing.
- Create self-contained tests.
Testing
-
Use descriptive names for globals, short names for locals.
- 7 more annotations...
Strong Typing vs. Strong Testing
-
Most
Python tests happen at runtime rather than at compile time, but they do happen,
and that's the important thing (not when). -
If it's not tested, it's broken.
- 3 more annotations...
Selected Tags
Related Tags
Sponsored Links
Top Contributors
Groups interested in concept
-
cool design
New design and concept can ...
Items: 1 | Visits: 326
Created by: Joel Liu
-
Concept Mapping
Items: 6 | Visits: 67
Created by: Yukon syl
-
Evolution of Gaia
Gaia is currently undergoin...
Items: 14 | Visits: 65
Created by: Eric P Metze
Highlighter, Sticky notes, Tagging, Groups and Network: integrated suite dramatically boosting research productivity. Learn more »
Join Diigo
