程序員修煉之道 Tips
Tip 1:
Care About Your Craft
關心你的技藝
我其實一直沒有想明白這句話是什麽意思. 我的理解是, 我們現在所學所掌握的技藝最後可能是要過時的, 要時刻關心最新的技術並嘗試去學習. 不過雖然這麽說, 但是如何做就是見仁見智了, 我在最近可能看了看 shell 編程, 學了學 Node.js, 還看了兩眼 Golang, 最終我真正吸收的還是 Node.js, 對於 shell 和 Golang 看的我實在提不起興趣. 不過我也沒有強求, 畢竟不是靠這個吃飯的, 而且自己也沒有什麽興趣, 索性就放棄了. 不過對於 Node 我還是巨有興趣的. 這個月我都在為 SportJoin 編寫 Node API.
Tip 2:
Think! About Your Work
思考! 你的工作
Tip 3:
Provide Options, Don’t Make Lame Excuses
提供這種選擇, 不要找蹩腳的借口
Tip 4:
Don’t Live with Brokwn Windows
不要容忍破窗戶
Tip 5:
Be a Catalyst for Change
做變化的催化劑
Tip 6:
Remember the Big Picture
記住大圖景
Tip 7:
Make Quality a Requirements Issue
使質量成為需求問題
Tip 8:
Invert Regularly inYour Knowledge Portfolio
定期為你的知識資產投資
Tip 9:
Critically Analyze What You Read and Hear
批判地分析你讀到的和聽到的
Tip 10:
It’s Both What You Say and the Way You Say it
你說什麽和你怎麽說同樣重要
Tip 11:
DRY
— Don’t Repeat Yourself
不要重復你自己
Tip 12:
Make It Easy to Reuse
讓復用變得更容易
Tip 13:
Eliminate Effects Between Unrelated Things
消除無關事物之間的影響
Tip 14:
There Are No Final Decisions
不存在最終決策
Tip 15:
Use Tracer Bullets to Find the Target
用曳光彈找到目標
Tip 16:
Prototyle to Learn
為了學習而制作模型
Tip 17:
Program Close to the Problem domain
靠近問題領域編程
Tip 18:
Estimate to Avoid Surprises
估算, 以避免發生意外
Tip 19:
Iterate the Schedule with the Code
通過代碼對進度表進行叠代
Tip 20:
Keep Knowledge in Plain Text
用純文本來保存知識
Tip 21:
Use the Power of Command Shells
利用命令 shell 的力量
Tip 22:
Use a Single Editor Well
用好一種編輯器
Tip 23:
Always Use Source Code Control
總是使用源碼控制
Tip 24:
Fix the Problem, Not the Blame
要修正問題, 而不是發出指責
Tip 25:
Don’t Panic
不要恐慌
Tip 26:
“Select” Isn’t Broken
“Select” 沒有問題
Tip 27:
Don’t Assume it — Prove It
不要假定, 要證明
Tip 28:
Learn a Text Manipulation Language
學習一種文本操縱語言
Tip 29:
Write Code That Writes Code
編寫能編寫代碼的代碼
Tip 30:
You Can’t Write Perfect Software
你不可能寫出完美的軟件
Tip 31:
Design with Contracts
通過合約進行設計
Tip 32:
Crash Early
早崩潰
Tip 33:
If It Can’t Happen, Use Assertions to Ensure That It Won’t
如果它不可能發生, 用斷言確保它不會發生
Tip 34:
Use Exceptions for Exceptional Problems
將異常用於異常的問題
Tip 35:
Finish What You Start
要有始有終
Tip 36:
Minimize Coupling Between Modules
使模塊的之間的耦合減少
Tip 37:
Configure, Don’t Integrate
要配置, 不要集成
Tip 38:
Put Abstractions in Code, Details in Metadata
將抽象放進代碼, 細節放進元數據
Tip 39:
Analyze Workflow to Improve Concurrency
分析工作流, 以改善並發性
Tip 40:
Design Using Services
用服務進行設計
Tip 41:
Always Design for Concurrency
總是為並發設計
Tip 42:
Separate Views from Models
使視圖與模型分離
Tip 43:
Use Blackboards to Coordinate Workflow
用黑板協調工作流
Tip 44:
Don’t Program by Coincidence
不要靠巧合編程
Tip 45:
Estimate the Order of Your Algorithms
估算你算法的階
Tip 46:
Test Your Estimates
測試你的估算
Tip 47:
Refactor Early, Refactor Often
早重構, 常重構
Tip 48:
Design to Test
為測試而設計
Tip 49:
Test Your Software, or Your Users Will
測試你的軟件, 否則你的用戶就得測試
Tip 50:
Don’t Use Wizard Code You Don’t Understand
不要使用你不理解的向導代碼
Tip 51:
Don’t Gather Requirements — Dig for Them
不要搜集需求 — 挖掘它們
Tip 52:
Work with a User to Think Like a User
與用戶一同工作, 以像用戶一樣思考
Tip 53:
Abstractions Live Longer than Details
抽象比細節活得更長久
Tip 54:
Use a Project Glossary
使用一個項目詞匯表
Tip 55:
Don’t Think Outside the Box — Find the Box
不要在盒子外面思考 — 要找到盒子
Tip 56:
Listen to Nagging Doubts — Start When You’re Ready
傾聽反復出現的疑慮 — 等你準備好再開始
Tip 57:
Some Things Are Better Done than Described
對有些事情”做”勝於”描述”
Tip 58:
Don’t Be a Slave to Formal Methods
不要做形式的奴隸
Tip 59:
Expensive Tools Do Not Produce Better Designs
昂貴的工具不一定能制作出更好的設計
Tip 60:
Organize Around Functionality, Not Job Functions
圍繞功能, 而不是工作職務進行組織
Tip 61:
Don’t Use Manual Procedures
不要使用手工流程
Tip 62:
Test Early. Test Often. Test Automatically.
早測試, 常測試, 自動測試.
Tip 63:
Coding Ain’t Done ‘Til All the Tests Run
要到通過全部的測試, 編碼才算完成
Tip 64:
Use Saboteurs to Test Your Testing
通過”蓄意破壞”測試你的測試
Tip 65:
Test State Coverage, Not Code Coverage
測試狀態覆蓋, 而不是代碼覆蓋
Tip 66:
Find Bugs Once
一個 bug 只抓一次
Tip 67:
Treat English as Just Another Programming Language
把英語當作又一種編程語言
Tip 68:
Build Documentation In, Don’t Bolt It On
把文檔建在裏面, 不要栓在外面
Tip 69:
Gently Exceed Your User’s Expectations
溫和地超過用戶的期望
Tip 70:
Sign Your Work
在你的作品上簽名
程序員修煉之道 Tips