Monday, January 12, 2015

How To Become A Great Software Engineer

I've been in the software industry for well over a decade now and today I thought I would reflect on the qualities I've seen in great software engineers that aren't just about the code they write.

Great software engineers are curious about everything. Because great software engineers are curious about everything they tend to dive much deeper into learning technologies. They're not satisfied with just learning how to use something but want to know how it works as well. This helps the engineer to better pick the *correct* solutions for the task at hand. It's important to note that diving too deep can also be a crux as you get stuck in analysis paralysis. Great software engineers recognize when they've learned enough to move on a start delivering.

Great software engineers are passionate about what they build. Not matter what they're building they want it to be great. Whether it's a script, a site, a process, or an application they want it to be used and want it to be a positive reflection of their ability. Because of this they give 100% on everything they build.

Great software engineers don't want to reinvent the wheel. Because these engineers are so curious they naturally become aware of what software is out there. They play with lots of different technologies, frameworks, and platforms. This gives them better judgement about what the correct solutions are to integrate with and what software they need to build themselves.

Great software engineers understand that software engineering is about more than just code. Software is part of a larger system. A great software engineer thinks about hardware, security, operations, deployment, and the maintainability of code.

Great software engineers are willing to do the stuff no one else wants to do. This doesn't mean that they volunteer for all the crappy work. But they understand that sometimes you have to pay your dues. They also understand that the crappy work is a good way to practice their skills.

Great software engineers have learned to make others better. These engineers have learned that you can't do it by yourself. They've also learned that not having a cohesive system is an anti-pattern. Because of this they *want* those around them to be better. Therefore they invest in teaching and mentoring others. In turn they learn more about their knowledge gaps and become better engineers themselves.

No comments:

Post a Comment