We’ve all been there – we’ve reached the top of our current skills. We’ve met every expectation and conqured every issue in front of us. We are masters of our domain and no problem seems too difficult. This is the worst position you can be in. No really, trust me on this one. As soon as you become complacent in your practices, you’re doing something wrong.
One of the key things that separates great developers from good developers is their capacity to learn. Good developers will learn how to do something and know it well. They’ll be content in their knowledge of how to debug a script a certain way or refactor their applications to follow a pattern they know well. Great developers, on the other hand, take that next step and grow. They leave their comfort zone in the dust and look to the future to find out how they can conquer the next hurdle in an elegant and constructive way. They’re the ones constantly improving themselves, working to make themselves and their code a better place to work and play. They see challenges in their development as things to innovate around not just as problems to solve with a certain equation. Their joy is in flexible, resilient code that can adapt to any situation and can make not only their lives simpler but the lives of those down the line easier and less complicated.
Innovation is the key here – any developer can cut and paste examples from other website to make things work. In fact, there’s a whole crop of developers out there that do nothing but this. They don’t innovate, they don’t learn – all they do is take the information they find and regurgitate it back into their code. As you can imagine, this is a very, very bad practice and can only lead to code that’s both difficult to maintain and hard to extend.
Be careful – don’t let your past accomplishments make you lax in your development. It’s easy to fall into the trap that successful code can lay. You see things working and the code seems solid so you go along your merry way and do the same on future projects. The only problem with the situation is the innovation – no two software projects are the same and no matter how similar they seem to be, code without innovation is no code at all. You learn something from each implementation and this new knowledge should be applied to every new project you encounter. Reusing code is good, updating it to reflect the knlowedge you’ve learned is even better.
Don’t be complacent in your development – learn, grow and use this knowledge in your future development. If you don’t, you’re only hurting yourself. Learning is good, applying is better. Constantly learn and innovate. This is the only true way to be a better developer. Period.
I know what u mean and can certainly identify with u
Something which may provide insight into ur observation is the Dreyfus model of skills acquisition. Dreyfus recognises 5 stages of learning a skill (programming, cooking, football, whatever) viz. beginner, advanced beginner, competent, proficient, expert
Dreyfus finds that progression from beginner to competent is a linear progression and if i’m quoting correctly it also infers that everyone almost always makes this progression to competency by on-the-job experience usually without a deliberate attempt to learn more. Punch line is coming…
Its in moving from competency to proficiency that requires a DELIBERATE step by the individual to graduate to the next stage viz. proficiency
This is what i imagine ur talking about?
Why DON’T so many devs got off their lazy butts and deliberately become proficient?
IMO (its not humble :-)) is that there are 2 reasons
1. The developer is not self-aware of his skill level but if made aware would wake up and start learning (deliberately)
2. The developer is absolutely self-aware of his skill level and doesn’t care to progress further
The former is forgiveable but the latter is just EVIL. Again, in my not so humble opinion 🙂
LikeLike
Been there. It’s hard to get back to being innovative. Especially when you’ve been complacent for over a year.
LikeLike
You speak the truth. 🙂
LikeLike
Hello Chris,
I think you should consider the environment a php developer works in. Take some companies that have the soul purpose of making money: that is the best place you can get complacent.
We’ve all been there, and not one time unfortunately. Staying cutting edge does take time, quite a lot even but as far as I am concerned it is well worth it. The biggest mistake isn’t being complacent with yourself, I think, but rather being an “I know it all” kind of guy.
Great article though, congrats on all your efforts.
LikeLike
@stelian Agreed, it doesn’t always have to be sitting down and learning a new skill. Sometimes it’s enough to just rearrange your thinking and, like you said, stop thinking of yourself as a Know-It-All. No matter how much you know about a topic, there’ll always be someone that knows that knows more 🙂
LikeLike
A good thing, as far as I would tell, is to focus on expertise areas: want to grow up a developer, stick to it. Nowadays I see more and more guys coming to job interviews without a clear focus. They like the whole development ideea, they also like front-end, they also like user experience and so on.
Technology travels quite fast and keeping track with all of these is more or less impossible. The ideea is to focus on what you like best and be good/better/the best at it.
LikeLike
LE: how about a nl2br? rather hard to read longer comments like this 😦
LikeLike
In addition to not building on to your skills I personally find doing the same old stuff boring. It’s way more fun and rewording to work on something that’s new to you. If I didn’t dabble in or adopt new technologies I would get really bored programing.
LikeLike
On the contrary I’d argue that re-inventing the wheel often creates bad code.
LikeLike