The Curse of Being a DevelopersteemCreated with Sketch.

I am a software developer, and many people I speak with tell me how lucky I am of being able of doing everything myself. If I have an idea I can define, prototype and implement the whole thing.

There is a problem with that, though. I don't prototype. And chances are, if you're a developer, you don't do either.

I think people have a tendency of working always at their higher level. As it has been said many times, simplifying is difficult, and purposefully downgrading yourself is quite unnatural. That's why I don't prototype, because I have a tendency of thinking something will be “easy”. But inevitably things start getting complicated and something I could have spotted with a simple prototype becomes a problem I am working on (and wasting my time on). I reckon there is a problem there, and my goal in this writing is to analyze the problem and start making an effort to improve my approach.

Let's analyze why this is bad

First, it delays the completion of the first milestone for your project, which should be getting feedback to validate the potential of the idea. That is, unless you know for a fact that your project will be a success, which I doubt you really do. Anything that isn’t aimed towards the goal of getting feedback must be avoided when possible. The only reason why you would do something now is because you think it will save you some time in the future: “Let's implement that so that we can use it later”. And I can assure you the feedback you can get from a simple prototype far exceeds any time savings you can get from code reusage. It will not only tell you if the idea is good or not, you will even change entire features which will make your “reusable code” completely useless.

Another excuse you tell yourself is that you simply “like doing it”. Prototypes are boring. That is true to some degree, but do you really want to systematically implement everything and anything just because you enjoy it? That's what I used to do, and it brought me to this realization that I never prototype. It's a bad habit that shouldn't be the default approach. If you really do it for the sake of programming, I recommend other type of activities that are more enjoyable and have a framed time of dedication (which prevents you from over-complicating things from the start).

Finally, there is the fact that your programming skills are a valuable asset of yours. You shouldn't be wasting them away for nothing. When you start working on a project, make sure you’ll get something from it. That's something The Joker and Randall Munroe know well.

So then, what is a prototype?

I hope I've convinced you (and myself) that prototyping is the way to go. So, then, what is a prototype? As I understand it, a prototype is designed to get you feedback about an idea. That's it. The feedback may be different in each scenario: it can be feedback about the correctness of the idea (does it really solve the problem?), it can be reactions of potential customers to some product, it can be an estimation of the appropriate pricing, a search for the correct market, etc.

In any case, this prototype will probably be something anyone could do, without having any programming skills. It can be some hand drawn wireframe, a market study, a landing page or even a simple explanatory text (you know, an elevator pitch). And I am also sure there are thousands of applications better for creating prototypes rather than an IDE or text editor.

So, next time you eagerly open your IDE or text editor ready to start your next project, think twice about it.

This a slightly updated post originally published in my blog December 3rd, 2014. I have improved my approach since then and of course some of my opinions have changed, but I still think this post is valuable at its core so I hope it can serve you. If nothing else, as food for thought.

Coin Marketplace

STEEM 0.19
TRX 0.14
JST 0.030
BTC 60907.24
ETH 3249.66
USDT 1.00
SBD 2.45