DEV Community

Cover image for 7 Habits to Cultivate for Becoming a Better Software Engineer
Ivan Novak
Ivan Novak

Posted on • Originally published at ivannovak.com

7 Habits to Cultivate for Becoming a Better Software Engineer

That "senior engineer" title.

Someday, right?

But how do you get there? Technical skills are important, obviously, but senior engineers differentiate themselves by developing solid professional habits. 

1. Invest in Your Craft Outside of Work

The best developers dedicate time outside of work to actively master new skills. They take online courses to stay on top of new languages and frameworks. They read widely - books, blogs, documentation - to understand classic and emerging concepts. They attend local meetups and conferences to learn from the community and stay inspired. And they experiment with side projects to apply their skills in new environments.

These self-driven investments in learning have the side-effect of keeping their skills sharp and resumes competitive. They build a breadth of knowledge across multiple languages, frameworks, and environments rather than specialize in just one. This flexibility allows them to deliver value across diverse projects in a wide array of industries. It also shows they are truly passionate about the craft of software development itself.

2. Understand the Why, Not Just the How

Strong developers don't just blindly copy and paste code from Stack Overflow. They take the time to deeply understand how and why the technologies they use actually work under the hood. They (rtfm) read the documentation rather than just skimming it to grab what they need. They leverage debugger tools to step through code. And they ask thoughtful questions of more experienced colleagues when they don't fully grasp a concept.

Knowing the why builds strong technical intuition in senior developers. It allows them to adapt coding patterns and architectures to new situations. It helps them debug tricky issues methodically. And it enables them to suggest appropriate technologies for new projects. Understanding fundamentals is far more valuable than memorizing syntax.

3. Collaborate Intentionally

Excellent communication and collaboration skills set professional developers apart from the rest. They share their knowledge generously with colleagues to lift up the whole team. They listen attentively and think from teammates' perspectives when discussing solutions. And they provide constructive feedback respectfully, knowing that diverse insights build more creative solutions.

Senior developers also collaborate well with non-technical stakeholders and end users. They learn how to speak about technology clearly to build trust. They gather requirements collaboratively to build the right solutions for the business. And they know the value of developing software in the open with early and continuous end-user feedback.

4. Architect with the Future in Mind

Writing clean, maintainable, and scalable code is a hallmark of seasoned engineers. They don't take shortcuts to deliver features quickly at the cost of immense technical debt. Instead, they envision how business needs might change in the future and design adaptable systems that can evolve along with them.

Thinking long-term allows them to incorporate patterns like abstraction, loose coupling, and asynchronous processing that may not be needed now but will facilitate scaling over time while keeping an eye on YAGNI. And it saves future engineers from the headaches of reworking densely coupled or unstable code. Architecting with the future in mind demonstrates deep experience.

5. Own Your Code

Standout developers take pride in their work and responsibility for code quality. They fix technical debt and optimize performance bottlenecks proactively rather than letting issues linger. They write comprehensive unit tests to catch bugs early. They continuously refactor code to simplify complex logic and improve readability. And they provide complete documentation to explain the how and why to future engineers.

Owning code means ensuring that other developers can easily build on top of it reliably. While messy code might "work" in the present, it creates headaches down the road. Senior developers know that putting in the effort to polish and maintain code saves time and money in the long run.

6. Continuously Improve Through Feedback and Reflection

Veteran developers don’t rest on their laurels. They know that no matter how experienced they become, there is always room for improvement. They actively solicit peer feedback and code reviews to surface weaknesses and blindspots in their skills or approaches. And they provide coaching and mentoring to more junior engineers, which mutually benefits both!

They also make time for self-reflection after completing projects to identify what went well and what could be improved. They analyze their own code months later with fresh eyes to catch issues. And they participate in retrospectives to examine team processes and identify areas to optimize. This growth mindset of continuous improvement is critical to reach senior levels.

7. Bring Passion, Curiosity, and Perspective

Finally, senior engineers stay excited by their work through career ups and downs. They approach problems with curiosity, passion, and diverse perspectives. Instead of seeing things one way, they draw wisdom from years of experience to examine problems through different lenses. And they aren’t afraid to kindly question the status quo or propose unconventional solutions.

This enthusiastic commitment to lifelong learning also keeps them engaged and motivated. They jump at opportunities to work on new challenges that force them to learn. And they inject this passion into their workplace by mentoring junior engineers, building communities of practice, and evolving practices and culture for the better.

The passion they worked so hard to develop is infectious.

Leveling up as an engineer takes dedication across technical, collaborative, mindset, and professional skills. Developing these habits now can accelerate your progress from coder to leader.

That "senior" badge is in reach!

Top comments (16)

Collapse
 
kunle1984 profile image
Olaoye kunle

Thanks @inovak . I enjoyed reading through each points. Being a senior engineer require a lot of sacrifice to keep up with the game. Also, is a position where one have selflessly give back through knowledge sharing and helping others to grow.

Collapse
 
inovak profile image
Ivan Novak

Yep! Part of the role is helping the team be greater than the sum of its parts.

Collapse
 
johnsimons87 profile image
John • Edited

For how many years did you work as a software developer?

Collapse
 
kunle1984 profile image
Olaoye kunle

Over 7 years now.

Thread Thread
 
johnsimons87 profile image
John

Would you be interested to give my github project a quick overview. For compensation

Thread Thread
 
kunle1984 profile image
Olaoye kunle

Ok.

Thread Thread
 
johnsimons87 profile image
John
Collapse
 
lluis_x_casals profile image
Lluís Xavier Casals

Great article @inovak ! For me the most important is what you are stating as #3, to collaborate. The essence is in what you are writing as 'share their knowledge generously', this is the key
But please, let me comment on what is #1, to invest craft outside work. Agree is crucial in such a competitive situation, to have a competitive resume and catch up on our skills, but is this more something to become more than a better software engineer? I say this because I see this point, as you are describing, as something that could stop a Software engineer from outstanding their skills, and focusing what could be hobbies, family, etc... to full software engineer matters.

Collapse
 
inovak profile image
Ivan Novak

Thank you Lluís!

As someone with a wife, four kids, and grandparents that live nearby I can whole heartedly say that family always comes first. No negotiation on that.

Let's also push competition to the side. Comparison is a quick way to disappointment. The only person we're working on is ourselves. If we are learning, growing, and moving towards our goals... I call that success.

With that out of the way, let's get real. We are all navigating our careers -- meaning YOU are steering.

Sometimes the incentives are structured in a way where you absolutely must get income as fast as possible. (I've been there.)

Other times the incentives are structured where you can take your time choosing how and when you select work and making sure that it aligns very closely with your interests and/or career growth goals. (Oh, so nice!)

And, sometimes the incentives are structured in a way where you may not care at all about your profession, don't consider it a career, and just want a way to earn some cash so you can do the things you love outside of work. (This is how it was for me in college.)

All of these are OKAY! Life ebbs and flows. As long as you know YOU are steering, there's no problems.

Unfortunately, sometimes folks assume that growth in a profession is the responsibility of the company that hired them. This is simply not true. You're hired (and hopefully paid well) to bring your accumulated experiences to bear for a company to benefit the company.

If you leave your professional growth in the hands of a company, you're delegating to chance what you experience. This further delegates to chance your learning opportunities and potential value to other organizations.

I don't like that idea, personally. I want to steer. I want to own my luck. Accountability is another non-negotiable for me, like family.

Investing time outside of work is one way to take ownership of the direction of your career -- and it can be fun! Potentially the seed of a new hobby!

Frequently, our curiosity is limited by our professional environment. At home though, we have access nearly endless options.

We're free to pursue useless projects. We can explore standing up whole projects end-to-end with a bunch of new and interesting integrations. We can pick up and try new frameworks, languages, or technologies. You name it!

This keeps our professional craft interesting and allows us to create joy for ourselves from what we do professionally.

For me, it increases the joy I get not just at home on hobby projects, but also at work. This joy is born from a mixture of competence and exploration and invention... and it certainly does not come at the cost of other hobbies, family, etc.

Collapse
 
lluis_x_casals profile image
Lluís Xavier Casals

Thanks! This is a really interesting answer to my comment, I appreciate-it.
Never thought about this concept, the employer's responsibility, and where accountability starts (quite obvious, how come I've did not thought about-it!), this is significant and crucial for our growth.

Collapse
 
eljayadobe profile image
Eljay-Adobe

Except for #5, these are all good for becoming better at anything. #5 is rather coding specific, and good too.

Collapse
 
inovak profile image
Ivan Novak

Surprising how that works, eh?

Collapse
 
elidvenega profile image
Elid

What a great read this was.

Collapse
 
avanichols_dev profile image
Ava Nichols

Thank you very much!

Collapse
 
qayyax profile image
Tife Olatunji

Thank you so much. This was really a good read

Collapse
 
ademagic profile image
Miko • Edited

thanks @inovak , great breakdown. They are challenging habits to continually cultivate but definitely the right ones to focus on.