As a contractor, I work with a diverse bunch of developers, some really good, some terrible and the majority in the middle. When I work on a project, I want to create something way above average.. the term I like to use is excellent. Has everything I’ve even made in my career been excellent.. far from it. I don’t think there is a developer alive who hasn’t shipped late and had to sacrifice quality to get it done in time. One of my worst projects was a project with a CMS platform that didn’t have out of the box caching. As soon as we shipped it live, a page load took 15-20 seconds. To fix it I had to create a bespoke caching solution that created html on the server, however, this meant the client could make instant changes which was far from ideal.
Striving for excellence is a noble goal and it’s something that only you can do. No one can force you to take more pride in your work, to spend extra time reading and learning to make you better at your job, or to think more objectively about how you approach things.
I’ve definitely been guilty of this early in my career. One big differentiator I’ve found comes from peer reviewing people’s work. You work on a task, some times rushing because your focus is on shipping, you finish it and in your head it’s done. In your haste you might have missed a unit test, you may not have named a few things as well as you could, you may have created some untestable code, you may have created a gigantic god method and when you get feedback about these mistakes the first thing you do is become defensive. You don’t take on the advice and you spend more time justifying it than you would have fixing it in the first place, as soon as it was pointed out.
I think this attachment to code can really hold people back. When I walk in the office in the morning, to when I leave, I’m there to add value and learn. I’ve read lots of books on development, spent countless hours of my life devoted to improving my skills, listened to hundreds of hours worth of podcasts, listened to blogs and even written quite a lot about it and not for a second do I think I know maybe 10% of everything I could know. It’s impossible for anyone to know everything in a field that rapidly changes as much as the development field does. Life changes so fast, new innovations, new techniques and patterns are constantly being released. So the one thing you should be confident in, you can always improve.
It’s easy to think that as soon as you consider something done, it’s done but to create excellence in a team, other people have to look at your work and you have to accept the feedback ungrudgingly. The other person isn’t trying to say they know better than you, belittle you, or say you’re a bad coder but I think a lot of developers feel this way.
The people whom I’ve worked with whom I have also respected, are the people who aren’t lazy, they don’t take the easy road just to get something done quickly, they can take criticism of their code and adapt to new processes. They listen to what people have to say rather then blindly think they know better. They can ask for help when they need it rather than burn hours on a problem as they’re too frightened to say anything.
If you are a developer be a good one. The best way to do that is to not be lazy. Do what’s right rather than do what makes your life the easiest.