As we all know, being a software engineer takes work. You need to see a lot and constantly improve yourself. Yet, there are many questions and dilemmas, what one should do to become a great one, and what is less critical.
During my 20 years of career in different companies, from startups to large ones with more than 10.000 people, I found what differs between good and great software engineers, and here are recommendations on how to become one:
Master one programming language in-depth
Take one programming language and go in-depth with it. Learn everything you can and master it. Some good languages you can select today are Python, Java, C#, and Rust.To be sure which programming languages to learn, check these indexes of popularity:
Learn Software Engineering concepts
When you master a programming language, its syntax, semantics, and constructs, the next thing is to learn different software engineering concepts, such as:Software architecture
Software design
Algorithms and data structures
Design patterns
Clean code
SOLID, DRY, KISS, and YAGNI principles
System Design
Data
Gitwill
More on this in the next section.
Learn the complete Software Development LifeCycle (SDLC) process
Understand the complete software development process, from requirements to deployment. Learn about Agile methodologies, DevOps, and Quality assurance.
And try to work on different projects; on more projects, you work you will learn new stuff and grow.Be a product-minded engineer
When working on your project, don't settle just with specs; jump to implement it. Think about other ideas and approach your product manager with them. Try to understand the complete system and how business works. Be an end-to-end product feature owner.Improve your communication and soft skills
Be respectful of others, communicate clearly, and be humble. Being kind has no financial cost, but its effects are immeasurable.Learn to write, learn to present, and speak well. This will make you stand out from the crowd.
Try pair/mob programming. Talk with people outside engineering, grab a coffee or lunch, or do a hallway chat.Learn intentionally
We need to learn, but the trick is when and how. Don't just learn things because this could be more efficient. We need to know intentionally, just before we need it, and this will make the most significant impact.Work with someone more experienced
The fastest way to progress in your career is to find a mentor. He can help you find your gaps and show you some new opportunities. A mentor can be found inside an organization or outside (check specialized services, such as MentorCruise).Always try to work with people who you admire and who admire you.
Use good engineering practices
Learn and follow good practices, such as:
Using version control
Write your tests correctly (check the test pyramid)
Learn how to refactor
Learn TDD
Code reviews
DevOps mindset
Also, learn your IDE and all the essential shortcuts you need. Debugger too.
Use productivity techniques
To be more productive, we need to learn different techniques, such as:
Prioritization (check Eisenhower matrix)
Time management (check Pomodoro)
Concentration (check Deep focus / no distractions)
Note-taking (check Notion)
This will help you keep in mind the only important things you need now for the current task. techniques
Be proactive
Also, remember to have a can-do attitude and be proactive. —an essential pillar of every great software engineer.
To learn more about it, I recommend the book, “The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change”.
Ultimately, more is needed, even if we know a lot. What does it take to be a great engineer? It takes time, fails, and experiments. So go and practice, practice, practice!
More ways I can help you
Patreon Community: Join my community of engineers, managers, and software architects. You will get exclusive benefits, including all of my books and templates (worth 100$), early access to my content, insider news, helpful resources and tools, priority support, and the possibility to influence my work.
Sponsoring this newsletter will promote you to 33,000+ subscribers. It puts you in front of an audience of many engineering leaders and senior engineers who influence tech decisions and purchases.
1:1 Coaching: Book a working session with me. 1:1 coaching is available for personal and organizational/team growth topics. I help you become a high-performing leader 🚀.
Useful suggestions Milan! Interesting reference to Mentor Cruise.
Regarding the mentioned book it is a good guide, and you can also consider the 8th habit by the same author as a recommendation.
I think it applies once you get to master in a certain way what he refers to in the 7 Habits.