Dr Milan Milanović Profile picture
💼 Chief Roadblock Remover and Learning Enabler 💡 Software Development Expert ✍️ Author 💻 Building great products, building great teams!
3 subscribers
Sep 26 4 tweets 3 min read
𝗛𝗼𝘄 𝗧𝗼 𝗕𝗲𝗰𝗼𝗺𝗲 𝗔 𝗚𝗿𝗲𝗮𝘁 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿?

As we all know, being a software engineer is not easy. You need to see a lot and constantly improve yourself. But, during my career, I found what differ good and great software engineers, and here are recommendations on how to become one:

𝟭. 𝗠𝗮𝘀𝘁𝗲𝗿 𝗼𝗻𝗲 𝗽𝗿𝗼𝗴𝗿𝗮𝗺𝗺𝗶𝗻𝗴 𝗹𝗮𝗻𝗴𝘂𝗮𝗴𝗲 𝗶𝗻 𝗱𝗲𝗽𝘁𝗵

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

𝟮. 𝗟𝗲𝗮𝗿𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗰𝗼𝗻𝗰𝗲𝗽𝘁𝘀

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
🔹 Design patterns
🔹 Clean code
🔹 SOLID, DRY, KISS, and YAGNI principles

𝟯. 𝗟𝗲𝗮𝗿𝗻 𝘁𝗵𝗲 𝗰𝗼𝗺𝗽𝗹𝗲𝘁𝗲 𝗦𝗗𝗟𝗖 𝗽𝗿𝗼𝗰𝗲𝘀𝘀

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. The more projects you work on, the more you will learn and grow.

𝟰. 𝗕𝗲 𝗮 𝗽𝗿𝗼𝗱𝘂𝗰𝘁-𝗺𝗶𝗻𝗱𝗲𝗱 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿, 𝗻𝗼𝘁 𝗰𝗼𝗱𝗲 𝗺𝗼𝗻𝗸𝗲𝘆

When working on your project, don't settle for specs and jump to implementation. Think about other ideas and approach your product manager with them. Try to understand the complete system and how the business works. Be an end-to-end product feature owner.

𝟱. 𝗜𝗺𝗽𝗿𝗼𝘃𝗲 𝘆𝗼𝘂𝗿 𝗰𝗼𝗺𝗺𝘂𝗻𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝘀𝗼𝗳𝘁-𝘀𝗸𝗶𝗹𝗹𝘀

Be respectful of others, communicate clearly, and be humble. Being kind has no financial cost, but its effects are immeasurable.

Try pair/mob programming. Talk with people outside engineering, grab a coffee or lunch, or do a hallway chat.

𝟲. 𝗟𝗲𝗮𝗿𝗻 𝗶𝗻𝘁𝗲𝗻𝘁𝗶𝗼𝗻𝗮𝗹𝗹𝘆

We need to learn, but the trick is when and how. Don't just learn things; this is inefficient. We need to learn intentionally, just before we need it, and this will make the biggest impact.

𝟳. 𝗪𝗼𝗿𝗸 𝘄𝗶𝘁𝗵 𝘀𝗼𝗺𝗲𝗼𝗻𝗲 𝗺𝗼𝗿𝗲 𝗲𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲𝗱

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

𝟴. 𝗨𝘀𝗲 𝗴𝗼𝗼𝗱 𝗲𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗽𝗿𝗮𝗰𝘁𝗶𝗰𝗲𝘀

Learn and follow good practices, such as:

🔹 Using version control
🔹 Write your tests properly (check the test pyramid)
🔹 Learn how to refactor
🔹 Learn TDD
🔹 Code reviews
🔹 DevOps mindset

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

Check bonuses in the comments.

#softwareengineering #programming #careerImage Bonus 1:

𝟵. 𝗨𝘀𝗲 𝗽𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝘃𝗶𝘁𝘆 𝘁𝗲𝗰𝗵𝗻𝗶𝗾𝘂𝗲𝘀

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 to keep in your mind the only important things you need now for the current task.
Aug 6 15 tweets 5 min read
𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀 𝗹𝗶𝗸𝗲 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗮𝗻𝗱 𝗣𝗼𝘀𝘁𝗴𝗿𝗲𝗦𝗤𝗟, 𝗯𝘂𝘁 𝘁𝗵𝗲𝘆 𝗮𝗿𝗲 𝘂𝗻𝗵𝗮𝗽𝗽𝘆

Last week, Stack Overflow released the results of its annual survey on coding, the technologies and tools developers use and want to learn artificial intelligence, and their workplace experience. Over 65,000 programmers from 185 countries responded to the survey.

A thread 🧵Image 𝗝𝗮𝘃𝗮𝘀𝗰𝗿𝗶𝗽𝘁 (𝟲𝟮%), 𝗛𝗧𝗠𝗟/𝗖𝗦𝗦 (𝟱𝟯%), 𝗮𝗻𝗱 𝗣𝘆𝘁𝗵𝗼𝗻 (𝟱𝟭%) 𝘁𝗼𝗽 𝘁𝗵𝗲 𝗹𝗶𝘀𝘁 𝗼𝗳 𝗺𝗼𝘀𝘁-𝘂𝘀𝗲𝗱 𝗹𝗮𝗻𝗴𝘂𝗮𝗴𝗲𝘀 𝗳𝗼𝗿 𝘁𝗵𝗲 𝘀𝗲𝗰𝗼𝗻𝗱 𝘆𝗲𝗮𝗿 𝗶𝗻 𝗮 𝗿𝗼𝘄

Since the Developer Survey's launch in 2011, Javascript has consistently been the most popular language among Stack Overflow users. This year, Python has surpassed JavaScript as the most wanted language (those who indicated they would use it next year but not this year). With an 83% adoration rate, Rust is the language most developers use and wish to use again for the second year.Image
Jul 13 9 tweets 4 min read
𝗠𝗼𝘀𝘁 𝗖𝗼𝗺𝗺𝗼𝗻 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗦𝘁𝘆𝗹𝗲𝘀

Software architecture styles are the foundational blueprints for constructing various software systems, ensuring they meet specific requirements and quality attributes.

An architectural pattern, on the other hand, communicates a fundamental organizational structure for software systems. By selecting the appropriate patterns for your issue, you can avoid creating anything from scratch and potentially dangerous traps that might arise if you try to devise a novel solution.

Here are the most common architectural styles: 🧵

#softwarearchitecture #softwaredesign #programmingImage 𝟭. 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵𝗶𝗰 - Builds the entire application as a single unit, where all functionalities and components are managed and served from one place. Examples of monolithic architectures are Onion and Layered. Image
May 9 5 tweets 3 min read
The most important Design Patterns for writing better code Image How to select the correct design pattern

newsletter.techworld-with-milan.com/p/how-to-selec…
Image
Jan 2 5 tweets 2 min read
𝗖𝗹𝗼𝘂𝗱 𝗣𝗿𝗼𝗱𝘂𝗰𝘁 𝗠𝗮𝗽𝗽𝗶𝗻𝗴 (𝗔𝗪𝗦 𝘃𝘀 𝗔𝘇𝘂𝗿𝗲 𝘃𝘀 𝗚𝗖𝗣)

A lot of companies today decide to go with a multi-cloud strategy. So here is the overview where all primary services between AWS, Azure, and GCP are mapped with links pointing to product home pages, which I prepared.

The link to the repo with links is in the comments.

If you have any feedback or find some missing services, please contact me or write in the comments.

#aws #azure #cloud #gcp #cloudcomputingImage Bonus 1: Monitoring Cheat Sheet Image
Nov 23, 2023 59 tweets 14 min read
𝗧𝗵𝗲 𝗠𝗼𝘀𝘁 𝗜𝗺𝗽𝗼𝗿𝘁𝗮𝗻𝘁 𝗖# 𝗙𝗲𝗮𝘁𝘂𝗿𝗲𝘀 𝗙𝗿𝗼𝗺 𝗩𝗲𝗿𝘀𝗶𝗼𝗻 𝟲 𝘁𝗼 𝟭𝟮

C# language has been developing for more than 20 years now. Yet, every year, we see new versions of the language with new, exciting features. Some of their features aren't just updates but tools that can drastically enhance your coding efficiency and software design.

Here is an overview of the main C# features from C# 6 to 12, released last week. You can check a short explanation and 𝗮 𝗰𝗼𝗱𝗲 𝘀𝗻𝗶𝗽𝗽𝗲𝘁 𝗳𝗼𝗿 𝗲𝘃𝗲𝗿𝘆 𝗳𝗲𝗮𝘁𝘂𝗿𝗲 (more than 40 most important features!).

🧵

#charp #dotnet
Image C# language history Image
Nov 18, 2023 9 tweets 2 min read
𝗦𝗤𝗟 𝗕𝗮𝘀𝗶𝗰𝘀 𝗖𝗵𝗲𝗮𝘁 𝗦𝗵𝗲𝗲𝘁

A great SQL Cheat Sheet by LearnSQL .com.

🧵

#softwareengineering #sql #data Image Image
Jul 10, 2023 4 tweets 2 min read
𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝗔𝗻𝘁𝗶-𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀

We are all familiar with GoF Design Patterns which represent a general reusable solution to some occurring problems in software design. They are templates for how to solve a problem that can be used many times,… https://t.co/BlBIOrYiQrtwitter.com/i/web/status/1…
Link: sourcemaking.com/antipatterns/s…
Jun 29, 2023 6 tweets 2 min read
𝗛𝗼𝘄 𝗧𝗼 𝗗𝗼 𝗔 𝗚𝗿𝗲𝗮𝘁 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗗𝗲𝘀𝗶𝗴𝗻

In his latest talk at Clojure Conj 2023., Rick Hickey, a creator of Clojure, talked about some great techniques to create a great software design in practice.

Here are the most important ones:

𝟭. 𝗔𝗱𝗱 𝗮… https://t.co/4q7K1hjz3Ktwitter.com/i/web/status/1…
Decision matrix
Mar 18, 2023 14 tweets 3 min read
𝗛𝗼𝘄 𝘁𝗼 𝗙𝗶𝗻𝗶𝘀𝗵 𝗠𝗼𝗿𝗲 𝗪𝗼𝗿𝗸 𝗧𝗵𝗮𝗻 𝟵𝟬% 𝗼𝗳 𝗣𝗲𝗼𝗽𝗹𝗲

We all struggle with the things we should do next and what to prioritize. Here comes the 𝗚𝗲𝘁𝘁𝗶𝗻𝗴 𝗧𝗵𝗶𝗻𝗴𝘀 𝗗𝗼𝗻𝗲 (𝗚𝗧𝗗) 𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸 to help.

🧵

Image: @ehamberg.

#productivity It was developed by David Allen in the 1990s and the main idea behind GTD is that by getting all of your tasks and commitments out of your head and into a trusted system, you can reduce stress, increase productivity, and free up mental space to focus on more important things.