How to Improve Software Architecture Skills Daily
Omar Ismail
Senior Software Engineer @ Digitinary | Java 8 Certified? | Spring & Spring Boot?????? | AWS? | Microservices ?? | RESTFul Apis & Integrations ?? FinTech ?? | Open Banking ?? | Digital Payments and Transformation??
Thanks To the original writer :
https://levelup.gitconnected.com/how-to-improve-software-architecture-skills-daily-6f362d4e6493
3 practical exercises that you can do during any programming task.
There are many ways to grow as a software developer, and all of them will require time and effort. I suggest practical exercises that can be part of your daily tasks, with no need to start your own project or join a Bootcamp.
Find 2 or more solutions for each problem you meet
Improves problem-solving & creativity
Whether your current task is debugging, writing new code, or refactoring, dev missions are all about problems and solutions. The problem scope can vary, from reusing existing code to choosing a database.
Even if you already choose the solution, take the time to do this thought experiment.
List the trade-offs and choose a solution
Improves prioritization & detailed thinking.
Expose ourselves to more criteria, learn about other considerations why we should or should not do things.
Go over the solutions and rank how each solution meets each criterion. Keep your judgment clear; even a “bad” solution should get a good rank in some aspects.
Finally, prioritize the criteria- try to understand what aspects are the most important to your company and choose the solution that maximizes the benefits for your case. This is the work of a tech leader.
Have a technical discussion with a non-tech person
improves communication & technical understanding
Different people have different abilities to understand your work. Talking with them will force you to zoom out, generalize details into a high-level concept or zoom in on details. I would actively start discussions or try to explain a problem to someone to test my own understanding of the issue.
A detailed example for discussions
I wrote down 4 examples for types of people, what your interaction is and how an explanation will sound.
领英推荐
Senior engineer
Is someone with more experience than you in the subject matter or is great at asking the right questions.
Presenting to them requires you to have a deep understanding of the subject and what’s under the hood.
I often find myself going back to research some more after this kind of talk- and this is great!
“I integrated WebRTC: I added the MAOI API, integrated the Janus libraries and converted WS to WSS“
Team member /Junior
is someone with solid tech skills that you need to guide. This requires you to generalize details into clear guidelines and flows.
“I integrated WebRTC: added a new API called … , Integrated a library named … it’s documentation is …. and converted web sockets to secure web sockets, I did this in order to …”
Non-developers Technical person, such as QA or project manager
is present at discussions, and you need to work out obstacles or gain their support. It would be best if you communicated without them knowing every technical detail of your work.
“The WebRTC integration is estimated in 3 sprints and will require collaboration with backend team. I want to spend 4 more days to enhance security”
Non-developers and non-tech people, such as HR or your friends
is someone you should be able to share your work or demonstrate your qualities in a job interview, without discussing the tech aspects of the project at all.
To HR: “I integrated WebRTC, which is a protocol to transport video on the web. my work included collaboration with other teams, where I led the conversations but we all agreed on the solution together. I also took the initiative to enhance the security of the feature.”
In conclusion
I suggested 3 exercises you can do in the scope of every development task you are doing, that will help you improve your architectural skills.