What is the difference between Hacking and programming? One opinion I have heard expressed is that a hacker can put a lot of code together in a hurry but if a change is needed the code has to be completely rewritten. A programmer may take a little longer but if changes are needed they are more quickly and easily installed without the need for a complete rewrite. One source I heard attributed an observation like this to Maggie Johnson of Google. It rings true to me though. Hacking is usually described as “quick and dirty.” You though a bunch of code together and make it up as you go along. Some hackers are quite brilliant and can do amazing things in incredibly short periods of time. And then they move to the next thing. Or perhaps they stay with the same thing because no one else can understand it well enough to fix it, modify it or improve it. Job security? Perhaps but not a good thing for the people who use, or importantly pay for, the software.
I do a little hacking – that is to say toss something together in a short period of time without a lot of planning – from time to time. I’m not a genius though and typically this ends poorly. The performance is poor, the maintainability is poor, and no one else wants to use it. This may make be biased against this way of doing things I guess. I prefer to program – to think things out, to plan, to proceed in an organized fashion. I saw the difference made clear to me my first year of teaching (a long time ago). I was working on a little game programming of my own and decided to show it to some of my students. As I explained how I had set things up around a number of constants that is hoped would make the program more easily expandable one of the students turned to another and said “Look at that. He’s just starting and already he is planning for additions.” That is one of the real keys, in my opinion, to real programming.
I was a major in Systems Analysis in college. This was during a time when computer science majors were rare and software engineering majors rarer still. But one of the things my professors drilled into our heads was that programs had to be maintainable and extensible. We were taught from day one that programs are not finished but, in a sense, abandoned. More likely at some point you declare victory and more on. But others will maintain these programs and expand them and adapt them. Making their lives easier is a good thing. Think of the Golden Rule – program was you would want the programmers whose code you are modifying to have programmed. I think that is how it is written.
The hackers get a lot of attention these days. These are the basketball players who make the slam dunk that makes it to the highlight reel. But basketball games are won by teams of players executing on the basics – the solid play well executed, the dribble, the layup, the pass that gets the ball to the star. In the long run we need more real programmers to make solid, dependable programs that don’t have be be rewritten from scratch when a change is needed.
I think hacking is great for throwaway code and proof of concepts. It's a great way to learn the intricacies of a problem before a serious attempt at it, however, hack code should never leave your machine. Imagine our world if civil engineers and architects released 'hack buildings'.
Real programmers don't like to release hack code. I can't fathom how anyone could possibly be proud of bad code, just because they got it done quickly.
Nice article. I enjoyed your take on the topic
Definitely a valid perspective. Some people that "hack together" a large PoC or something to that effect in a short period of time do have some concept of logical design. I, for example, mused about a topic for about 3 weeks writing down ideas without really focusing on code, classes, code flow diagrams, or anything of that ilk. Then cranked out about 1200 lines of python in about 3 days, and it works as expected. Not sure which one this falls under though. Just thoughts...
John Romero - famous for incredibly fast code output and game innovation.
Great comments, and pretty much echo my own thoughts. I would also propose that the 'hackers' of this world, although being able to produce something quick, also cheapen the whole product. Then, because of that, the business owners of the world say, hey, if I can get something 'almost good enough' for a lot less than 'good', then i dont need to pay these people as much, or hire as many. so, lots of unintended consequences for our profession allowing hackers to play in the real world for such a long period of time
This is interesting. I like this.There are so many difference between hacking and programming.I think real programmer do not like to release hack code.
i like this hacking and i willing to learn the how to hacking the softwares? if u willing just tell me, how it is?