12 ms·
Ask HN: 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.
- techsin101 4y agoI wish there was something like stackoverflow but not toxic and only for these kind of questions. I've found https://security.stackexchange.com/ https://security.stackexchange.com/ to be pretty good around security design questions
- vladfr 4y agoI 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.
- michaelanckaert 4y agoI 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.
- lucakiebel 4y agoI also feel that the questions would be too open ended for the stackexchange model
- michaelanckaert 4y agoAnd also not suitable for the “correct answer” model on SO. Two architectures can be equally correct but with a different set of trade offs.
- zerkten 4y agoThey have tried to split out the Software Engineering Stack Exchange site for this per the reply at https://meta.stackexchange.com/questions/124867/where-should-i-ask-software-architecture-design-questions https://meta.stackexchange.com/questions/124867/where-should.... As you note, these discussions are more complex than just a question and answer. I'm curious how often you find that people get actionable information from outside that they couldn't have discovered with better introspection or understanding of the basics. I'm in a similar role and find that people want validation of working systems due to some new person casting shade, have a desire for more exotic technology, or just want people to shoot the breeze with peers on these topics. The answers to their actual problems are often staring them in the face, but are too mundane or boring to accept. Given the pressure to deliver, they'd be better off focusing on the basics for their stakeholders which is the place I try to get them to.
- mattbrewsbytes 4y agoI think a rational discussion of an architecture issue shouldn't discuss specific programming languages/frameworks or options of exotic tech. It should be at a much higher level because those things mostly aren't relevant. If the discussion leads to "XYZ message thing behaves this way, how do you ..." that is more of an implementation/programming discussion and not architecture.
- deleted 4y ago[deleted]
- ankur- 4y agoYou also get ten different opinions when talking to ten different architects. I agree that having a bit more involved discussion will lead to a more informed opinion. From my experience of working as an architect for more than a decade, finding someone with domain knowledge would help a lot if depth is important. A generalist can help validate the design decisions at a high level or suggest alternatives when appropriate.
- greggyb 4y agoI would love to get ten different opinions or approaches on topics such as this. Ultimately, I need to make decisions for my product and my company on my own, but more inputs will allow me to evaluate more options and make a better choice ultimately.
- ensemblehq 4y agoI’m happy to support the group if you do start something. I’ve been thinking of starting a group as well.
- johnbellone 4y agoThe 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.
- michaelanckaert 4y agoWhile it would be nice to decide on best practices, I fear that the amount of cargo culting and NIH syndrome would quickly render the initiative pointless :-(
- johnbellone 4y agoThere is a place for a professional society but we need to think about it much differently than traditional engineering and closer to how the academic subculture operates. We're humans and we've been trying to figure out since the beginning of our existence how to effectively organize and communicate information, but making a decision on that information, that is the hard part.
- greggyb 4y agoThe idea of an academic model definitely appeals to me. One thing I often struggle to find which is very common in academia is a literature review and a survey of common approaches. This sort of thing would be hugely valuablen tackling various challenges in building products and services. Some examples we are currently tackling are secret management and rolling out updates. I can easily find products that promise to solve these. I can find some articles about "how we, at $COMPANY, solve this particular problem." If I am really lucky I can find one or two articles that answer "here is what we, at $COMPANY, do, and here are one or two alternatives we did not like for reasons relevant to our context." It is very difficult to find a proper review that lays out common patterns of implementation and gives a framework to discuss tradeoffs thereof.
- kinduff 4y agoI 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.
- greggyb 4y agoThanks for sharing! I had not come across this channel yet.
- eatonphil 4y agoMy (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.
- greggyb 4y agoThanks for sharing! Will check it out.
- mh- 4y agoThere are some good channels on the Rands Leadership Slack for discussing architecture/design decisions. https://randsinrepose.com/welcome-to-rands-leadership-slack/ https://randsinrepose.com/welcome-to-rands-leadership-slack/
- greggyb 4y agoThanks for sharing! I will take a look at this.
- ericbarrett 4y ago1. 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.
- n3t 4y ago> 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 It's called Cunningham's Law[0]: > Cunningham is credited with the idea: "The best way to get the right answer on the Internet is not to ask a question; it's to post the wrong answer." This refers to the observation that people are quicker to correct a wrong answer than to answer a question. [0]: https://en.wikipedia.org/wiki/Ward_Cunningham#Law https://en.wikipedia.org/wiki/Ward_Cunningham#Law
- ID1452319 4y agoYou missed a trick. You're supported to say it is Murphy's Law and then someone will come along and tell you it is actually called Cunningham's Law, thereby proving Cunningham's Law.
- CRConrad 4y agoHere's guessing that was intentional, so yet another proof: *supposed.
- dariusj18 4y agoNice to see someone born in Florida represented.
- pydry 4y agoWhatsapp/Signal groups of ex-coworkers - decent and smart people I worked with previously whom I trust.
- spelunker 4y agoObviously 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.
- greggyb 4y agoThanks for this input. I do hope that we are able to build both a valuable product and a company that I would be excited to work for even if it were not my own.
- eternalban 4y agoI hesitated to post earlier, intending to chide you for (or rather our industry for this relatively recent trend of) treating system architecture and design as a sort of commodity information. The technical bones of your business are no less an expert subject matter, requiring continual oversight, than the financial, marketing, and operational aspects, and you should treat it as such.
- greggyb 4y agoI totally agree. This sort of thing is not commodity information. I am not looking for a right answer or an oracle (and certainly not Oracle!) to consult for issues we face. I chose my wording carefully in my question to emphasize discussion, feedback, tradeoffs, and inputs. I do not expect anyone to give me an answer, but I would greatly appreciate being challenged, questioned, and perhaps informed of alternatives. I am also happy to do the same for others where I have worthwhile experience. The closest thing to commodity information would be an awareness of alternatives/options in a broad category. This also has value, and can sometimes be found. The most common source I have seen for this sort of thing is a cursory overview of the options that a product is replacing in thinly veiled sales copy for a product aiming to solve the problem.
- 4y ago
- lotw_dot_site 4y agoIn 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.
- and0 4y agoI love this answer. I have a passion project that has a unique architecture, and every time I start to lose interest I feel a sense of grief over it, but a month later I find myself obsessing over the idea and I'm just as excited to pick it back up.
- kylixz 4y agoUsed 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 https://netsplit.de/channels/?net=Libera.Chat has a decent list on Libera Chat. https://randsinrepose.com/welcome-to-rands-leadership-slack/ https://randsinrepose.com/welcome-to-rands-leadership-slack/ can be a good resource for talking with folks of diverse experience and backgrounds about architecture.
- greggyb 4y agoThanks. This is the second recommendation for this group, so I am eager to take a look.
- gwbas1c 4y agoJust 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.
- DMell 4y agoThat is a lot of what not to do. What are some ways to learn what to do for someone just getting into the field?
- jtmarmon 4y agoSee a tech stack that seems cool/sexy/interesting? Make something up to build with it over a weekend to try it out. Put your blog on Kubernetes just for fun.
- felipeccastro 4y agoBuild your own project for learning and make your own choices. Ideally, something that you intend actual people to use, not just toys, so real-world constraints become a factor in the decisions. There's usually no right or wrong answer - it's all about tradeoffs. I personally prefer to keep the stack and architecture as simple as possible, but many others prefer to rely on 3rd party code as much as possible, regardless of added complexity. Sometimes my choices bite me (I have to reinvent more wheels than I was expecting), sometimes the too-many-layers-of-abstraction approach will bite too (like errors you have no idea why they happen). Compare different solutions available to the same problem, understand their tradeoffs, and then pick what better aligns to the needs of your project. If you're working with a team, you probably will not be making that decision alone, but the process could be the same.
- wink 4y agoThese 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.
- rtp4me 4y agoJust 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.
- brudgers 4y agoYou might hire a consultant on hourly rate and get all the discussion you want. Good luck.
- ysavir 4y agoI second this. You aren't just looking for a social outlet, you're looking for grounded advice that will help your product's returns in the short and long term. A consultant is exactly the sort of thing you should be looking for.
- Karawebnetwork 4y agoA 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.
- ramoz 4y agoA 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.
- rr888 4y agoList 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.
- Gravyness 4y agoI know that some companies do data mining on candidates, so it's very likely that some companies out there are doing exactly this.
- nfhshy68 4y agoI 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.
- purpleblue 4y agoI 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.
- mbesto 4y agoI've done nearly 300+ interviews with CTOs regarding their technical architectures over the last 8 years. AmA
- speedgoose 4y agoHave you considered publishing about it?
- mbesto 4y ago(1) I'd love to (2) don't have the time right now (3) would have to be very non-specific due to NDA.
- rr888 4y agoDo CTOs really understand their systems, implementations and realities on the ground? I kinda feel at that level its about budgets and choosing platforms based on marketshare and industry. They aren't looking at alternative platforms more than once a decade.
- mbesto 4y agoHeavily depends. I've seen CTOs with 4 devs and CTOs with 100 devs who don't even know what programming languages they use. Which frankly is a bit of a red flag. There are probably only 500 CTOs globally who operate at the level of just "budgets and choosing platforms" with another ~100k CTOs who really are de facto system architect. All depends on scale, size of biz, etc.
- rr888 4y agoYeah I guess I've only worked in those big 500 companies.
- mkl95 4y agoCoworkers
- mathgladiator 4y agoMy 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.
- Melatonic 4y agoSpiceworks 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!
- a_square_peg 4y agoI 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.
- jedberg 4y agoI'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.
- bob1029 4y agoI 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?
- akiselev 4y ago> 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. It's absolutely in the spirit of HN and those kinds of conversations are _the most_ [1] valuable out of anything in this community. When researching a new piece of infrastructure or SaaS or even book topic one of my first search queries is "site:ycombinator.com [x]" I literally searched "site:ycombinator.com sqlite" just yesterday and discovered rqlite, dqlite, litestream, and so on. Repeated the search with each of the keywords and got tons of discussion comparing the tradeoffs, helping me identify solutions for several stalled projects with barely a look at the home pages. I was done with research and implemented the most immediate need within a few hours thanks to HN commentary. This would just be the start of the due diligence for something I'd use at work but (especially) for low risk personal projects it has saved me untold amounts of time and effort by shortcutting the discovery process altogether. [1] citation for extra emphasis
- otoolep 4y agorqlite creator here, happy to answer any questions about it.
- idomi 4y agoFirst 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.
- ensemblehq 4y agoI’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.
- deleted 4y ago[deleted]
- blablabla123 4y agoWhen 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
- danabrams 4y agoMy therapist...
- wuliwong 4y agoAt 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.
- sam0x17 4y agoI 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 :)
- nogridbag 4y agoI 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!
- pcthrowaway 4y ago> listening to architecture podcasts Would love to know if you have any recommendations along these lines. I feel like not using microservices is a pretty common decision, if anything I think using microservices requires justification more than not using them
- fabian_shipamax 4y agoTry 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.
- GauntletWizard 4y agoI'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.
- kgeist 4y agoOur 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
- febed 4y agoMay I ask what was the online architecture course?
- siddontang 4y agoAs 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.
- Fire-Dragon-DoL 4y agoThis 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.