software engineering quotes
我发现一个更好的发布每日一句的平台——微信,所以转战微信公众号了,在微信中搜索morgandaily可以找到“Morgan的每日一句”,欢迎关注:-)
软件工程相关的语录
Since 2014-12-15, I published one sentence about software engineering every workday. Some of them are translated quotes, others are my own words which express myself.
从2014年12月15日开始,每个工作日,我发一条关于软件工程的语录,有的是别人说的,我翻译一下;有的是我自己的感悟,就当自我表达吧。
#2015/09/10
"Nothing is more dangerous than an idea, when it's the only one we have." ―Émile Chartier
“我们如果如果只有一个想法,那就很危险了。”
#2015/09/02
"Never allow the same bug to bite you twice." - Steve Maguire
“别被同一个bug咬两次。”
#2015/09/01
"The real complexity in our jobs is that all planning is done under conditions of uncertainty and ignorance. The code isn't the only thing that changes. Schedules slip. New milestones are added for new features. Features are cut from the release. During development, everyone - marketers, developers and testers - comes to understand better what the product is really for." - Brian Marick
"我们工作中真正复杂的东西是所有的计划都是在不确定和无知中做的,代码不是唯一会变的东西,日程会更改,新的阶段被添加,新的功能被添加,又有功能会被砍掉,每个人——市场人员、开发人员、测试人员,都是在开发过程中才逐渐理解做的产品是个什么玩意。”
#2015/08/31
"We work because it's a chain reaction, each subject leads to the next." - Charles Eames
“我们持续工作是因为工作本身就是一个链锁反应,每个事项引出下一个事项,永无止境。”
#2015/08/28
"Don't make the user provide information that the system already knows. " - Rick Lemons
“不要让用户提供系统已经知道的信息。”
#2015/08/27
"First, solve the problem. Then, write the code." —— Anonymous
“先解决问题,再写TMD代码。”
#2015/08/26
"You're bound to be unhappy if you optimize everything." - Donald E. Knuth
“如果你什么都想做到最优化,那你注定孤苦到老。”——高德纳
#2015/08/25
"Some scale problems should go unsolved. No. Most scale problems should go unsolved." ——@liquidise
“有的扩容性问题就不该去解决,不,应该说大部分扩容性问题都应该不去解决。”
(要我说,把scale去掉,这句话一样是成立的)
#2015/08/24
“都说人总得敬畏点啥,敬畏神灵啥的,干我们这行,神就是复杂度(complexity),不怕这个,你就死得很惨。”——Morgan Cheng
#2015/08/21
"Software is expensive to write. It is the only thing in cyberspace that is getting more expensive, and less reliable" - Jim Gray, in 1999
“写软件是烧钱的活,而且这是互联网事件里唯一烧钱越多,反而越不靠谱的玩意。”
#2015/08/20
If the programmers like each other, they play a game called "pair programming". And if not then the game is called "peer review" - @ashalynd
"如果程序员彼此欣赏,他们就玩一个叫‘结对编程’的游戏;如果他们彼此不喜欢,他们就玩一个叫‘peer review’的游戏。”
#2015/08/19
"Focus on WHY instead of WHAT in your code will make you a better developer" - @seldaek
“写代码时专注于‘为什么’而不是‘是什么’,这样你就能成为一个更好的开发者。”
#2015/08/18
"Do what is right, not what is easy."
“做对的事情,而不是做容易的事情。”
#2015/08/17
"The best engineers I know are artists at heart. The best designers I know are secretly technicians as well" - @Trenti
“我所认识的最好的工程师内心其实是艺术家,我所认识的最好的额设计师内心是技术人员。”
#2015/08/14
"All software sucks." - Alan Cox (in 1968)
“软件没有不烂的。”
#2015/08/13
"The best programmers write only easy programs." - Michael A. Jackson
“最棒的程序员只写容易懂的程序。”
#2015/08/12
"We did about 10,000 tests on it, and it was working fine until Monday." —— Anonymous
“我们测试了一万次,这货工作得挺好,直到TMD星期一。”
(这句话的意思就是,测试只能证明证明系统中bug的存在,却不能证明系统中bug的不存在,依赖于测试提高软件质量是幼稚的想法,虽然测试还是必须要做的事情)
#2015/08/11
"Basic rule of programming: if you stay up all night, you'll probably fix the bug, but you definitely won't be fixing any the next day"
“编程基本原则:如果你熬夜fix bug,你也许能够fix一个bug,但是第二天你肯定一个bug都fix不了。”
#2015/08/10
"If you can't deploy your services independently then they aren't microservices." —— Daniel Bryant
“如果不能够完全独立地部署,那就不算牛逼哄哄的micro services架构。”
#2015/08/08
"I will postpone using this shiny new framework until my peers have validated the proposed benefits with rigorous scientific experiments." —— a qualified programmer
“在我的同行用严格科学的试验证明这个牛逼哄哄技术真的有那么好之前,我是不会用这个玩意的。”
#2015/08/07
"The proper use of comments is to compensate for our failure to express ourself in code" - Robert C. Martin
“使用注释的时候,只应该是我们没法用代码表达我们想法的时候。”
#2015/08/06
"Everybody in the middle east should learn to fight about stuff that really matters, like emacs vs. vim." ——Jeff Atwood
“中东的人真应该为有点意义的事情战斗,比如说用emacs还是用vim。”
(这个笑话有点冷)
#2015/08/05
"There is a tendency among programmers to think that if they are writing code, by definition they are not wasting their time. This is a tar pit. " —— Dan McKinley
“程序员中有一种思潮,觉得只要自己在写代码,就不是浪费时间,这种观点真TMD是一个大坑。”
#2015/08/04
"Code is like humor. When you have to explain it, it's bad" - @housecor
“代码就像笑话,如果还需要解释才能让人懂,那就只能呵呵了。”
#2015/08/03
“软件开发,就是按下了葫芦起了瓢。”
#2015/08/01
"Real happiness comes from achieving your high-level goals. Not from solving interesting techincal riddles that your create for yourself." —— Dan McKinley
“真正的幸福感来自于实现高层次目标,而不是解决自己给自己制造的所谓有趣问题。”
#2015/07/31
"If you have a problem, and you think the solution is using regular expressions, then you have two problems"
“如果你有一个问题,你觉得用正则表达式是一个解决方法,然后你就有两个问题了。”
#2015/07/30
"Weeks of programming can save you hours of planning." - Anonymous
“几周的编程,可以节省你几个小时的计划时间,嘿嘿。”
#2015/07/29
"f u cn rd ths, u cn gt a gd jb n cmptr prgmmng." - Anonymous
(无需翻译,自己看)
#2015/07/28
"Design and programming are human activities; forget that and all is lost." - Bjarne Stroustrup
“设计和编程是人类行为,忘记这一点就全完蛋。”
#2015/07/27
"Fix the cause, not the symptom" - Steve Maguire
“要治本,不要只是治标。”
#2015/07/24
"If we lived in a perfect world, there would not be a need for managers; projects would be executed on time and within cost. However, the reality is, we live in an imperfect world." - Milt Bryce
“如果我们生活在一个完美世界,那就不需要管理,项目自然会按时按计划完成,可是,现实情况是,我们生活在一个麻痹的不完美世界。”
#2015/07/23
"Good specifications will always improve programmer productivity far better than any programming tool or technique." - Milt Bryce
“优秀的规格文档,比任何其他编程工具和技术带来的生产力提高都要显著。”
#2015/07/22 "Programmers are constantly making things more complicated than they need to be BECAUSE FUTURE. Fuck the future. Program for today." - @dhh
“程序员总是把事情搞复杂,原因是为了未来,去他妈的未来,为今天写代码吧。”
#2015/07/21
"Simple is good. Boring is better" - Anonymous
“简单就是好,枯燥就更好了。”
(多少工程师就是不明白这一点)
#2015/07/20
"The true definition of madness is repeating the same action, over and over, hoping for a different result" - Albert Einstein
“重复同样的行为,却希望有不同的结果,这是真的疯了。”
#2015/07/17
“TDD是个好东西,如果能够接受单元测试执行时间过长和可能的随机失败的话。 ” ——Morgan Cheng
#2015/07/16
"The first step in fixing a broken program is getting it to fail repeatably (on the simplest example possible)" - Tom Duff
"搞定一个有问题的程序的第一步,是让他稳定持续出问题。”
#2015/07/15
"I can't choose whether someone is offended by my actions. I can choose whether I care" - Martin Fowler
“我不能决定别人不是被我的行为冒犯了,但是我可以决定屌不屌他。”
(Martin大叔这句话不知道是那么语境下说的,颇有古龙之风)
#2015/07/14
"Only three priorities apply as to when to fix a bug: now, later, never."- @KevlinHenney
“Fix Bug只有三种优先级:现在fix、回头Fix、永远不Fix。”
#2015/07/13
"Innovation is like climbing a mountain. Most teams fail because they pick the wrong mountain to climb" - Sebastian Thrun
"创新就像爬山,大多数团队失败是因为他们爬错了山。”
#2015/07/11
“一切过度复杂设计都是因为懦弱和无能。”——Morgan Cheng
(友人给了英文翻译:
All FUCKING over-complex design is due to TMD cowardice and inability)
)
#2015/07/10
"Documentation is like sex; when it's good, it's very, very good, and when it's not, it's better than nothing" - Dick Brandon
"文档就像性生活,如果好的,那叫一个真好;但是要是不好,那TMD还不如没有。”
(我故意翻译错了,因为我就是这么认为的)
#2015/07/09
"A person is a success if they get up in the morning and gets to bed at night and in between does what he wants to do" - Bob Dylan
"一个人要是起床到睡觉之间做得是他想做的事情,他/她就是一个成功人士了。”
(你觉得你是吗?)
#2015/07/08
"Good programmers know what's beautiful and bad ones don't" - D. Gelernter
“优秀的程序员知道什么叫做美,傻逼程序员就不知道。 ”
#2015/07/07 "The code that is the hardest to debug is the code that you know cannot possibly be wrong"——Anonymous
“最难debug的代码,就是你不相信有错误的代码。”
(换句话说,你要是相信你的代码中有错误,抱着这种心态去debug,就没有难处理的问题)
#2015/07/06 "Operating systems are like underwear — nobody really wants to look at them." - Bill Joy
"操作系统就像内衣,没人真想看它。"
#2015/07/03
“在足球场上,球没有传好,是传球人的责任,不是接球人的责任,这很明显啊,你听说过优秀的传球手,什么时候听说过优秀的接球手?因为把球传好是传球人的责任啊!同样的,在一个公司,一个团队里面,如果交流不畅,不是听的那个人的责任,是说的那个人的责任,如果你没法理会别人的意思,不要不好意思,直接告诉对方:我没听懂你说什么,你能不能再说一遍让我明白。 ” ——Morgan Cheng
#2015/07/02
"Don't write code that guesses the future, arrange code so you can adapt to the future when it arrives" - @sandimetz
“别以猜想未来的方式来写代码,而是以能适应未来改变的态度来组织代码。”
(这话不大好理解,我理解的意思就是:别猜测未来会有什么什么功能所以把代码搞得很复杂,但是要让代码足够灵活来适应未来新的需求)
#2015/07/01 "Complexity is a sign of technical immaturity. Simplicity of use is the real sign of a well design product" —— Daniel T. Ling
“复杂是技术不成熟的标志,使用简单才是良好设计产品的标志。”
#2015/06/30
"...if you're afraid to change something it is clearly poorly designed" - Martin Fowler
“如果你害怕修改什么东西,哥们这说明你设计的不好吧。 ”
#2015/06/29
"640K ought to be enough for anybody" - Bill Gates, 1981
"640K 应该对谁都足够了。"
(640K元对谁都不够,640K内存还能足够?)
#2015/06/27
"The amateur software engineer is always in search of magic." —— Grady Booch
“业余软件工程师总是在寻找封建迷信的解法。”
#2015/06/26
"If you can't test it, don't build it. If you don't test it, rip it out. " —— Boris Beizer
“你要是不能测试它,那你就别创建它;如果你不测试它,你创建它个屁呀?”
#2015/06/25
"Bugs lurk in corners and congregate at boundaries." —— Boris Beizer
“Bug就埋伏在不常见路径附近,Bug就聚集在边缘情景里。”
#2015/06/24 "Test input for validity and plausibility." —— P. J. Plauger
“对一个功能输入的检查,不管更要检查正确性,也要检查直观合理性。 ”
#2015/06/23 "GUI (Graphical User Interface) is always intuitive to those who design it. Maya Elhalal
“GUI对于设计的人来说都是很直观的.”
(但是不一定对使用的人直观)
#2015/06/19
"..the problem [with software projects] isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes." —— Kent Beck - in "Extreme Programming Explained"
“软件项目的问题不是改变,因为改变总是会发生的,问题是没有能力去控制改变。”
#2015/06/18
"The software isn't finished until the last user is dead." —— Anonymous
“最后一个用户死翘翘之前,软件都不会完结。”
#2015/06/17
"There are two ways to write error-free programs; only the third one works." —— Anonymous
"有两种方法写无bug的程序,但是只有第三种才好使。"
(言下之意,没有bug-free程序存在)
#2015/06/16
"A man must be big enough to admit his mistakes, smart enough to profit from them, and strong enough to correct them" - John C. Maxwell
“一个爷们应该心足够大到承认自己的错误,聪明到足够防止错误继续发生,还要强到能够纠正这些错误。 ”
#2015/06/15
"Adhere to the style of the original" - Al Vermeulen
“保持TMD最初样式!”
#2015/06/13
"Poor management can increase software costs more rapidly than any other factor" - Barry Boehm
“糟糕的管理方式导致的软件开发成本消耗比任何其他因素都要大。”
#2015/06/12
"Good visual layout shows the logical structure of a program" - Steve C McConnell
“好的视觉排列,代表了程序的逻辑结果。”
#2015/06/11
"The question of whether computers can think is like the question of whether submarines can swim" - Edsger W. Dijkstra
"问计算机会不会思考,就像问潜水艇会不会游泳。"
(尼玛这句话是想说明啥?)
#2015/06/10
"I'd rather write programs to write programs than write programs." —— D. Sites
“相比于写程序,我宁可写能写程序的程序。”
#2015/06/09 "Don't find fault, find a remedy" - Henry Ford
“本宫养你不是让你提问题,而是解决问题。”
#2015/06/08
"If you're the smartest person in the room, you're probably in the wrong room!" - @singularityu
“如果你觉得你是屋子里最聪明的人,可能你走错了屋。”
#2015/06/06
"Anyone can build a fast CPU. The trick is to build a fast system. " - Seymour Cray
“谁都可以造一个快速的CPU,但是问题是造一个快速的系统就难了。”
#2015/06/05
"Design is not ornamentation. It's not all subjective. It's not a matter of pers pref. Some design choices are objectively better" @spolsky
“设计不是装饰,设计不是主观判断,设计和个人喜好倾向无关,有的设计客户观上就是要比别的好。”
(现实正好是相反的,能够按照上面实践的人太少了)
#2015/06/04
"Better to be a geek than an idiot"
“做2B好过SB。”
#2015/06/03 "It may be hard to scale a poorly designed but successful software system, but that's still a better place to be than its inverse."——Martin Fowler
“扩容一个设计很烂但是还算成功的软件系统很难,但也好过一个设计很好但是并不成功的系统。”
#2015/06/02 "First, solve the problem. Then, write the code" - John Johnson
“先解决问题,然后再写TMD代码。”
#2015/06/01 "Creating something out of thin air is easy. It's finding the air that's hard" - Asher Trotter
“凭空造出一个东西不难,难的是找到空在哪。”
#2015/05/30
"Yes, features do sell products, but only if they actually work!" - Steven R. Rakitin
“是,功能能让产品卖得动,但只有功能好使才能卖得动。”
(要明白功能数不说明什么,功能好使才是主要的。)
#2015/05/29
"People will realize that software is not a product; you use it to build a product" - Linus Torvalds
“人们终究会认识到,软件不是产品,人们使用软件来构建一个产品。”
(Linux作者能有这样的见解,可见他不只是一个程序员)
#2015/05/28
"The hardest single part of building a software system is deciding precisely what to build" - Frederick P. Brooks
“构建软件系统中最难的事情,是决定构建什么东西呢。”
#2015/05/27 "Some of the best programming is done on paper, really. Putting it into the computer is just a minor detail" - Max Kanat-Alexander
“有些最棒的程序其实是在纸上搞定的,把代码录入计算机只是很小的一步。”
(无论你用什么IDE,也无论用什么键盘,其实都只能辅助你的开发效率,并不能保证你写出最棒的程序,写出最棒的程序永远是要靠大脑)
#2015/05/26
"Good judgement comes from experience, and experience comes from bad judgement" - Frederick P. Brooks
“好的判断来自于经验,而经验来自于错误的判断。”
#2015/05/25
"There are only two industries that refer to their customers as 'users'" - Edward Tufte
“只有两个行当把客户称为用户。”
(据说有一个行当是贩毒,另一个行当是...)
#2015/05/23
"If you're good at the debugger it means you spent a lot of time debugging. I don't want you to be good at the debugger" - Robert C. Martin
“如果你擅长调试器,那意味着你花了很多时间调试,可是我不想你擅长TMD所谓调试器。”
(使用调试工具是下下策,单元测试和良好的代码风格应该足够应付代码中的问题,如果你需要用debugger,你已经输了。)
#2015/05/22
"good is the enemy of great, but great is the enemy of shipped" - Jeffrey Zeldman
“优秀是卓越的大敌,不过,卓越也是发布的大敌。”
#2015/05/21 "No one can tell you what the Matrix is. You have to experience it for yourself" - Morpheus,The Matrix
“没人能告诉你黑客帝国是什么,你得要自己体会才能知道。”——孟菲斯
(把“黑客帝国”换成任何名词动词都行)
#2015/05/20
“代码的可读性直接决定代码的正确性。”--Morgan
#2015/05/19
"The most disastrous thing that you can ever learn is your first programming language" - Alan Kay
“你能学到的最毁灭性的东西,就是你的第一门编程语言。”
(为啥呢?我学的第一门变成语言是Basic,还好,还好)
#2015/05/18
“Software development is fun, if there is no deadline and schedule.” - Morgan
“软件开发是一件很有意思的事情,如果没有TMD期限和日程要求的话。”
#2015/05/16 “Pasting code from the internet into production code is like chewing gum found in the street.” – Mike Johnson
“从网上找code贴到产品代码库里,就像从街上捡起口香糖继续嚼。”
#2015/05/15
"If you want to go somewhere, goto is the best way to get there" ——Anonymous
“如果要调到什么地方,goto语句是最好的办法。”
(这条不是对不对的问题,而是能不能的问题,现在绝大部分编程语言都已经没有goto语句了。)
#2015/05/14
"Objects are data structures with functions. Closures are functions with data."
“对象是有功能的数据结果,闭包是有数据的功能。”
#2015/05/13
"If it's your decision, it's design; if not, it's a requirement." -- Alastair Cockburn
“如果怎么做是你的决定,那就是一个设计;如果不是你的决定,那就是一个需求。”
#2015/05/12
“傻子都能把设计搞复杂,有本事的人才能把事情搞简单。” ——Morgan
#2015/05/11
"Design is choosing how you will fail" - Ron Fein
“设计就是选择你如何处理失败的情况。”
#2015/05/09 “Every single design pattern makes your design more complicated.”——Anonymous
“每个设计模式都让你的设计更复杂。”
#2015/05/08
"Great design is eliminating all unnecessary details" - Minh D. Tran
“牛逼的设计就是把没必要的细节全TMD删掉。”
#2015/05/07
"Always look for, and eliminate, flaws in your interfaces" - Steve Maguire
“要永不停歇地寻找并消灭你接口中的缺陷。”
#2015/05/06
"A common mistake, when trying to design something completely foolproof is to underestimate the ingenuity of complete fools" - Douglas Adams
"想要设计一个完全防傻的系统时,最常见错误就是低估了纯傻X的傻X程度。”
#2015/05/05
"The real measure of a great engineer is how quickly the engineer can simplify a complex problem and develop an easily understood and maintainable solution." —— Scalability Rules
“看一个工程师牛不牛逼,就看他/她能不能快速简化一个复杂问题,搞出一个很容易理解很容易维护的解决方法。”
#2015/05/04
"If you can't do great big things, do great little things."
“你要是做不了牛逼的大事,那就把小事做得牛逼一点。”
#2015/04/30
"It's not uncommon for designers to confuse a beautiful looking product with one that works beautifully" - Braden Kowitz
"设计者很容易把看起来漂亮的产品和干得漂亮的产品弄混。”
#2015/04/29 "OO programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches" - Paul Graham
"面向对象编程提供了一种可靠的方式,一种可靠的把代码写成一坨一坨的方式,让你把代码组织成一系列的补丁。"
(听起来硅谷创业教父Paul Graham是在骂OOP)
#2015/04/28 "Focus is saying no to 1,000 good ideas" - Steve Jobs
“专注就是对一千个好想法说不。”——史蒂夫.乔布斯
#2015/04/27 "There is a lot of talk, but at the end of the day, code is the real talk" - @IrisClasson
“干这行要有很多表达,但是,最终代码才是真正的表达。”
#2015/04/25 "Any sufficiently advanced bug is indistinguishable from a feature." —— Bruce Brown
“任何诡异难缠的bug,都是源自于某个功能要求。”
#2015/04/24
"Given enough eyeballs, all bugs are shallow." —— Eric Raymond
“只要有足够的Code Review,所有的bug都无所遁形。”
(这一点,我并不赞同,原话是为了说明开源软件会有更少的bug,但是,实际上开源软件出过不少要命bug,甚至是安全性bug)
#2015/04/23
"Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter." —— Eric Raymond
“研究画笔和颜料不能让一个人成为专业画家,同样,计算机科学教育不能让一个人成为专业程序员。”
#2015/04/22
"全世界的Debug都是一样的一步骤:找到一个正常的情况,然后找到一个出错的情况,最后找到这两者的差异。"——Morgan Cheng
#2015/04/21
"Object Motto: Ask not first what the system does: As what it does it to!" —— Bertrand Meyer, Object-Oriented Software Construction (Book/CD-ROM) (2nd Edition) by Bertrand Meyer
“对象格言:先别问这系统干的啥,先问这系统为什么服务。”
#2015/04/20
"As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications." —— Dave Parnas
“这是一条通则,软件系统不在实际应用中使用而且出了一堆问题,就绝对谈不上一个真正好使的系统。”
(象牙塔的理论无法保证软件系统好使,因为总有显示的狗屎事情发生)
#2015/04/18
"There are thousands of ways to mess up or damage a software projects, and only a few ways to do them well. " —— Capers Jones - From Applied Software Measurement, second edition, page 210.
“搞垮一个软件项目的方式有千万条,搞好的方式就几个。”
(这是好消息,我们照着这几个方式做就是了)
#2015/04/17
"Perhaps the worst software technology of all time was the use of physical lines of code [for metrics]. Continued use of this approach, in the author's opinion, should be considered professional malpractice. " —— Capers Jones - From Applied Software Measurement, chapter 3, page 239.
“有史以来TMD最糟糕的绩效衡量方式就是按照源代码行来衡量,谁还继续用这种方式,就我的观点来看,就TMD是行业害虫。”
#2015/04/16 "The structure of a software system will reflect the communication structure of the team that built it" —— R. E. Fairley
“软件系统的结构,能够反映出构建这个系统的团队的沟通方式。”
(你不能同意得更多吧)
#2015/04/15 "It is not easy to do something good, but it is extremely difficult to do something bad." —— Charles Eames
“做好事不容易,但是,也可以告诉你,做烂事更让你TMD难受。”
#2015/04/14
"Done is not only better than perfect, it's not even done, and that's good." ——Kent Beck
“搞定不只是比搞完美好,没搞定足够好就比完美还要好。”
(功能做的差不多了,死不了人丢不了钱损失不了数据,就赶紧上线接受用户考验吧)
#2015/04/13
"Done is better than perfect."
“搞定比搞完美好。”
#2015/04/11
"I have yet to see any problem, however complicated, which, when looked at in the right way, did not become still more complicated. " —— Poul Anderson
(这句有点绕口)
就我所知,没有任何一个问题,无论多复杂,如果以正确的方法看待,也不会变得更加复杂。
(Poul Anderson如果是程序员,写这么难懂的话,真该拖出去打)
#2015/04/10
"The three most important aspects of debugging and Real Estate are the same: Location, Location, and Location" - R. Pattis
Debug和房地产有三个重要共同点:位置,位置,还是TMD位置!
#2015/04/09
"永远不要把自己和自己的队友逼到必须很聪明很小心的地步。"——Morgan Cheng
(十余年行业心血凝结成这一句话)
#2015/04/08
"Two things that drive us, software development addicts: enthusiasm and laziness."
“两件事情驱动着我们这些软件开发狂人:热情和懒惰。”
#2015/04/07 Software is never "done" - only occasionally shipped, and then eventually abandoned
软件永远没有完成的时候,软件只是有时候后被发布了,然后最终被丢弃。
#2015/04/03
“The difference between a good and a poor architect is that the poor architect succumbs to every temptation and the good one resists it.”
“好的架构师和烂的架构师的区别,就是烂的禁不住任何诱惑,而好的则总能抵挡诱惑。”
(这里用了“架构师”而不是“程序员”,其实指的就是有资历的程序员;所说的“诱惑”,当然指的是各种花里胡哨的技术选择)
#2015/04/02
"Write readable code that works."
写代码就两条铁律,第一要好使,第二要让别人看得懂
#2015/04/01
"If you don't have a good system, make sure you get good users."
“如果你的系统不够好,那就指望你的用户足够好吧。”
#2015/03/31
"Even the best planning is not so omniscient as to get it right the first time. "-- Fred Brooks
“无论多精妙的计划,不管考虑多么全面,也比不上第一次实干把事情搞对那么全面。”
#2015/03/30
"What kind of programmer is so divorced from reality that she thinks she'll get complex software right the first time?" - James Alan Gardner
"程序员太脱离实际了,才会以为自己能够一票把复杂软件做出来。"
#2015/03/28
"Artificial Intelligence is no match for Natural Stupidity"
"人工智能不是天然傻逼的对手。"
(不用害怕人工智能,比智能也许人类不行,比傻逼,嘿嘿,机器不行)
eb877bac75bf8e2b9087aecc978e8f3c0a1a2b61
#2015/03/27
"Refactoring is not only about transforming code, it's equally about how it transforms the coder" - @venkat_s
"重构代码,改变的不只是代码,更重要的是也改变了程序员自己。"
(这句感觉很有禅理好牛逼的样子)
#2015/03/26
"The best way to get a project done faster is to start sooner." ——Jim Highsmith
保证一个项目尽快结束的最好方式,就是尽早开始。
(这和2015/01/30的那句话 似乎有些冲突,但是,那一句说的是编码,这一句说的是项目,两者是有区别的)
#2015/03/25
"Please stop commenting code that's already obvious." ——@gar1t
“别再给很清楚的代码加注释了。”
(注释只用来解释why,不用描述对应代码是干what的,代码本身就应该说明自己是干what的)
#2015/03/24
"Code should run as fast as necessary, but no faster; something important is always traded away to increase speed" - R. Pattis
"代码需要运行得足够快,但是不要比足够快更快,因为总有比提高运行速度更重要的东西值得你衡量。"
(更重要的东西,比如代码的可读性,比如代码的可维护性,如果完全追求高性能,我们干脆用汇编语言写一切代码好了,用得着吗?当然用不着。)
#2015/03/23
"Sometimes the questions are complicated and the answers are simple." - Dr. Seuss
“有时候,复杂的不问题,而不是答案。”
#2015/03/21
"No one hates software more than software developers" - Jeff Atwood
“没有谁比软件开发者更加仇恨软件。”
(仅博一笑)
#2015/03/20
"If we have data, let's look at data. If all we have are opinions, let's go with mine" -Jim Barksdale, former CEO of Netscape
"如果我们有数据,那我们就看数据;如果我们没有数据只有不同观点,就别BB,按照我的方式来。"
(很多时候,所谓采用什么样的设计决定,就是一个往东走或者往西走的事情,到底那条路能取到经谁也说不准,这时候别废话争吵,赶紧定个方向继续走就是了,快点获得数据反馈才是正经的。)
#2015/03/19
"Inheritance is surely a good answer but who knows the questions?" - Michel Gauthier
“毫无疑问,继承是一个好答案,但是谁能告诉我问题是啥?”
(大部分情况下,你会发现不用继承这种方式一样能够搞得定,用上继承反而把问题搞复杂了,所以,要谨慎使用一些概念和方法)
#2015/03/18
“编程就像打高尔夫(或者台球),把球打进洞里并不算了不起,花了几杆把球打进洞里才体现水平。”
(写出正确程序并不算牛逼,一票就能写对才叫牛逼,如果写出来被测试发现一大堆bug,修修补补才写对,嘿嘿,这离编程大师还差得远呢)
#2015/03/17 "My skill is simplifying other people's lives, my passion is simplifying my own. " —— @scrumdan
"我的技能就是简化他人的生活,我的激情就是简化我自己的生活。"
(简单,简单,多少人穷其一生也不明白这个道理)
#2015/03/16
"If you can‘t explain it simply, you don‘t understand it well enough" —— Albert Einstein
“如果你不能把一件事请用简单方式解释清楚,说明你还没真懂这事。”
(把事情复杂化、神秘化的人,都是没有真正懂的人)
#2015/03/14
"Good programming is good writing" - John Shore
“要想编程好,就要写作水平高。”
#2015/03/13
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live" - Martin Golding
“当你写代码的时候,永远想着,有朝一日是一个有暴力倾向的变态来维护你写的代码,而且这厮还知道你住在哪。”
#2015/03/12 "Smart data structures and dumb code works a lot better than the other way around" - Eric Raymond
"巧妙的数据结构,加上傻愣的代码,要比一切其他方式都要好很多。"
(能说出这话的真不是一般人!数据结构要巧妙,代码要简单傻愣,这才是高明的程序员走得路,因为数据结构是根基,是持续存在的,而代码是要持续维护的,必须让自己让别人容易看懂;如果你走了相反的道路,数据结构很傻楞,代码充满花里胡哨的技巧,bug肯定很多)
#2015/03/11
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former" - Albert Einstein
"只有两样东西是无限的,宇宙和人类的傻逼程度,而且,我还不确定前者真的是无限的,但我确定后者肯定是。"——爱因斯坦
(永远不要低估活人的傻逼程度,所以不要指望别人很聪明,不管做什么,做好准备使用的人或者接受的人是一个傻逼吧。)
#2015/03/10
"Where there are two bugs, there is likely to be a third" - P. J. Plauger
"当你看到有两个Bug的时候,很有可能还有第三个Bug存在。"
#2015/03/09
每天都要静静思考一刻钟,这应该成为每天必做的事情,除非很忙,很忙的时候,要每天静静思考一个小时。
#2015/03/07
“人的bug,是最严重的bug”—— @morgancheng 我说的
(团队中出现人的问题,就一定要及时fix,有问题的人不光会拖后腿,更严重的是干扰队友的判断力,把团队拖到错误的方向,后患无穷)
#2015/03/06
"The temptation to add features to a program must be resisted as strongly as possible. This requires the dedication of a saint" - @joeerl
“必须要压抑住往程序里增加功能的诱惑,必须要把这一点当做圣人之言一样来遵守。”
(这句话无论直译还是意译都很难,谁能有更好的翻译方法吗?)
#2015/03/05 "When in doubt, use brute force" - Butler Lampson
“拿不定主意的时候,用简单粗暴的土鳖方法。”
#2015/03/04
"I have never been forced to accept compromises, but I have willingly accepted constraints." —Charles Eames
“我绝不接受妥协,但是我愿意接受局限。”
(两个人对一个设计有不同意见,A说这个按钮要高端大气上档次,B说这个按钮要低调奢华有内涵,如果做一个一半高端一半低调的按钮,这就叫妥协;既然有争议意见,而且难说哪个正确,那先不做这个按钮,这叫做局限)
#2015/03/03 "There are problems that should not be solved. There are programs that should not be written" - Richard Harter
有的问题不是必须要解决,有的程序不是必须要去写。
(同理,有的人不值得去爱,有的人不值得去培养,有的事业不值得去奋斗......)
#2015/03/02 "Don't just fix the mistakes - fix whatever permitted the mistake in the first place" - One of NASA rules for better software
“不要只是修正错误,而是要修正导致这种错误发生的原因。”——美国航空航天局
#2015/02/28
The central enemy of reliability is complexity. — Geer et al.
“复杂是可靠的大敌。”
#2015/02/27
One of my most productive days was throwing away 1000 lines of code.——Ken Thompson
“在我最有工作产出的一天,我删掉了一千行代码。”
#2015/02/26 "Software development takes twice as long as anticipated, even when you take into account Hoffstetler's law. " - Hoffstetler - Hoffstetler's law of software development.
软件开发会花费你预估两倍的时间,即使你参考这条规则来预估也是一样。—— Hoffstetler法则
#2015/02/25
"I wish developing great products was as easy as writing a check. If that was the case, Microsoft would have great products.” —— Steve Jobs
"我也希望开发产品和签支票一样简单,但是如果真的是这样的话,微软也TMD可以搞出伟大产品了。" —— 乔布斯
(别以为砸钱就能搞出好产品,一切都要需要艰巨的劳动和精密的计划)
(原来今天是乔布斯诞辰,我从我的文库里面挑选这一句的时候,还不知道呢,莫名其妙地就选了这一句,莫非是天意?)
#2015/02/17
"A program which perfectly meets a lousy specification is a lousy program" - Cem Kaner
完美地实现了一个傻逼需求的程序,依然是一个傻逼程序。
(合格的程序员不应该只考虑how,当发现做一件事的why就不对的时候,要勇敢站出来说no)
#2015/02/16
"Goddamnit, Morpheus. Not everyone believes what you believe!"
"My beliefs do not require them to."
(这段对白来自《黑客帝国2:重装上阵》)
“TMD,墨菲斯,不是所有人都相信你所相信的!“
“爱信不信,反正我是信了。”
#2015/02/15
Don't believe anything is actually working until there are tests. —— Nicholas C. Zakas
在测试通过之前,不要轻信一样东西已经好使了。
#2015/02/13
Superstition has no place in programming
程序的世界里不应该有迷信。
#2015/02/12 "Beware of your "firefighters," they are probably your chief arsonists" - Milt Bryce
小心你的“救火员”,他可能就是那个纵火犯。
(这句话的深意,也许只有经历过才能体会。)
#2015/02/11 "Software is Too Important to be Left to Programmers"
软件这么重要的东西,岂能全靠程序员。
(软件开发不只是编程的事,编程实际上在软件开发中扮演的角色最多1/3)
#2015/02/10
"The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.” —— Edsger W. Dijkstra
优秀的程序员很清楚自己脑力的局限,所以他们以谦恭的态度做事,像躲避瘟疫一样躲避耍小聪明的技巧。
#2015/02/09 "I think most programmers spend the 1st 5 yrs of their career mastering complexity, and the rest of their lives learning simplicity" ——Buzz Anderson
“(我认为)大部分程序员在职业生涯的前五年学会的是把事情搞复杂,然后在之后的日子里才学会追求简单。”
#2015/02/07 Quality means doing it right when no one is looking. - Henry Ford
没人盯着你,你依然能够把事情做好,这才叫有质量。——亨利.福特(福特汽车公司的创始人)
(换言之,测试不能保证软件质量,很多软件发布了,看起来没问题,其实内部一坨屎)
#2015/02/06 "If you don't like unit testing your product, most likely your customers won't like to test it either."
要是连你都不喜欢单元测试自己的产品,几乎可以肯定,你的客户也没法喜欢尝试你的产品。
(这里第一个test可以翻译成“测试”,但第二个似乎更合适翻译成“考验”或者“尝试”)
#2015/02/05 "Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers" - Alan Perlis
每个人都可以学怎么雕刻东西,但是要达到米开朗基罗的水平,就要学会如何不去雕刻一些东西,对超级程序员也是一样的道理。
#2015/02/04 It takes an education to achieve true stupidity.
真傻逼是被教育出来的。
(若遵循人的天性和直觉,可能没那么多傻事,倒是不正确的教育,误导了很多人的头脑,制造了真傻逼)
#2015/02/03 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way. ——@klortho
(开始设计产品的之前)先问你自己:“没有电脑我怎么人肉干这件事?”然后,再让电脑用同样方法做这件事。
#2015/02/02 "Ship early, ship often, sacrificing features, never quality" - Kyle Neath
尽早发布,尽快发布,可以牺牲掉功能,但是绝不要牺牲质量。
##2015/01/31 "Adding manpower to a late software project makes it later.” —— Brook’s Law
往一个已经延误的软件项目里面增加人力,只会让它更加延误。
(整本《人月神话》,一半都是用来讲这个道理)
##2015/01/30 "The sooner you start coding, the longer it's going to take."
开始动手编码越早,编码花费的时间越TMD长。
##2015/01/29 "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil" Knuth, Donald. Structured Programming with go to Statements, ACM JournalComputing Surveys, Vol 6, No. 4, Dec. 1974. p.268.
“我们应该不要去搞小的性能改进,可以这么说,97%的情况下,太早考虑性能优化问题就是罪恶之根源。” ——高德纳
##2015/01/28 "Simplicity is prerequisite for reliability.” —— Edsger W. Dijkstra
简单是可靠的前提。
##2015/01/27 “A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work.” —— John Gall
任何一个能运转的复杂系统,总是从一个能运转的简单系统进化来的,反之,一个最初就复杂的系统,就根本没机会进化为可运转的复杂系统。
##2015/01/26 Software that is difficult to reason about is a more fertile breeding ground for bugs than software that is simple. —— http://jscomplexity.org/complexity
难以讲清道理的软件,比容易讲清道理的软件更容易成为bug的温床。
##2015/01/24(morgan)
虽然都说不该重复发明轮子,但是如果不重复发明轮子,现在用的还是木头轮子。
##2015/01/23(morgan)
越是复杂的设计,越是可能会有频繁的修改;越是简单的设计,越不容易招来频繁的修改。
##2015/01/22 “So much complexity in software comes from trying to make one thing do two things.” ——Ryan Singer
好多软件中的复杂度,都是企图让一样东西做两件事导致的。
##2015/01/21 "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius – and a lot of courage – to move in the opposite direction.” — Albert Einstein
“任何有点神智的傻瓜,都可以让事情变得更臃肿、更复杂、更粗暴,要向做到相反的结果,就需要一点天赋,还需要巨大的勇气。”——爱因斯坦
##2015/01/20 "A good product allows its users to build a mental model of what it does and how it does it.” —— Jean-Louis Gassée
一个优秀的产品,可以让用户清楚该做什么为什么这么做。
##2015/01/19 Software sucks because users demand it to. — Nathan Myhrvold
“软件烂,是因为它的用户要求让它烂。”
##2015/01/17 If you can't write it down in English, you can't code it. —— Peter Halpern
如果你不会写英文,你也肯定没法写代码。
##2015/01/16 “Code never lies, comments sometimes do.” — Ron Jeffries
代码绝对不会说谎,注释倒是有时候会撒谎。
##2015/01/15 "If you’re willing to restrict the flexibility of your approach, you can almost always do something better.” —— John Carmark,ID公司创始人之一,Doom和Quake游戏的作者
只要你愿意降低灵活度,那么你总能够做得更好。
(今天买一送一) “对于一个之前接触过BASIC语言的学生,你基本上不可能教会他如何正确的编程:因为作为一个程序员苗子,他们已经脑残,无可救药。” —— Dijkstra
##2015/01/14 "Controlling complexity is the essence of computer programming.” ——Brian Kernighan
编程的核心,就是控制复杂度。
##2015/01/13 "Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it." —— Alan Perlis, First recipient of Turing Award
傻逼忽略复杂度,实用主义者忍受复杂度,有的人可以避免复杂度,牛逼人会移除复杂度。
##2015/01/12 "Naming is the most difficult part of programming; coming up with sensible commit messages is a close second" - @headinthebox
命名是编程中最困难的部分,提交代码时填写合理的备注第二难。
##2015/01/10 “我知道就是知道,不知道就是不知道,不能装。”——《一步之遥》
##2015/01/09 “A clever person solves a problem. A wise person avoids it.” -- Einstein
“脑袋里有智商的人解决问题,脑袋里有智慧的人避免问题。”——爱因斯坦
##2015/01/08 "Excellence is not a skill. It is an attitude." - Ralph Marston
卓越不是技能,而是态度。
##2015/01/07 “I don't care if it works on your machine! We are not shipping your machine!” —— Vidiu Platon
别TMD再说“在我的电脑上好使的”这样的屁话,我们又不是连着你的电脑一起卖。
##2015/01/06 “When debugging, novices insert corrective code; experts remove defective code.” -R. Pattis
Debug的时候,菜鸟程序员会添加新代码矫正当前的错误,专业程序员则会找到有问题的代码把它们删掉。
##2015/01/05 "Life is the art of drawing without an eraser.” ——John W. Gardner
人生就是一款不能存档读档的游戏。
##2015/01/04 "Being a developer is like playing Tetris: Your accomplishments disappear and all of your mistakes build up until U fix them"
开发者的工作就像是玩俄罗斯方块,你的成绩消失于无形,但是你犯过的错误会累积起来,直到你把它们修了。
##2015/01/03 “I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.” --Bruce Lee
我不怕练过一万种踢法的人,我只怕一招练过一万次的人。——李小龙
(这句应该可以用中国古话来翻译:不怕千招会,就怕一招精。)
##2014/12/31 “Small, incremental steps are the only safe path forward.”——Zero to One
一小步一小步往前走,是唯一安全的前进方法。
##2014/12/30 “Plans are worthless, but planning is everything.”
计划屁用没有,但是指定计划的过程是不可或缺的。
##2014/12/29 "If you have too many special cases, you are doing it wrong" - Craig Zerouni
如果你要处理很多“特殊情况”,说明你TMD做错了。
##2014/12/28 “The best make the problem look easy to solve. The rest celebrate solving the problems they create.”
最牛逼的人让问题看起来容易解决,其余的人,只会自欺欺人地庆祝解决了自己创造的问题。
##2014/12/27 "When the final design seems too simple for the amount of work you've put in, then you know you're done" - Brady Clark “当最终设计看起来简单得对不起你投入的巨大工作量,说明你搞定了。”
##2014/12/26 "A good enough first version will take longer to produce with $170K than it would have with $0K" - Jason Fried
“做出一个足够好的第一版本产品,用17万来做花费的时间,要比一分钱不花长得多。”
##2014/12/25 "A design remedy that prevents bugs is always preferable to a test method that discovers them"
预防bug出现的设计方法,总是要好过找到这些bug的测试方法。
##2014/12/24 "I'm not a great programmer; I'm just a good programmer with great habits" - KentBeck
“我不是一个了不起的程序员,我只是一个还不错的程序员,但是我把了不起的编程习惯付诸实践。”
##2014/12/23 "The purpose of software engineering is to control complexity, not to create it" - Pamela Zave
软件工程的目的,是控制复杂度,而不是创造复杂度。
##2014/12/22 "Don't automate an undisciplined workflow. The computer won't solve what the customer's management can't"
别想自动化一个没有规矩的工作流,客户都管理不了的一坨事情,计算机一样管理不了。
##2014/12/20 “There are only two hard things in Computer Science: cache invalidation and naming things.”
计算机科学只有两件事比较难:什么时候把缓存清空,怎么给东西命名。
(这一天买一送一)
“It’s not just what it looks like and feels like. Design is how it works.”
设计不只是操心产品长得什么样,而是操心产品如何工作。
##2014/12/19 "Everyone thinks of changing the world, but no one thinks of changing himself"
每个人都想着改变世界,就是没有人想着改变自己。
##2014/12/18 "Be nice to nerds. Chances are you'll end up working for one" - Bill Gates
“对二货好一点,没准哪天你要给哪个二货打工呢。”
##2014/12/17 "A developer being scared of the command line is like a cyclist being afraid of bikes"
一个害怕命令行的开发者,就像是一个害怕自行车的自行车手。
"Throw away your bag of tricks. Be truly clever: Write boring code"
扔掉你收集的那袋子“技巧”,做真正聪明的事:写枯燥的代码。
##2014/12/16 "If programmers got paid to remove code from sofware instead of writing new code, software would be a whole lot better"
如果程序猿按照删代码的行数算工资,而不是按照写代码的行数算,那写出的软件会好很多。
##2014/12/15
"I'm hoping our software strategies are boring to you, because they're not changing every year, ... That is our strategy" ——Steve Jobs
我希望我们的软件策略对你们而言很枯燥,因为我们每年也没改变这个策略...这就是我们的策略。