HACKER Q&A
📣 greggyb

Who do you talk to about system architecture and design?


Who do you talk to when you have architectural questions? Where do you get feedback on design options? When you want to discuss tradeoffs of those options who do you talk that over with?

I am one of two technical cofounders for a small software company. We have really good discussions about the design of our product. I am pretty good at searching. We are comfortable weighing alternatives and making a decision and living with the consequences. All that said, sometimes I want to discuss with other people some of the design challenges we face, or seek input on how people have approached the problem.

Are there fora that you enjoy for such discussion? It seems that it does not fit with the theme of most Q&A sites. Most IRC channels I know of are pretty focused on their own specific topic.


  👤 ericbarrett Accepted Answer ✓
1. Pick a random tech stack

2. Make a blog post and share on HN

3. Let the commenters tell you everything you did wrong and what they would have done instead

Put more seriously—I think if you don't have an external professional network to lean on, then you should blog it, talk at conferences, etc. Saying "we aren't sure this is right but it's what we came up with" will definitely invite comment. Keep an open mind and remember any publicity is good publicity: your harshest critics will still be engaging and giving you feedback.

I don't think chat services (IRC, Matrix, Discord) are a good fit here, unless used to talk to a group of people you already know and have some cachet with. But I might just be old-school.


👤 gwbas1c
Just remember that many popular stacks are due to marketing; often the marketing pushes you in ways that are highly profitable for whoever sells you the stack. Unfortunately, if you follow their instructions to the T, you will spend more money, and may make architectural mistakes that hold you back.

(IE, be careful before you drink the kool-aide on "cloud" or whatever comes next.)

Also, many blog posts are by people trying to make themselves feel important, pad their resumes, or otherwise self-promote. Tone management in a blog post can make an awful architecture sound wonderful. Other wonderful architectures may be the wrong fit for what you're trying to do.

Finally: Avoid many layers of abstraction. It just adds unneeded complexity to your code and makes it too hard to onboard new hires. Carefully review all 3rd party libraries before you commit to using them. Sometimes introducing a 3rd party library to "save an hour today" will quickly "burn a day, week, or month" later.


👤 johnbellone
The unfortunate truth here, for me at least, is that I end up talking to the same group of professionals that I know and trust for the past decade. We are all extremely successful but it often turns into an echo chamber and takes a long time for new ideas to gain a foot hold. I am a firm believer that our industry as a whole suffers from the lack of a "professional society" like some of the traditional engineering disciplines. We need a way to discuss, debate, and decide upon good practices. In a way, this what the RFC ecosystem supports, but it would be great if it were organized in a much better way.

👤 mathgladiator
My friends all forward people with architecture questions to me, and I mentor/consult people. I learned architecture by working at AWS, and I've gathered a ton of insight by mentoring people over the years.

Beyond being in the boiler room and being a part of a principal engineering community, I basically just do the math and think about it. I also try new things, and I'm building my own architecture at the moment.

The core challenge is that architecture is fundamentally about trade-offs, and it's hard to navigate because we don't share challenges. The essential skill is to solicit a sufficient number of requirements to understand how the trade-offs pull in any direction.

The other thing: there is no perfect, no silver bullet. There can be, however, slam dunks which companies will monetize for specific verticals.


👤 michaelanckaert
I have been thinking about starting some form of discussion group especially for these type of discussions. I work as a CTO / freelance architect and pick up this kind of feedback quite often. StackOverflow is perfect for programming questions but when dealing with architecture discussions a more face to face, back and forth discussion is required IMO.

👤 rr888
List a position for well paying architect. Reach out to senior people in competing companies to apply. Interview lots of people who look good, and ask them to design your system then discuss details with each one. I wish I was kidding but that is how it feels as a candidate.

👤 lotw_dot_site
In my own experience developing a new kind of system from the ground up, I can only say that you have to talk to yourself, but as an extended conversation over a good number of years (a decade in my case). It is essential to occasionally stop working on the thing altogether, and clear your mind of all thoughts relating to it (if possible). If your system is truly compelling enough, it will call you back from out of the depths of your subconsciousness. Then you can see it afresh and be able to evaluate it as it truly is.

👤 eatonphil
My (one-person) company runs a discord for folks interested in software internals: compilers, databases, emulators, distributed systems, games, etc.

We have folks talking about their technical challenges at work (myself included). I've seen a number of times someone get unstuck talking through on there.

I think live chat is the best way to work through open-ended questions. Like others have pointed out, non-forum QA sites are (maybe just by choice) not great for that.

Feel free to hang out: discord.multiprocess.io.


👤 rtp4me
Just a thought, but why not connect with a few folks on the monthly HN Seeking Work thread? Look for someone close to your area of interest then get their feedback. Also, I suggest looking at folks outside your area of expertise as many tech areas tend to bleed together. Be up front about the request and make sure to get an NDA signed. You'd be suprised at how many people will happily spend 30mins-1hr with you just to chat and give advice (probably for free!).

A second thought, maybe HN can have a monthly "Let me help you with..." thread where people just post their core skill set for others to leverage. As for me, I am not a programmer but am very fluent in infrastructure architecture. I can speak days/weeks on servers, networking, storage, virtualization, operating systems, etc. Always happy to chat with people, understand their problems, and answer questions relative to my area of expertise.


👤 siddontang
As a chief engineer, I started to work with my colleagues to build an open source distributed, relational database from scratch 7 years ago. At that time, MySQL Sharding, or NoSQL was the popular solutions for scalability. So the first challenge for us is how to design our system architecture? Followings are something we do:

- Paper. We learned a lot from the paper, like Google Spanner, Google Percolator, Raft Algorithm, etc. - Learn from the open source projects and Leverage the power of community. E.g, we learned storage engine from RocksDB, ClickHouse, etc. to build our own engine. We also let the community contribute ideas and codes to our product. - Try to link people as many as you can and learn from them. E.g, when I read a paper, mostly I will try to contract the authors and have a discussion about the paper with them, at the same time, I also ask them to introduce their friends to me for further communication. - Sharing. The more you go out and share like Meetup, Blog, Webinar, etc., the more you get.


👤 spelunker
Obviously this won't work at a small startup, but at our large tech company there are plenty of tech leadership roles to bring design questions to. Senior/lead engineers on my team, as well as a principal engineer in my group that encourages us to meet with them when we need help.

I guess my point is be sure to enable paths for those types of roles to exist in your company as it grows - technical leadership that isn't people leadership.


👤 mh-
There are some good channels on the Rands Leadership Slack for discussing architecture/design decisions.

https://randsinrepose.com/welcome-to-rands-leadership-slack/


👤 bob1029
I have similar struggles.

So far, HN has been the best non-work community for developing my ideas.

My strategy is to find a post like "SQLite 3.39.2" where I will make a comment about how I use that technology and then get into some nuance regarding certain concerns in an indirect manner. Inevitably, someone will gently correct me or provide some alternatives I might not have considered yet.

I have done a fair # of "design reviews" using HN in this manner. I don't think any of this goes against the rules or spirit of the community. Others seem to benefit from reading and participating in the same conversations.

Maybe we need a more long-form aspect to HN where these sorts of conversations would be easier to have?


👤 brudgers
You might hire a consultant on hourly rate and get all the discussion you want.

Good luck.


👤 techsin101
I wish there was something like stackoverflow but not toxic and only for these kind of questions. I've found https://security.stackexchange.com/ to be pretty good around security design questions

👤 a_square_peg
I think a mentor in a similar field might help. I have this issue also and it's been hard finding a place on the web for this type of discussions. It seems that most people will not seek to understand your problem but to advice you to adopt things that they know, irrespective of how suitable the solution might be for your specific use case.

What helped me was to use the experience that I have from aerospace engineering when making architectural decisions, where we have had to budget and do trade analysis on key performance metrics such as accuracy, mass, power, bandwidth and cost. It's been surprising to me when I talk to seasoned developers who recommend various solutions without first asking me about number of users and requests and data sizes I'm looking to serve.


👤 nogridbag
I have the same dilemma. I've worked at small startups most of my career so unlike many here I don't have many colleagues to lean on.

Recently I was tasked with building a new product that will bring significant revenue to the company. And with that comes tons of new challenges and responsibilities that I haven't had to face previously. From the non-technical side I have to wear basically every hat, project management, recruiting and interviewing, managing the team, etc, because I was given no resources or direction and these things are needed to build a successful product. With that comes lots of people skills that impact the product and architecture, e.g. making sure you hire compatible people, giving people freedom to own things but still giving important direction and feedback, and most importantly reining them back in when they try to introduce the latest tech fad into the product.

Getting back to the question, from the technical side, I had to decide if I'm going to stick with the same tech stack and basic architecture as the rest of our products and if not, I better have a damn good reason. And the truth was, we had essentially zero architecture, and the frameworks we were using in our existing products was a major contributing factor to a high defect rate. And even worse, management assumes I can re-use large parts of our existing products code but that code is tightly coupled to the tech stack they chose. Ultimately the success of the product was on my shoulders. Every night I was reading up on software architecture, researching web frameworks, listening to architecture podcasts. Much of that time was searching HN to read postmorterms of different architectures trying to separate the BS from what works. I chose the hard path of deviating from the existing companies stack. We're now quite a ways into development and that initial effort was worth it. We have a very simple layered architecture in a monolith. Our code quality is fairly high, we have solid unit tests, and our small team is very happy working with the codebase. With that said, I still have imposter syndrome especially when interviewing people that have more experience in areas I'm lacking. And every dev interview I seemingly have to explain and justify why I'm not using microservices!


👤 jedberg
I'm surprised no one has mentioned conferences. Admittedly they have been a bit quiet lately, but things are starting to pick up again.

The "hallway track" is a great place to talk to other practitioners about what they are doing, as well as BOF (birds of a feather) sessions. Especially if you can find a conference with an unconference section (like most DevOps days for example), that's another great venue for discussing things.

You'll also get to meet people who you can potentially reach out to directly with questions. It's a great way to build up a network if you don't already have one.


👤 kylixz
Used to hang out more on IRC for various platforms and tools but those are less active these days. https://netsplit.de/channels/?net=Libera.Chat has a decent list on Libera Chat.

https://randsinrepose.com/welcome-to-rands-leadership-slack/ can be a good resource for talking with folks of diverse experience and backgrounds about architecture.


👤 kgeist
Our experience is the following:

- the product was initially developed chaotically, it was a big ball of mud without any architecture, it was hard to maintain

- the first step was consulting with a senior dev from another team (who happened to teach system architecture at a college), he gave directions what books to read, etc.

- then our senior devs completed an online architecture course by a former CTO/turned consultant (I don't know who recommended him, but he's pretty respected in the field, it seems), the class had like 20-30 students with live discussions and practical homework

- then they invited that consultant to audit our code/our processes, he highlighted the problems and suggested changes in our processes

- then we made it obligatory to always have architecture reviews before greenlighting new features, i.e. devs discuss code changes in 1-2 hour sessions, everyone learns in the process (including juniors)

- every year we started sending devs to thematic conferences/meetups where they can talk to other devs and learn how other companies design their products

- we host our own meetups sometimes; there's also thematic Telegram channels both created by us and others

- some devs are good at networking so they can arrange meetings/calls with acquantainces from other companies (in the same field as us) and discuss design problems in person


👤 Karawebnetwork
A lot of communities have discords and slacks. On those, there's almost always a #random channel. Visit a view and ask questions. Usually people who hang out there are the kind of people who love helping. For example, I did a Symfony PHP project once and still hang around their chatrooms sometimes just for their userbase. People who build frameworks and libraries usually have the skillset to answer more "high level" questions.

👤 GauntletWizard
I'm incredibly lucky that I can talk to my father, who's also in the business and has had a long and varied career.

When he's not available, though, a rubber duck will do. Explaining it to a rubber duck, or even better a friend who has no context into your system. Explaining things simply, just by forcing you to think about them and break them into simple components, helps a lot.


👤 Fire-Dragon-DoL
This Slack: eventide-project-slack.herokuapp.com

It was originally about a ruby framework, but it's a slack server where we had great architectural discussions all time (still there!). When the discussion gets too complex, we would switch to videoconference.


👤 kinduff
I usually discuss some parts in ##programming@libera.chat, but for work stuff I rely in the people I've trusted for a long time and coworkers. I like to write documentation to share the patterns, a few diagrams of how the data should flow works like a charm.

👤 purpleblue
I have long time friends who are much smarter than me. I like bouncing ideas off them, and we have good discussions.

I would suggest going/presenting at conferences, and networking with the other speakers and form your own network where you can ask questions like this.


👤 wink
These days I have one IRC channel and one matrix channel with friends and people whose opinion I trust although I've never worked with them. I guess to be blunt you'd call it this "networking" thing, but in this case it's a network (haha) of people who've been in tech for 10-20 years as well and it's good enough to bounce abstract (or semi-concrete) ideas off, when your current team either has no experience or you deliberately want some external opinion. Not helpful as in easily reproducible, I guess.

👤 wuliwong
At ParkMobile we have a pretty vibrant community regarding learning, designing, and implementing architectures. We have various "guilds" which are monthly meetings dedicated to various topics from specific languages to event streaming. I speak with my boss and fellow managers a good deal as well as on my team. It's one of my favorite things about the company, the desire to learn and the willingness of people to put their ideas out there for discussion.

👤 Melatonic
Spiceworks used to be the go to place to discuss stuff like this and even had in person meetups. Not sure if they still do but it is worth checking out!

👤 blablabla123
When I was co-founding, at points of time as only tech person I usually went to the SE network. In that case softwareengineering.stackexchange.com. It's quite good but of course the question format needs to be kept otherwise nobody will give a full answer... (Also I think the process of writing it up alone sometimes solves some uncertainties) In the comments sometimes actual discussions come up

👤 ensemblehq
I’m lucky enough that I work with other consultants who are similarly minded and happy to have a discussion. It’s useful given his experience deploying all kinds of architectures across many other clients but he’s also very open to my thoughts/opinions on what the architecture should be.

I’m happy to be a sounding board for you if you’d like.


👤 pydry
Whatsapp/Signal groups of ex-coworkers - decent and smart people I worked with previously whom I trust.

👤 fabian_shipamax
Try to build a network of personal in-person relationships who you then contact ad-hoc by WhatsAp, email,etc. As a start reach out to other technical managers to get advise on a specific topic and see if there's a chemistry. If not try someone else. I'm happy to chat.

👤 mbesto
I've done nearly 300+ interviews with CTOs regarding their technical architectures over the last 8 years.

AmA


👤 idomi
First you can always research on your own, there's tons of resources online and in git. If that doesn't work I find a teammate or a friend with the right domain expertise. There are also some useful slack communities for instance on MLOps etc.

👤 sam0x17
I have been CTO at a number of YC and early-mid stage startups over the years and offer consulting services on the side for just these sorts of architecture problems and discussions, if you're interested, feel free to contact via my bio :)

👤 vladfr
I used to do consulting calls on Clarity.fm. People looked me up and we had 1-2 hour calls on high-level stuff, but I feel that the more implementation-heavy discussions never really helped anyone.

If you want, feel free to reach out via my bio.


👤 ramoz
A lot of personal research, and scattered conversations with connections at some of the big cloud companies who are doing similar things (scaled platform and AI model serving infrastructure).

Clubhouse was awesome for this until they destroyed themselves.


👤 nfhshy68
I just don't really run into these problems anymore or at least the feedback I get would be mostly useless affirmations.

Once upon a time coffee breaks and after work drinks was the most common time these discussions took place.


👤 mkl95
Coworkers

👤 danabrams
My therapist...