I’ll start this off by saying that these keys come from my own very humble opinion, and my 18 years of experience in the software industry. My experience has taken me through multiple roles & personas in this space; from Test Automation, Development, Release Management, Product Analysis, and being a owner of a startup. Through all these different roles and perspectives, a few things have stayed consistent. The keys to success in the software engineering space persists regardless of what pillar you find yourself in.
To those starting off their careers in the industry, or those looking to accelerate their growth, here are some keys to success in software engineering.
Embrace The Spirit of Learning
I don’t think this can be stated enough. You will not be as successful as you want to be if you don’t embrace the spirit of learning. Learning could come in the form of hands-on learning, classes, online courses or peer to peer learning. The software industry is so dynamic that the average technical skill life cycle is just about 4 years. Which means, if you’re not consistently looking to improve and learn, you will get left behind. When I came into the industry C++ and Rational tools were the hot languages and tools, today I don’t even see those in job descriptions. Don’t ever feel too smart to learn.
Like all humans, engineers also want to get a sense of ownership. Being successful in this industry will require you to take ownership in any product you’re working on. You might not be the SDET or SRE or PO but being invested in making sure every feature functions as designed and is deployed successfully will make you stand out.
Don’t be the one that says, “well that’s for XYZ to do. That’s not my job.” You won’t win yourself any favors. I understand It’s not easy to continuously do that, but it’s extremely valuable.
Think Of Business Value
A mentor once told me; There’s no use writing the most impressive piece of software if it can’t be sold. It sounded harsh at the time, but it’s an absolute truth. We get paid because what we build creates business value.
Always find a way to tie the code you’re writing to the business impact/value it’s creating. If you consistently keep this is mind, you’ll create valuable software and will be more efficient in using your time and energy. If you’re working on a product where you can directly see how consumers use your products, do so.
Technical skills are important, but, succeeding in this industry requires a very healthy dose of soft skills. Communication and understanding your audience, collaboration, negotiation, problem solving are all skills you’ll need to be successful.
As a software engineer, it’s understood that for the most part you’re technically smart. You understand programming languages, architecture etc. However, what sets you apart will be the soft skills that make both technical and business team members come to you all the time.
Keep Things Simple
It’s call KISS for a reason. Keep It Simple Stupid. And this applies to not just how your write your code or design your systems, but also how you think of solving problems in general. Could a SharePoint site do the same job as a webapp built from scratch for a basic need? Then use SharePoint. Some things don’t have to be complicated.
Doing this will enable you to be more time efficient, and you spend your time and energy in an area that’ll create a greater impact & value.
Think Of How Things Can Go Wrong… But Don’t Let It Stop You
As engineers, we’re all trained to make things work. That inherently comes with a heavydose of optimism that if we add 1 + 1, it’ll equal 2. But things do break, and anything that can go wrong will eventually go wrong.
So, approach every design, development and implementation with a healthy dose of skepticism. Ask the question, “what can go wrong?”, and then begin to solve for those problems, but don’t let it stop you. The cost of resolving a bug in production can be 100x the cost of resolving during analysis. Which means if it cost $100 to find a requirement gap, it’ll probably cost $10,000 if you find that bug in production. Remember, business value?
Work Hard… And Smart
It’s tempting to take the easy position or the cushy role that doesn’t require you to do more than you 6hrs day, but that may not pay off down the line. You don’t progress in your software engineering career (any career really) without putting in the hard work. You can work hard and smart, so don’t confuse this will just putting in long hours.
Also, take on the difficult tasks that no one wants, and even if you’re not as successful in that task as you’d like, you’ll have gain a ton of valuable experience that will help you in the future. And feel free to ask for help.
Celebrate and Promote your Victories.
Whether it’s the small victory of resolving a bug that had been lingering, or finally being part of the team to push the BIG product out to production, celebrate and promote. Always communicate to your leadership what you’ve accomplished and celebrate the little victories. There’s a mental boost that comes with the feeling of accomplishment, and that especially helps when it comes from your leaders.
This is by no means as exhaustive list, however it’s a few tips for finding success and fulfillment in the software engineering and technology space. A few of these, I wish I had known much earlier in my career, and others I was fortunate enough to have embraced along the way. Am I still learning as well? Absolutely. There is no stopping or resting on your laurels here.
Feel free to share some of your lessons and tips as well.