`
- 浏览:
1097942 次
- 性别:
- 来自:
北京
-
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" 指示了这是一个在Python Package Index (PyPI)上发布的软件包,名为"lesser",版本为0.0.2,其分发形式是tar.gz压缩文件。PyPI是Python开发者发布自己编写的Python...
"lesser-theme"是一个针对WordPress的次级主题,它被设计为在"文凭项目"中使用。次级主题(Child Theme)是WordPress提供的一种机制,允许用户在不修改原始主题(Parent Theme)代码的情况下进行定制。这种做法的...
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 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 ...
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
扁颅蝠(Tylonycteris pachypus)是一种非迁徙性的亚洲蝙蝠物种,它们通常在竹茎内部的小群体中栖息,而它们的栖息地是碎片化的。扁颅蝠的小尺度遗传结构研究对于我们理解种群遗传结构的进化过程以及保护遗传学具有...
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 ...
该软件遵循GNU Lesser General Public License v2.1,允许用户自由分发和修改源代码,但不提供任何明示或暗示的商业保修。 本教程将引导你完成JadeAndroid的安装、运行和聊天应用的构建过程。 ### 2. 安装与运行...
For example, while most people know the word "champion" to mean a winner, the book emphasizes its lesser-known meaning, which is to support or fight for someone else. #### The Structure of the Book ...
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
- **Overview:** Focused on Adobe Photoshop, this chapter reveals lesser-known features and techniques that can help web designers save time and improve efficiency in their work. #### The Art of Film ...
- **CPU Instructions Often Missed**: Discussing lesser-known CPU instructions useful for bit manipulation. 2. **Permutations and Their Operations** (Chapter 2): - **Basic Definitions and Operations...
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编写脚本。