Tech World With Milan Newsletter

Share this post

How to Become a Great Software Engineer

newsletter.techworld-with-milan.com

Discover more from Tech World With Milan Newsletter

Insights into a beautiful world of Software Engineering, simplified. Join 15,000+ readers from Microsoft, Google, Meta, Amazon, and more.
Over 15,000 subscribers
Continue reading
Sign in

How to Become a Great Software Engineer

Dr. Milan Milanović
Jun 29, 2023
29
Share this post

How to Become a Great Software Engineer

newsletter.techworld-with-milan.com
1
Share

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:

  1. Master one programming language in depth

    Take one programming language and go in-depth with it. Learn everything you can and be a master of 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:

    1. PYPL PopularitY of Programming Language Index.

    2. TIOBE Index.

    3. IEEE Spectrum.

    4. Stack Overflow Survey 2023.

  2. 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:

    1. Software architecture

    2. Software design

    3. Algorithms and data structures

    4. Design patterns

    5. Clean code

    6. SOLID, DRY, KISS, and YAGNI principles

    7. System Design

    8. Data

    9. Gitwill

    Tech World With Milan Newsletter
    How to Learn Git
    In this issue, we are going to talk about Git, specifically about: How Git works What are some basic Git commands? How to Learn Git Which Git tools exist And as a Bonus, a free Git Cheat Sheet So, let’s start… How Git works Git is a distributed version control tool that facilitates monitoring changes to your code over time. Git makes it simple to track changes…
    Read more
    5 months ago · 22 likes · 1 comment · Dr. Milan Milanović

    More on this in the next section.

  3. Learn the complete Software Development LifeCycle (SDLC) process

    Try to 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.

  4. 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, but also how business works. Be an end-to-end product feature owner.

  5. 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.

  6. 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.

  7. 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.

  8. Use good engineering practices

    Learn and follow good practices, such as:

    1. Using version control

    2. Write your tests correctly (check the test pyramid)

    3. Learn how to refactor

    4. Learn TDD

    5. Code reviews

    6. DevOps mindset

    Also, learn your IDE and all the essential shortcuts you need. Debugger too.

    Tech World With Milan Newsletter
    High-Quality Work in Software Engineering
    When working in software engineering organizations, we try to understand what makes some organizations suitable and what is not. For example, some organizations produce good software, and some do not. We usually need some Agile method, such as Scrum, to use Clean code or even TDD, and we are set to be good. However, things take more work and clarity…
    Read more
    4 months ago · 18 likes · Dr. Milan Milanović
  9. Use productivity techniques

    To be more productive, we need to learn different techniques, such as:

    1. Prioritization (check Eisenhower matrix)

    2. Time management (check Pomodoro)

    3. Concentration (check Deep focus / no distractions)

    4. Note-taking (check Notion)

    This will help you to keep in your mind the only important things you need now for the current task. techniques

    Tech World With Milan Newsletter
    How to Be 10x More Productive
    I was always amazed by top performers. I asked myself what those people do and how they are much better than others. Then I started to research more and talk directly to some of them. I finally managed to get some top performers as my mentors and, in the end, became one of them. I learned that they are not better than others, but they use some technique…
    Read more
    5 months ago · 23 likes · 2 comments · Dr. Milan Milanović
  10. Be proactive

Also, remember a can-do attitude and proactiveness. —an essential pillar of every great software engineer.

To learn more about it, I recommend a book, “The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change”.

r/coolguides - 7 Habits of Highly Effective People
7 Habits of highly effective people (Credits: Nathalie Tu)

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!

Software Developers (Credits: Unsplash)

Learn Fundamentals, Not Frameworks

We, as developers, like to learn new stuff and try them asap. That stuff is mostly some new frameworks and tools (such as React, Angular, Spring, Web Forms, ...). Yet, those frameworks usually have a short life, 2 to 5 years at their best. Instead of learning frameworks, which are needed to some extent, we should focus more on learning fundamentals.

Learning software development fundamentals allows developers to understand the underlying principles and concepts common across different frameworks and programming languages. This understanding allows for more flexibility and adaptability when working with new technologies or facing problems that a specific framework may take time to solve.

Additionally, a strong understanding of the fundamentals can lead to more efficient and effective use of frameworks, as the developer can better understand how to customize and extend them to meet specific needs.

Take an example of a web application that allows users to upload and share images, which is done, e.g., in Ruby on Rails and its functionalities for image processing. If the number of users increases, we could only work with performance issues if we know only the framework well. Yet, if we understand the fundamentals of web development, we could identify bottlenecks and try different solutions, such as using CDN-s, optimizing image sizes, using various storage solutions, etc.

So, which fundamentals to learn:

  • Algorithms

  • Data

  • Clean Code

  • Design Patterns

  • Distributed Computing

  • System Design

  • And more.

Try to learn those fundamentals, buy and read these books:

Tech World With Milan Newsletter
Books Every Software Engineer Must Read in 2023.
You probably already noticed that I'm a big fan of reading. I usually read 3-4 books per month. You can learn from knowledgeable people in two ways: to work directly with them or to read what they have written. The first is the best option, yet it is often impossible. We have books written by people who are the best at this in the world at the time of w…
Read more
4 months ago · 30 likes · 4 comments · Dr. Milan Milanović
Code (Credits: Unsplash)

Thanks for reading Tech World With Milan Newsletter! Subscribe for free to receive new posts and support my work.

29
Share this post

How to Become a Great Software Engineer

newsletter.techworld-with-milan.com
1
Share
Previous
Next
1 Comment
Share this discussion

How to Become a Great Software Engineer

newsletter.techworld-with-milan.com
Federico
Jun 29Liked by Dr. Milan Milanović

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.

Expand full comment
Reply
Share
Top
New
Community

No posts

Ready for more?

© 2023 Dr. Milan Milanović
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing