程序员的职业素养(读书笔记)-- 第一章 - xinglu31 - 博客园



程序员的职业素养(读书笔记)-- 第一章 - xinglu31 - 博客园

1.1 清楚你要什么

"专业主义"有很深的含义,它不但象征着荣誉与骄傲,而且明确意味着责任 与义务。这两者密切相关,因为从你无法负责的事情上不可能获得荣誉与骄傲。 做个非专业人士可轻松多了。非专业人士不需要为自己所做的工作负责,他 们大可把责任推给雇主。如果非专业人士把事情搞砸了,收拾摊子的往往是雇主; 而专业人士如果犯了错,只好自己收拾残局。

1.2 担当责任

经过反省,我意识到未对"例程"进行测试就交付软件是不负责任的。为了 如期交付产品,我忽略了测试环节,整个过程中只考虑要如何保全自己的颜面, 却没顾及客户和雇主的声誉。我本该早点儿担起责任,告诉Tom 测试还未完成、 自己不能按时交付产品。那么做绝非易事,Tom 一定会不高兴,但客户不会丢失 数据,客服经理也不会打电话来轰炸。

1.3 首先,不行损害之事

1.3.1 不要破坏软件功能

软件开发太复杂了,不可能没什么bug。但很不幸,这 并不能为你开脱。人体太复杂了,不可能尽知其全部,但医生仍誓言不伤害病人。 如果他们都不拿"人体的复杂性"作托辞,我们又怎么能开脱自己的责任呢?所谓专业人士,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在 所难免。所以,雄心勃勃的专业人士们,你们要练习的第一件事就是"道歉"。 道歉是必要的,但还不够。你不能一而再、再而三地犯相同的错误。职业经验多 了之后,你的失误率应该快速减少,甚至渐近于零。失误率永远不可能等于零, 但你有责任让它无限接近零。
1. 让QA 找不出任何问题
发布软件时,你应该确保QA 找不出任何问题。故意发送明知有缺陷 的代码,这种做法是极其不专业的。什么样的代码是有缺陷的呢?那些你没把握 的代码都是!
2. 要确信代码正常运行
你怎么知道代码能否常运行呢?很简单,测试!一遍遍地测,翻来覆去、颠 来倒去地测,使出浑身解数来测!你或许会担心这么狂测代码会占用很多时间,毕竟,你还要赶进度,要在截 止日期前完工。如果不停地花时间做测试,你就没时间写别的代码了。言之有理! 所以要实行自动化测试。写一些随时都能运行的单元测试,然后尽可能多地执行 这些测试。
要用这些自动化单元测试去测多少代码呢?还要说吗?全部!全部都要测! 我是在建议进行百分百测试覆盖吗?不,我不是在建议,我是在要求!你写 的每一行代码都要测试。完毕!我是开源项目FitNesse 的主要贡献者和代码提交者。在写作本书的时候, FitNesse 的代码有6 万多行。在这6 万行代码中有2000 多个单元测试,共2.6 万 多行。Emma 的报告显示,这2000 多个测试对代码的覆盖率约为90%。


Read full article from 程序员的职业素养(读书笔记)-- 第一章 - xinglu31 - 博客园


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts