The 7 Habits of Highly Effective Developers
I’ve had the wonderful opportunity to work with some amazing developers over the past couple of years. I got to watch in the shadows when I consulted with game companies, I got to work side by side with them when I developed web platforms, and I got to observe them when they worked for me. Being a developer myself, I’m always looking for the opportunity to learn something from someone, so I’ve paid keen attention to the things the guys I admired said and did.
Being a developer is one of those things you can never really be perfect at. There’s always more to learn and there’s always a next step. So as I was looking through my notes recently to review them as I do often, I found a list of things I had written down during that period of my life that could help me improve. After reading through them, I realized this list of commonalities goes way beyond just me, and I decided to share them. Here are what I call the 7 habits of highly effective developers.
#1 – They create things they love
It seems like no matter who I talk to, if they are impressive developers, they love some aspect of what they’re doing. I’ve seen this in the startup world, where fantastic developers in Silicon Valley line up to be a part of companies and causes that are changing the world. And I’ve seen it in independent games, where the best and brightest up and coming creative minds spend thousands of hours creating the game that they think should exist. One thing is clear, the developers that are the most successful with their projects are the ones that love their projects the most.
And notice I used the word ‘love’ and didn’t say something like ‘you find it fun’. If you don’t love what you are doing, it is going to be very hard to continue when the fun parts get marked complete early on. They always do. A real true love for your project has so many benefits outside of the longevity of the development cycle too. When you love something you spend time on little details to tweak it and make it PERFECT, long after other developers would have moved on. Gamers and users can tell the difference between a project that was loved and one that was not.
I think this is pretty common in game development, but I personally always make the games I wish existed. Sometimes I play a game I love, and it has an effect on me…but as an artist there is something I feel I have to add to it, and because I love it so much, I start work on it.
#2 – They copy and improve
Nobody truly creates things from scratch. If you think you do, you are out of touch with reality. Someone or some thing, somewhere, inspired you or sparked an idea that led to your project. Ignoring this fact will only leave you further from the truth and prevent you from improving as a developer. Highly effective developers copy things that they like, things that work, or things that improve the experience and they implement them into their project. But unlike those shady dudes that try to clone games to make a quick profit, or the companies that pop up out of nowhere and copy a startup once its working, great developers take it a step further and improve upon what they copied.
For me, I love making 2D platformers. I was inspired somewhere by seeing a side scrolling 2D game created by someone else. I copy this movement system, and I improved upon it with my own speeds, variables, enemies, obstacles and stories. By doing that, I create something that starts out as an accepted concept, I use less brain power doing it, and I create something that has my fingerprint on it. I took something I liked, and I made into something I loved. In fact, the title of this very post was copied from one of my favorite books and modified to match the content.
I’m not saying you should flat out copy others work and release it as your own, I’m saying that you should routinely take pieces that work from other projects you see and improve them. It makes your job easier, it opens your creative mind, AND it makes for a better completed project. Every great artist from the beginning of time has copied and improved.
#3 – They seek feedback often
No one ever created something truly great by sitting in their basement alone for 6 months and then releasing it to the world as complete. Great projects and great games, regardless of the number of developers, are the product of multiple people and feedback from multiple sources. Remember, a great developer is only considered so if what they create is loved by others. How do you create something others love without showing it to them?
Seeking feedback often means you want to create something people love, and you are willing to put aside your ego and your pride and listen to what others have to say. Highly effective developers seek feedback often because they know that it not only improves their current project, but learning from things on this project will lead to growing as a developer and avoiding mistakes in the future.
I know the myth; the one that says you should always do what you want to do regardless of whether or not the world understands. But by ignoring good feedback on your project, you are sentencing it to a life of solitude. Not to mention it shows that you as a developer are not ready to improve and admit that you don’t have all the answers. Highly effective developers seek feedback because their goal is to be effective. Not the smartest guy in the room.
Feedback isn’t always just listening to what someone has to say either. My best work came from listening to others and improving my product based on watching people use my software and play my games. There is always something to be learned and gained from the feedback of others.
#4 – They pace themselves
No developer ever spent 14 hours a day long term on the project and came out unscathed. Highly effective developers understand the art of pacing themselves and taking breaks when they need to. Decision making takes up willpower, and willpower can be depleted just like a health bar. Continuing to make decisions when your willpower is low is dangerous and can lead to sub-par results. In addition, the longer you work on something, the less clarity you have. And clarity is king when it comes to games and interactive media.
Highly effective developers pace themselves because they know about the dangers of burn-out, they know their spout of inspiration is unsustainable, and they know that dedication and consistence is more important than getting a large amount of work done in a small amount of time. They’ve been there before and they know about the negative effects that working non stop on something long term can have.
I have seen developers do this in a series of ways, but the most popular one is to have multiple projects across different skill sets. Every developer has their own preference, but the ones that are the most effective make sure that they treat down time as part of the project. I’m far from a highly effective developer, but personally I find that if every day or every few days I swap between code and art, my brain tends to keep clarity and focus.
#5 – They learn with intention
It is significantly harder to learn something without the conscious intention to do so. There are 2 primary ways to learn things. Either you have constant exposure and repeat the same tasks over and over, or you take mental notes with conscious effort as you do things for the first time. Developers seem to fall into that category where there are never quite as many hours in a day as there needs to be, so the developers that don’t learn things fast can get left in the dust.
Highly effective developers are very intentional in what they learn, and they consume books, content, and knowledge on the subject with the intent to learn and the intent to improve. A side effect of these qualities is usually also a very high speed of implementation. That is, how fast after you learn something you actually use it. Great developers implement instantly, and learn with intention in the trenches.
For me, I find I learn things best when I am trying to write a certain piece of code, and I google it to find a tutorial or a stack overflow question to find how someone else solved my problem. I now know how it’s done, I can solve my problem, and I learned it because I had no choice but to implement it right away.
#6 – They work to publish
Published projects are a requirement to be a great developer. There has never been a great artist in history that never had their work published in some form or fashion. Highly effective developers routinely work to publish. When the time comes, whatever they’re working on, whether they are happy with it or not, they put it out there for the world to see. Effective developers release early and often. They iterate fast, and they publish when their work is good enough.
I am not suggesting that you stop trying to make the best thing possible, I’m suggesting that the 80% of your time that you spend on that single obscure detail might never get noticed, and it’s much better to publish when things are good enough and iterate later. Highly effective developers know this, and they make a habit of publishing often.
The opposite of working to publish is to constantly start projects and never finish them, something a lot of us game developers (me included) do often. While this may improve your skill set over time, you don’t end up getting anywhere because none of your projects ever see the light of day. Consistently working on and publishing smaller projects will teach you more than working on a bigger project and never releasing ever could.
Although my game development side struggles with this at times, I find that working on videos and articles like this one keeps me working to publish every week, and it has a positive effect on all other creative areas of my life.
#7 – They work daily
There is no better way to improve your craft, then to work on it every single day, no matter what. Working daily not only teaches you discipline on the days where you invariably don’t feel like doing so, but it also trains your brain to understand that this skill is important to you and it should be a primary focus. Both of these things are extremely important when it comes to improving as a developer, especially if you are a creator of independent games.
Highly effective developers work daily, and they improve over time. This doesn’t mean that you have to work on the same thing or even the same skill every day. It means that the things that you want to improve and get better at, should be done daily.
Again, I’m no highly effective developer here, but in my life one of the things I do is buy a year-long calendar. Every day I work on my project, I get to draw an X on that day on the calendar. When I miss a day, I don’t get to draw anything. Even if I spend 10 minutes that day working on my project, I still get the X. And when I have a few days going in a row, the last thing I want is to break that streak, so I sit down with the intention to do the minimum. But I’ve found that once I sit down to do the minimum, I usually get in the zone and do much more.
Whatever you build in life, software or games, if you want to be a highly effective developer you have to love what you do. You have to copy things you love and add your own spin on them so that they have a little piece of you that ONLY you could add. You have to be open to feedback, listening and watching what people do and say when they interact with your work. And put your ego and pride aside to create something great that many people will enjoy.
You HAVE to pace yourself, treat yourself well, and not overwork your brain. Avoid burn-out at all costs, it’s no fun. You have to learn things with the INTENTION to learn them, not just passively watch or listen. Doing is what creates experience, and intention makes you do. Work to publish, and focus all of your efforts into completing a project, not dragging it on forever. And work on your skill set and project daily. Be consistent, have discipline, and no matter what keep at it.
What’s a great habit you picked up? Tell me in the comments!