đź“–
System Design
  • Home
  • Learn System Design Daily
  • System Design Steps
  • List of design questions:
  • My System Design Interview Checklist
  • CheatSheet
  • Programming Language Jargons
  • Scaleable Design
  • Agile Scrum
  • Uber
  • Gmail System Design
  • Distributed Rate Limiting
  • Audio Search Engine
  • Code Style and Review
  • Calling App Design
  • Low Level Design: Payment Tracking App
  • Machine Coding :Cache
  • Interview Advice
  • URL Shortner
  • Unique ID in Distributed Systems
  • Load Balancing Algorithm
  • API Architecture
  • Desgin Practise for Rest API
  • Performance Practise for API
  • API Gateway
  • API Security Hacks
  • Distributed Design Patterns
  • Fault Tolerance in Distributed Systems
  • Microservice Communication Design Patterns
  • Zipping /Compression
  • Database
  • Mongo DB
  • SQL
  • PostgreSQL
  • Database Designs
    • Designing a location based database
  • Building Database
  • Design Patterns
    • Microservice Architecture 10 Design Patterns
    • Interaction Patterns
  • Locale.ai
  • Version Control
  • Caches / Caching
  • High Level Design
  • Low Level Design
  • Containers, Docker
  • Docker
  • Linux Directories
  • Design Pattern for Software Architect
  • S.O.L.I.D Principles
  • Monitoring and Telemetry for Production System
  • C4 model
  • LRU Cache
  • VSCode
  • Chatbot Architecture
  • Streaming API Repsonse
  • Latency in System Design
  • Cloud
    • Azure
    • AWS
  • Builds
    • Jenkins
Powered by GitBook
On this page
  • How to Improve Software Architecture Skills Daily
  • Find 2 or more solutions for each problem you meet
  • List the trade-offs and choose a solution
  • Have a technical discussion with a non-tech person
  • A detailed example for discussions
  • In conclusion

Was this helpful?

Learn System Design Daily

PreviousHomeNextSystem Design Steps

Last updated 3 years ago

Was this helpful?

How to Improve Software Architecture Skills Daily

· 3 min read

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.Photo by on

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.

Ella sheer
Follow
Jun 7
Nathan Lemon
Unsplash
Ella sheer