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.

最新文章

  1. 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码
  2. 解决Android调用https服务API时出错的问题
  3. WCF之初体验
  4. 打开WEBBROWSER的选中文件路径
  5. 深入探讨:LBS是一种工具而非一种模式
  6. C#使用xpath找到一个节点
  7. temp-内外网同时上的例子
  8. linux命令指usermod(管理用户以及权限的命令)
  9. 【差分+前缀和】BZOJ1637: [Usaco2007 Mar]Balanced Lineup
  10. CSS3布局之多列布局columns详解
  11. Android Studio安装时候遇到HAXM问题
  12. 二、fread与fwrite
  13. MySql使用笔记
  14. s21day04 python笔记
  15. Windows 8风格应用-触控输入
  16. 如何将同一云服务下的虚拟机从经典部署模型迁移到 Azure Resource Manager
  17. [转载]使用SQL Server 2008的事务日志传送功能备份数据库(logshiping)
  18. scala单元测试,包括功能测试和性能测试
  19. Hadoop基础-Protocol Buffers串行化与反串行化
  20. 【Python】通过python代码实现demo_test环境的登录,通过csv/txt/excel文件批量添加课程并开启课程操作--(刚开始 项目 页面 模块 元素这种鸟 被称作pageobject 等这些搞完 然后把你的定位器、数据 和脚本在分离 就是传说中那个叫数据驱动 的鸟)

热门文章

  1. AtCoder Grand Contest 019 F-yes or no
  2. 【二分】【动态规划】Gym - 101156E - Longest Increasing Subsequences
  3. Beego 和 Bee 的开发实例
  4. SQL SERVER中获取表间主外键关系
  5. yyyy-MM-dd HH:mm:ss is Invalid Date in Safari, IE等浏览器下
  6. gridview DataFormatString 属性设置须知
  7. 亚马逊API的使用
  8. c#开发地磅称重软件
  9. JDBC 连Sql Server 接数据库--The TCP/IP connection to the host localhost, port 1433 has failed
  10. C#编程(十一)----------C#编程规范