Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Yeah, I hear all the popular wisdom about not re-inventing the wheel. It may be allowed that making some tiny wheels from scratch is good practice for beginners, but generally in real life, we shouldn't do anything of the sort.

But there are some of us who really believe that a big bloated unmaintainable mess should be chucked and something better made. Honestly, it takes me more time to figure out where in the existing source code of a component to make a small change, than it would take to just write a new whole new component from scratch in a better suited language and organized more sensibly. (How many of you ever had that thought?)

Not only that, but the kind of work I normally do, for which I get the most pay, praise, and am less likely to get fired from, is building new libraries, components, algorithms and such from scratch that app programmers can incorporate into their projects. If put in charge of a whole app (and I'm not much of an app developer) I tend to redesign some of the more annoying wheels (the square and triangular ones) so the whole thing is more the kind of vehicle the users want. I usually end up working more on the wheels than the whole.

I'm a wheelmaker, plain and simple. I can always make a new wheel that's rounder, or less weight for the same strength, than any existing wheel (at least within my domain of expertise).

I'm in a position to change jobs this summer. How should this wheelmaker's trait influence my job hunt, elevator pitch, portfolio and resume tweaking, to successfully hook up with an organization that needs wheelmakers, and avoid those who looking for someone to work within existing legacy code (my current job)?

share|improve this question

closed as off-topic by gnat, Giorgio, MichaelT, Kilian Foth, GlenH7 Oct 18 '13 at 13:43

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT, Kilian Foth, GlenH7
If this question can be reworded to fit the rules in the help center, please edit the question.

2  
How long have you been working as a software developer? –  whatsisname Mar 25 '11 at 17:51
10  
Every developer is best at writing things from scratch. I suspect, though, that the most valuable and sought-after developers are the ones who can make sense of other developers' crap. You will always need this skill, even if you are building new wheels, unless you plan on being the sole developer at a company (an unlikely scenario). –  Robert Harvey Mar 25 '11 at 18:10
1  
Perhaps you want to work on frameworks rather than tools that use them. –  Job Mar 25 '11 at 18:34
1  
Joel has some good advice on the subject. joelonsoftware.com/articles/fog0000000069.html –  P.Brian.Mackey Mar 25 '11 at 19:17
1  
Taking a big bloated mass of spaghetti code, and then writing something better is not reinventing the wheel - this is progress. –  HorusKol Mar 26 '11 at 3:46

6 Answers 6

up vote 3 down vote accepted

You may target:

  • R&D engineer
  • Infrastructure developer

Some organizations have several levels according to your experience.

share|improve this answer

You don't say which wheels you are reinventing: bumpy in-house wheels, or standard off-the-shelf wheels used by many organizations. Generally, when we say "don't reinvent the wheel", we mean that you should not re-implement standard off-the-shelf components like object-relational mappers, databases, and library classes.

It is often the case that some existing in-house code is so tangled that the fastest thing is to just start fresh. That's not "reinventing the wheel", that's trash removal. Just make sure that you understand all the requirements of the code you intend to replace.

share|improve this answer
    
+1 for "trash removal" –  dsimcha Nov 18 '11 at 18:28

One option would be small companies that are just getting started, don't have tons of process, and don't yet have tons of legacy code. You take on the risk of less security (since the company may go under) and probably other irking factors, like ugly buildings (think basements and office space no one else would rent) and low resources (e.g., you might have to be creative about using your hardware well), but get to do things "your way". Other perks include generally casual environments and getting to be more involved in more pieces of development. You may also receive perks like profit sharing / stock, which will be nice if the company does well.

I generally feel the same way you do, and have made a niche for myself by aiming for these work environments.

share|improve this answer
    
Yeah, been there and done that. In such a job is where I discovered that many off-the-shelf libraries are crap, failing to be designed for one's particular situation. But then, that was back in the 8086 days. –  DarenW Mar 25 '11 at 20:39

Depending on your experience and how deeply you mean scratch, I'd be tempted to suggest working for consulting companies that help customize big enterprise software for companies. For example, you could work on customizing Sitecore 6.0 for some new dot-com and instead of having to maintain the bloated mess you move on to the next client which is likely wanting to build something new rather than try to recycle. Course this presumes that the scratch isn't wanting to write the machine code directly and that using some platforms and frameworks already out there suits you.

In a way you seem to be suggesting that you don't want to work in support and maintenance aspects of things and would prefer working with new stuff rather than dealing with legacy projects. There may be a more polite way to describe that though I'm not sure exactly what that would sound like.

share|improve this answer
    
"how deeply you mean scratch" - well, i started off with shoving tiny DIP switches and watching LEDs. Ah the good ol' days... –  DarenW Mar 25 '11 at 20:43
    
from my experience of such consultancies, you'll be rewriting the mess your predecessor left you, and your successor will rewrite the mess you leave. There's big money to be made prolonging this situation.... –  gbjbaanb Feb 8 '12 at 18:42

Generally speaking software development isn't about recreating the wheel... as often there isn't any money in this. That being said I'm sure there are a fair amount of jobs looking for programmers to optimize their products (though I haven't personally looked). I'd be willing to bet however at the very least you'll be severely limiting your options and may be reducing your pay grade from what you would be able to get in R&D jobs for example. Of course there are always exceptions to every rule.

EDIT: Along with there being no money in re-inventing the wheel in most cases, a good portion of the time it is quicker to utilize some existing library or solution which many companies prefer as its already difficult enough to deliver products quickly.

share|improve this answer

Believe it or not, there are organizations that value that kind of reasoning. You'll just need to sense it when interviewing. Or just ask something like "Is NIH syndrome considered bad here?"

share|improve this answer
    
Which organizations? Mostly in particular industries? –  DarenW Mar 25 '11 at 20:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.