Coding · Engineering

How do I find the right software architecture?

Zara Siddique Creative coder, designer, film maker

Last updated on May 18th, 2017

I've built a few small apps using Django and Angular 2. I'm still young and growing as a coder, how do I know whether I should be switching to some other framework for a new project?

Would the advice be to:

- try out a few and see what they're like

- stick to what I know and get very experienced in those areas

- research what different ones are good for (finding this the most difficult)

- something else?

Brian Sletten President

May 19th, 2017

It's not any easy answer, but it is a great question. An architecture meets a series of needs. To one extent, the answer to your question is, consider a new architecture when the one you have no longer meets your needs. The real answer is, in having the experience in architecture (which you suggest you do not), you migrate before you get into the situation of not meeting the needs. Architecture requires a set of skills that aren't usefully taught except in the course of a career. There isn't even a tremendous consistency to the thinking that goes into it. But there are some basic concepts of modularity, layering, etc. that you will find people agree upon. Typically, inexperienced architects focus on "universal" principles like scalability at the expense of early release. Generally, you have two concerns to address: technical uncertainty and market uncertainty. The technical uncertainty you can address with spikes, proofs of concept, etc. market uncertainty requires going to market to see if anyone cares about what you are doing. So, the architect focusing on scale can be said to be addressing the millionth customer without considering the first customer. A seasoned architect would employ techniques such as layering to give herself room to grow without having to address issues of scale upfront. In your scenario, Django is likely to have more of an impact on scale than Angular 2 would. You may not run into a situation where you'd notice this, however. I absolutely encourage you to dig into other types of architecture. One of the non-obvious realities is that architecture is not just about describing what you have, but prescribing the properties you want in a system. Roy Fielding's thesis that defined the terms of REST was ultimately more about that an architectural style can induce desired properties by making specific choices. REST is just his take on explaining the success of the Web as an architectural style. With that in mind, experiment with architectures that will have different properties: evolvability, asynchronous communication, scale, etc. Does this help or just raise more questions?

Cezar Halmagean Web tech specialist helping early stage tech startups

May 19th, 2017

Aside from what others have said, I would add the importance of learning and using more languages. This is not something you will be able to do right now, it's more of a plan to improve yourself as a programmer in the long run.


Until you can fully understand the strengths and weaknesses of each option, it's really hard to choose one over the other.


So my advise is to learn everything you can about your current stack, then play with others and see how they differ from what you know. Make sure to set your expectations right though, this process is going to take years.


Best,

Cezar Halmagean

Mix & Go - Helping early-stage startups bring new products to market

mixandgo.com

David Jeba

Last updated on May 19th, 2017

Consult!


its always good to consult with someone and get their opinion on which platform it is good to start the project.

as Craig Hummel said;


there are design rich simple apps

there are simple apps with hard logics


community help is very important.its the backbone of your evolution. you have to be in multiple developer communities so that you know when to ask for help and where to ask for


personally i love Xamarin apps on Azure services...

Patrick Tescher Founder and Lead Mobile Engineer at WillCall

May 18th, 2017

I would do a combination of A and B. You should always pick a framework you know vs the "right" framework but its good to know how different frameworks work.

Craig Hummel Director of Business Development at WebTuner Corp.

May 18th, 2017

Zara, This may sound obvious but your architecture decision would depend on what you are trying to do. For example, a single purpose single user gaming app for Windows with a local data store would be different than what you might do for a multi platform, streaming or social media app. Is this for an actual project or are you just noodling around to get a feeling for different tools?

Mike Makuch Software Engineer / CTO / Cofounder

Last updated on May 30th, 2017

Much is written about all types of architecture. Martin Fowler is one good source of info:

https://martinfowler.com/eaaCatalog/

12 factor is a popular rule of thumb for SAAS

https://12factor.net/

Perhaps start with definition:

https://en.wikipedia.org/wiki/Software_architecture