Blog

Dec 13, 2011

Find, Refine, Reinvent

"Good artists copy, great artists steal" --Steve Jobs

The same can be said about programmers, although being held to a different standard.

For artists, their work is appreciated with the sensoratory system, while programmers have the luxury of having their code in the background, in a lot of cases requiring some reverse engineering to get a clear picture what it was to begin with.

I think this statement is as much as turning someone elses idea into your own as it is an ode to productivity.  Obviously if you can reuse your code, borrow and modify a function that would take hours to write, your going to reach project completion faster, and as such look better.

The only real difference that works against this idea is for an artist to steal, they usually have to have an immense amount of talent, replicating a classic painting for example requires hours of studying the strokes, experimenting with different washes or oils, it takes a highly skilled craftsman to pull it off well.

In the case of coding, more and more we see all out copy and pasting, and when auditing the code further it can become evident that there isn't that high skill involved, its merely combined plagarism.

The goal with producing anything is to improve yourself, and put your product out there to be criticized (that statement just resonated with my BFA degree a bit).  Its always okay to find a reference for something you are stuck on.  The mantra however should be find, refine, reuse.

FIND - Find the example code that best suits what you need to do.

REFINE - Refine your understanding of how it works, and more importantly, how it works in the greater scope of your project.

REINVENT - Anyone can copy and paste and modifying the existing code body to allow for the borrowed sample, craftsman can reinvent code, or look at the source for an idea of the logic involved and write something similar that matches the code body.

Without this attitude, we're settings ourselves up to have vulnerable code, much like using existing libraries, once someone finds a vulnerability in just one thing you've borrowed or included, they own your app.  Also, without developing and pushing that understanding of programming, nothing is gained.

Let's apply this a bit further.

Look at Microsoft.  Occassionally code vulnerabilities will affect almost every known version of Windows due to their reuse of libraries from decades ago.  While this reuse is likely to save time and money, reinventing those libraries every once and a while would cut down the risk substantially.

Comments

blog comments powered by Disqus