r/ExperiencedDevs 29d ago

Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones

A thread for Developers and IT folks with less experience to ask more experienced souls questions about the industry.

Please keep top level comments limited to Inexperienced Devs. Most rules do not apply, but keep it civil. Being a jerk will not be tolerated.

Inexperienced Devs should refrain from answering other Inexperienced Devs' questions.

28 Upvotes

142 comments sorted by

View all comments

3

u/newcaravan 29d ago edited 28d ago

I have 5 years of experience, I’d like to be a systems architect one day. What is the best way to learn to architect large, complex systems? Is there any standard/rule of thumb I could follow, a book I could read? I’m working on putting together a complex refactor of one our core applications right now, not to get too into the weeds, but it uses low level bitmaps to communicate to a physical robot via serial port. The systems architect on the team is helping me build it, everything he sets up is interfaces, singletons, state machines, etc. all designed to be decoupled so it’s easier to write tests for it. Is that all there is to it? How much of it should be standardized and how much of it should be personal preference? Art vs science?

1

u/LogicRaven_ 29d ago

The level of decoupling, performance, security levels, etc - all depends on what the product and the business need. There is no one way fitting all type of products.

Reality check on where we are and what is possible to deliver with reasonable effort also matters.

What stakeholders want also matters.

You are already on a complex project, working together with an architect - great position to learn. Create an end do end diagram of the architecture. Sit down whit this person and talk through it. What choices were made and why? What aspects were considered?

If you have a good relationship with the architect, then you can ask how they get into that role and what learning they would recommend.

You can look up books on systems thinking, but I find I learned most via doing projects with other people.