`
- 浏览:
1080957 次
- 性别:
- 来自:
北京
-
Some lesser-known truths about programming
My experience as a programmer has taught me a few things about writing software. Here are some things that people might find surprising about writing code:
A programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level. Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work.
“A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.” –Bill Gates
A good programmer is ten times more productive than an average programmer. A great programmer is 20-100 times more productive than the average. This is not an exaggeration – studies since the 1960′s have consistently shown this. A bad programmer is not just unproductive – he will not only not get any work done, but create a lot of work and headaches for others to fix.
Great programmers spend little of their time writing code – at least code that ends up in the final product. Programmers who spend much of their time writing code are too lazy, too ignorant, or too arrogant to find existing solutions to old problems. Great programmers are masters at recognizing and reusing common patterns. Good programmers are not afraid to refactor (rewrite) their code constantly to reach the ideal design. Bad programmers write code which lacks conceptual integrity, non-redundancy, hierarchy, and patterns, and so is very difficult to refactor. It’s easier to throw away bad code and start over than to change it.
Software obeys the laws of entropy, like everything else. Continuous change leads to software rot, which erodes the conceptual integrity of the original design. Software rot is unavoidable, but programmers who fail to take conceptual integrity into consideration create software that rots so so fast that it becomes worthless before it is even completed. Entropic failure of conceptual integrity is probably the most common reason for software project failure. (The second most common reason is delivering something other than what the customer wanted.) Software rot slows down progress exponentially, so many projects face exploding timelines and budgets before they are killed.
A 2004 study found that most software projects (51%) will fail in a critical aspect, and 15% will fail totally. This is an improvement since 1994, when 31% failed.
Although most software is made by teams, it is not a democratic activity. Usually, just one person is responsible for the design, and the rest of the team fills in the details.
Programming is hard work. It’s an intense mental activity. Good programmers think about their work 24/7. They write their most important code in the shower and in their dreams. Because the most important work is done away from a keyboard, software projects cannot be accelerated by spending more time in the office or adding more people to a project.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
资源来自pypi官网。 资源全名:lesser-0.0.2.tar.gz
Discover lesser-known Python libraries that are easy to install and use, cross-platform, and applicable to more than one domain.
Explore lesser-known and more advanced features, constructs, and methodologies such as asynchronous channels, actors, logic programming, and reactive programming Measure and monitor performance, and ...
as well as lesser-known but equally powerful features that will ensure you become a top-level performant and professional user, able to jump between multiple sessions while manipulating and ...
Whether it’s a section on lesser-known C# operators, how to sort strings that contain numbers in them, or how to implement Undo, this book contains recipes that are useful in a wide variety of ...
Whether you are an experienced developer or a .NET novice, this book will help you be more productive, create better code, and produce superior software with the author's valuable, but lesser-known ...
小主题 WordPress的次级主题-文凭项目
In computer programming, paradigms abound: Some examples are imperative programming, structured (go to less) programming, object-oriented programming, aspect-oriented programming, and declarative ...
In computer programming, paradigms abound: Some examples are imperative programming, structured (go to less) programming, object-oriented programming, aspect-oriented programming, and declarative ...
leetcode中文版 Learning-Materials Basic learning route 4 NETSEC. 根据个人情况学习,已经会了的部分...lesser-known features. 6. TCP/IP网络理解 计算机网络基础 路由协议相关 《TCP/IP Routing》 7. Docker学习 D
扁颅蝠的扩散、交配事件及其小尺度遗传结构的研究,华攀玉,张礼标,种群遗传结构在动物的物种进化历程与保护遗传学方面有重要意义。而小尺度上的种群遗传结构则受到栖息地的景观模式、个体的永久性
In covering lesser-understood aspects of this powerful language and truly understanding how it works, your JavaScript code and programming skills will improve. You will learn about core ...
before moving on to discuss some of the lesser-used diagrams and charts such as Gantt Charts or Sankey diagrams. Initially it uses simple plots and charts to more advanced ones, to make it easy to ...
But in the world of logic it has a lesser-known twin, born at the same time, called the sequent calculus. Perhaps that would make for a good intermediate language, too? To explore this
School psychology services: Community-based, first-order crisis intervention during the Gulf war ...LESSER-KATZ, M. (1988). The treatment of elective mutism as stranger reaction. Psychotherapy, 25
SCOURGE是一款具有3D用户界面的流氓类游戏。 该游戏允许四个字符组成的组来搜索宝藏,杀死敌人,获得等级等。代码是使用SDL,OpenGL和freetype的C ++。 该游戏使用Squirrel编写脚本。
School psychology services: Community-based, first-order crisis intervention during the Gulf war ...LESSER-KATZ, M. (1988). The treatment of elective mutism as stranger reaction. Psychotherapy, 25
CLucene is distributed under the GNU Lesser General Public License (LGPL) *or* the Apache License, Version 2.0 See the LGPL.license and APACHE.license for the respective license information. Read ...
-- Lesser General Public License for more details. --> <!-- You should have received a copy of the GNU Lesser General Public --> <!-- License along with this library; if not, write to ...
Explore the lesser known and more advanced features, constructs, and methodologies of the Clojure language and its ecosystem, such as asynchronous channels, actors, logic programming, and reactive ...