Monday 31 August 2015

Engineering A Developer



I'm willing to bet most of the people reading this who are developers rate themselves fairly highly, its a natural reaction, the output of our labours is out their for all to see, you have to develop a certain self confidence.
But is this self-confidence misplaced, well certainly it would have been when we all started out, development is a trade like any other you have to learn how to do it well.
I'm sure a lot of us began as enthusiastic kids who had the pleasant surprise of finding out that you could get paid to do this.
So how does this skill develop, where do we start from and where do we want to end up.
Hacking It Up
The first piece of code we produced, I'm deliberately not using the word wrote, was probably a bit of a mess with no real structure, we probably would have found it difficult to explain how it did what ever it did but it certainly did something.
At this stage were hackers, we can piece together fragments of code to get something working. We have a basic understanding of what it is programs do but very little appreciation for how they should do it, and what good software looks like.
The subtitles of syntax are lost on us and we wouldn't know a design pattern if it smacked us in the face. Actually most of the time were not actually writing much code ourselves but we're adept at smashing together other peoples.
But at this stage we've been bitten by the bug, our path is set, we're geeks and we want to know all the things.
Programming The Future
So we go away and study, we become fluent in one or more languages, we can reel off principles and patterns and we learn the phrase "You're doing it wrong!"
The skill we develop here is what carries us through the rest of our journey, we have become technically proficient we are developers, programmers, produces of software.
We also develop passion, our code is important to us, we will defend its honour, and god help the guy who tries to besmirch the artistry of what we've written by adding something of inferior quality. 
At this stage we may even be productive, we might think we've arrived but actually we have a flaw, we're all about the code.
Engineering The World
The final piece of development is that we need to gain an appreciation of why our skill is valuable, its at this point that we become engineers.
Engineers realise they are part of something bigger, they are part of a team producing products to put into real peoples hands.
Engineers realise technology is a tool, its part of the journey not the destination. The code is one element of what were doing but we also need analysis, design and testing as part of the process. 
Engineers learn the art of compromise, they develop an agile mindset, a healthy lazy attitude that realises if their working hard we might be building the wrong thing, or at least building it at the wrong time.
I would never suggest that a title is important, it doesn't really matter whether your called a programmer, developer or engineer. What's important is how you got their and what you think your purpose is.
At every stage we've learned a skill that will be utilised again and again, no matter how experienced we become we still occasionally hack something together, we still see a piece of code and think "you should have used a visitor pattern their", and we will always find occasions when we have to resist these urges and work with the rest of the team to produce what is necessary to satisfy the customer.
All I would ask is that you realise what we do is engineering, we may use different bricks and cement but all the knowledge built up by other engineering disciplines applies to our world to.
Embrace this and realise you write code for a reason, we build things, someone else very often will define what that thing needs to be, but we're the ones that make that vision a reality.  
     

No comments:

Post a Comment