Reinvent the Wheel Often
Reinvent the Wheel Often
Jason P. Sage
Just use something that exists—it’s silly to reinvent the wheel….
HAVE YOU EVER HEARD THiS OR SOME VARiATiON THEREOF? Sure you have! Every developer and student probably hears comments like this fre- quently. Why, though? Why is reinventing the wheel so frowned upon?
Because, more often than not, existing code is working code. It has already gone through some sort of quality control and rigorous testing, and is being used successfully. Additionally, the time and effort invested in reinvention are unlikely to pay off as well as using an existing product or codebase. Should you bother reinventing the wheel?
Why? When?
Perhaps you have seen publications about patterns in software development, or books on software design. These books can be sleepers, regardless of how wonderful the information contained in them is. The same way that watching a movie about sailing is very different from going sailing, so too is using exist- ing code versus designing your own software from the ground up, testing it, breaking it, repairing it, and improving it along the way.
Reinventing the wheel is not just an exercise in where to place code constructs: it is about how to get an intimate knowledge of the inner workings of various com- ponents that already exist. Do you know how memory managers work? Virtual paging? Could you implement these yourself? How about double-linked lists? Dynamic array classes? ODBC clients? Could you write a graphical user inter- face that works like a popular one you know and like? Can you create your own web-browser widgets? Do you know when to write a multiplexed system versus a multithreaded one? How to decide between a file- or a memory-based database?
144 97 Things Every Programmer Should Know

Most developers simply have never created these types of core software imple- mentations themselves and therefore do not have an intimate knowledge of how they work. The consequence is that all these kinds of software are viewed as mysterious black boxes that just work. Understanding only the surface of the water is not enough to reveal the hidden dangers beneath. Not knowing the deeper things in software development will limit your ability to create stellar work.
Reinventing the wheel and getting it wrong is more valuable than nailing it first time. There are lessons learned from trial and error that have an emotional component to them that reading a technical book alone just cannot deliver!
Learned facts and book smarts are crucial, but becoming a great programmer is as much about acquiring experience as it is about collecting facts. Reinventing the wheel is as important to a developer’s education and skill as weightlifting is to a body builder.
Reinvent the Wheel Often的更多相关文章
- 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...
- 2016-2017-2 《Java程序设计》预备作业2总结
2016-2017-2 <Java程序设计>预备作业2总结 古希腊学者普罗塔戈说过:「头脑不是一个要被填满的容器,而是一束需要被点燃的火把.」 在对计算机系的学生情况的调查中,我说: 最近 ...
- What technical details should a programmer of a web application consider before making the site public?
What things should a programmer implementing the technical details of a web application consider bef ...
- Introduction ch3
[1] Don’t reinvent the wheel; use libraries.[2] Don’t believe in magic; understand what your librari ...
- tornado 学习笔记2 Python web主流框架
2.1 Django 官方网址:https://www.djangoproject.com/ 简介:Django is a high-level Python Web framework that e ...
- Stream Processing for Everyone with SQL and Apache Flink
Where did we come from? With the 0.9.0-milestone1 release, Apache Flink added an API to process rela ...
- Three Sources of a Solid Object-Oriented Design
pingback :http://java.sys-con.com/node/84633?page=0,1 Object-oriented design is like an alloy consis ...
- 解密程序代写,订制服务qq:928900200
CS461 MP 1: Due Wednesday 09/17 by 11:59 pm Fall 2014\Anyone, from the most clueless amateur to the ...
- [Under the hood]---Matt Pietrek October 1996 MSJ
Matt Pietrek October 1996 MSJ Matt Pietrek is the author of Windows 95 System Programming Secrets (I ...
随机推荐
- android 注册广播接受者
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 动态注册 静态注册 动态注册是 通过java代码,注册. 静态注册 是xml清单文件中 ...
- 线性表之单链表C++实现
线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...
- 【20181103T1】地球发动机【dp优化】
题面 一眼dp 设\(f_i\)表示前\(i\)个且\(i\)必须选的最大功率 有 \(f _i= max_{1 \leq j < i,A_i - A_j > X_j} \{f_j \}+ ...
- [POI2015]Logistyka
[POI2015]Logistyka 题目大意: 一个长度为\(n(n\le10^6)\)的数列\(A_i\),初始全为\(0\).操作共\(m(m\le10^6)\)次,包含以下两种: 将\(A_x ...
- hdu 3613 扩展kmp+回文串
题目大意:给个字符串S,要把S分成两段T1,T2,每个字母都有一个对应的价值,如果T1,T2是回文串(从左往右或者从右往左读,都一样),那么他们就会有一个价值,这个价值是这个串的所有字母价值之和,如果 ...
- codecombat js
#1 // Move to the gem. // Don't touch the walls! // Type your code below. this.moveRight(); this.mov ...
- .NET面试宝典-高级2
http://blog.csdn.net/shanyongxu/article/category/6023593 对于 Web 性能优化,您有哪些了解和经验吗? 1.前端优化 (1)减少 HTTP 请 ...
- linux下插入的mysql数据乱码问题及第三方工具显示乱码问题
一.lampp环境下的数据库乱码问题 问题描述: 在做mysql练习的时候发现新创建的数据库中插入数据表中的记录中文出现乱码的问题,如下图: 经过多方查证,整里如下文挡: 前提: 我自己的环境是使用的 ...
- MFC中添加ToolTip提示框
PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...
- java跨域解决
import java.util.ArrayList; import java.util.List; import org.springframework.context.annotation.Bea ...