[HN Gopher] Ask HN: Who do you talk to about system architecture...
       ___________________________________________________________________
        
       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.
        
       Author : greggyb
       Score  : 145 points
       Date   : 2022-08-03 14:05 UTC (8 hours ago)
        
       | michaelanckaert wrote:
       | 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.
        
         | ensemblehq wrote:
         | I'm happy to support the group if you do start something. I've
         | been thinking of starting a group as well.
        
         | ankur- wrote:
         | You 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 wrote:
           | I 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.
        
         | [deleted]
        
         | zerkten wrote:
         | They 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.... 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.
        
           | matt_s wrote:
           | I 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.
        
         | lucakiebel wrote:
         | I also feel that the questions would be too open ended for the
         | stackexchange model
        
           | michaelanckaert wrote:
           | And also not suitable for the "correct answer" model on SO.
           | Two architectures can be equally correct but with a different
           | set of trade offs.
        
       | ericbarrett wrote:
       | 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.
        
         | n3t wrote:
         | > 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
        
           | ralston3 wrote:
           | This is great thanks
        
             | powvans wrote:
             | You're doing it wrong. You're supposed to correct them by
             | telling them that Cunningham's Law doesn't apply.
             | 
             | /meta
        
           | LewisVerstappen wrote:
           | Include a throwaway line about considering a microservices
           | architecture and let the roasting begin...
        
             | fendy3002 wrote:
             | And web scale with mongodb as well. Or the latest web 3,
             | nft or Blockchain tech
        
           | dariusj18 wrote:
           | Nice to see someone born in Florida represented.
        
             | nix0n wrote:
             | According to Wikipedia, Ward Cunningham is from Indiana.
        
             | dariusj18 wrote:
             | Was this downvoted because it was a joke or because people
             | didn't get the joke? I can accept the former, but not the
             | later.
        
               | [deleted]
        
         | teddyh wrote:
         | A tech stack is not an architecture.
         | 
         | https://www.youtube.com/watch?v=SxJPQ5qXisw#t=45s
        
           | ericbarrett wrote:
           | See? It works!
        
           | [deleted]
        
         | angarg12 wrote:
         | > I don't think chat services (IRC, Matrix, Discord) are a good
         | fit here
         | 
         | At least I'm not alone. I find the quality of the conversation
         | in random online communities lacking. I toyed with the idea of
         | joining vetted professional communities (paid or invite-only)
         | but I haven't yet. Suggestions are welcome.
        
           | ironlake wrote:
           | Back in the 00's, the J2ME IRC channel was perfect for this.
           | You could describe an architecture or an implementation and
           | get different views from friendly expert peers. Non-toxic,
           | too.
           | 
           | The C channel was the opposite. Any question was met with
           | "google it" or "we're not going to do your homework for you."
           | If the question was really specific, then the conversation
           | turned to how it wasn't good for discussion in this channel
           | because it was machine dependent.
        
             | folkhack wrote:
             | Anecdotally, I've found that with lower-level tooling a
             | more contentious and toxic community is attracted. The
             | higher the barriers and difficulty of the tool seems to
             | justify people's poor attitude of "figure it out, dipstick.
             | I did."
             | 
             | Specifically I have lived your anecdote. Early aughts, I
             | was in highschool at the time and asked that C channel for
             | some advice building my first 2D RPG game in C (was using
             | BASIC, then Pascal/Delphi before this). Literally got _the
             | exact_ response  "we're not going to do your homework for
             | you" when all I was asking was for some direction
             | (libraries etc) + any existing example projects that I
             | could read.
             | 
             | Honestly, I find that most highly technical people are
             | miserable and not very receptive to helping someone learn
             | the ropes. The majority of the peers I've worked with would
             | rather isolate and protect their work, rather than to work
             | collaboratively - and, I 100% get it. I've seen _so many
             | people_ thrown under a bus just for asking simple questions
             | in regards to their solution. Unfairly so.
        
           | anotheruser092 wrote:
           | I'm also curious about vetted professional communities.
           | 
           | I'm not a part of one, but the only community formed online
           | that I've found to last, was one with a weekly video meeting
           | with a few people from the larger community. This actually
           | outlasted the original community.
           | 
           | It's just so easy for any member to become inactive in the
           | community without regular interaction. Free communities on
           | Discord can plausibly be a great option, with the major
           | caveat that the core interactions are over regular scheduled
           | video calls, instead of mostly messages in large group chats.
        
         | dan-robertson wrote:
         | I read lots of highly ranked comments here that I think are
         | pretty wrong. There are lots of quite idiosyncratic opinions
         | that are popular on hn but tend to be pretty wrong. On this
         | site you're mostly looking at a small subset of programmers who
         | tend to spend a lot of time online and the conventions on this
         | site tend to encourage authoritative and contrarian opinions,
         | so while there are a lot of comments and many are good, you can
         | get quite a biased sample. I think it would often be unwise to
         | follow all the advice in high-ranking (or low-ranking) hn
         | comments but I have no advice for differentiating what is rot
         | from what is not.
        
           | mh- wrote:
           | I agree. I have deep knowledge of a somewhat narrow aspect of
           | tech (and a very shallow knowledge of a much broader base,
           | like many of us.)
           | 
           | Comments regarding the areas I have expertise in are
           | frequently quite wrong, but worded confidently.
           | 
           | It makes me wonder how wrong comments about other areas are -
           | ones I'm not well-versed enough in to disprove.
        
           | kqr wrote:
           | I think when I'm looking for a discussion I'm not really
           | after a single answer that is "right". Rather, you're looking
           | at the things in common and different between multiple
           | answers, finding out how people weigh tradeoffs, and so on.
        
             | dan-robertson wrote:
             | Sometimes entire comment sections can be wrong/bad. One way
             | is for early comments to be wrong and for the corrections
             | to fail to overcome the feedback cycle of bad takes pushing
             | each other up. Another is for threads to devolve into
             | repetitive flame wars which can create a lot of comments
             | and mislead someone who might think that opinions repeated
             | in many comments are commonly held (rather than strongly
             | felt and easily regurgitated by a few).
             | 
             | For this reason, I don't think a wisdom-of-the-crowds
             | approach is valid.
        
         | shagie wrote:
         | > 3. Let the commenters tell you everything you did wrong and
         | what they would have done instead
         | 
         | The Codeless Code : The Purple Beggar -
         | http://thecodelesscode.com/case/170
         | 
         | > ...
         | 
         | > The monk opened his laptop. "Five separate posters have each
         | called me a blithering idiot and offered a simple solution to
         | my problem, which they claim to have tested on their own
         | systems."
         | 
         | > Yishi-Shing nodded. "My walk once took me past a beggar whose
         | sign read, You do not DARE throw coins at ME! His body was
         | purple with bruises but his bowl was always full."
        
           | egberts1 wrote:
           | Wrong answer post is best done ... anonymously.
        
       | johnbellone wrote:
       | 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.
        
         | michaelanckaert wrote:
         | While 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 wrote:
           | There 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 wrote:
             | The 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.
        
             | sidlls wrote:
             | Do you think traditional engineering culture is not an
             | academic one?
        
               | johnbellone wrote:
               | My statement was meant to compare/contrast an academic
               | subculture -- conferences, papers, discussions, debates
               | -- with a professional society such as the NSPE. We do
               | have our own share of professional societies that fit the
               | bill but we do not have a requirement for licensure in
               | our industry. By definition it is a different animal.
        
               | johnbellone wrote:
               | I also think that there are many organizations that have
               | tried to provide a solution to the problem -- and
               | arguably, solve it effectively -- such as the IETF, IET,
               | etc., but we're at a interesting and exciting part of a
               | field that is only a few decades old. We're still
               | learning. There are thousands of graduates in our field
               | that were not formally educated in computer science.
               | That's not a requirement to be in the job.
        
         | Dracophoenix wrote:
         | >> 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.
         | 
         | Isn't that what the IEEE and ACM is for? I'd argue that there
         | isn't a dearth in "professional/academic societies" or
         | "guilds". If anything there are far too many of them. Before
         | you fall into the trap of inventing the umpteenth "all-
         | encompassing" computing guild, like in that XKCD comic, how
         | about trying to address the underlying problem that you'd like
         | to have solved?
        
           | johnbellone wrote:
           | It isn't a trap that I am going to fall into because it isn't
           | a problem that I am trying to solve.
           | 
           | I firmly believe that the problem to solve is much closer to
           | facilitating and recording the results of the ceremonies.
           | That is effectively done in part by the above organizations
           | but, in my opinion, the real problem lies with the follow up
           | about implementation inside of the real world. I do think
           | that USENIX is much better at _that_ than the ACM or IEEE.
        
         | themanmaran wrote:
         | I feel that I am in the same bucket. Especially with WEB/API
         | architecture. I've got a decent set of architecture rules that
         | have worked well for every company I've joined. But asides from
         | minor syntax/style opinions, no one ever challenges these
         | rules.
         | 
         | Likely because any consistent architecture is going to work
         | _fine_. And the typical developer is writing code with a
         | business need in mind. So it pays to stick to something simple
         | rather than experiment with new design patterns.
        
           | greggyb wrote:
           | > Likely because any consistent architecture is going to work
           | fine.
           | 
           | This is also a worthwhile thing to keep in mind. Most
           | decisions made right now are likely to not be an issue if
           | they are consistent. That said, it is still nice to know
           | _where_ the scaling and operational issues may arise given
           | these decisions. It is a fine line to walk between over-
           | engineering and just having awareness of things to expect.
        
         | OJFord wrote:
         | I'm a Member of the IET, but more because I want it to be
         | useful and relevant to SE than because it honestly is. (And
         | also because I studied EE/CS, and it's a bit better on EE.
         | Still not great, much more on electrical than electronic.)
        
           | johnbellone wrote:
           | I do think that a significant reason why the existing
           | professional societies aren't as effective as they could be
           | is because we do not have licensure outside of specific
           | technologies (e.g. Java, Oracle, Kubernetes, etc.). I am 100%
           | sure that if I poll the software engineers that I work with
           | on a daily basis that only a handful of them would be aware
           | of the IET. A handful _may_ remember the ACM from their
           | college days.
        
             | OJFord wrote:
             | I'd guess you're in the US? I think it has _a_ presence
             | there, but more predominantly across the Commonwealth. I
             | keep considering joining the ACM - actually probably less
             | likely now I saw recently they free-ised the  'Digital
             | Library' - but in my awareness/experience at least I think
             | it's the opposite, not nearly as widely known/joined/read
             | here as in the US. And not chartered in the UK, i.e. you
             | couldn't be a CEng or whatever via the ACM.
             | 
             | (I'm not via The IET either, but could be in theory. That's
             | part of the problem, it's difficult when there's a lack of
             | resources or examples for our discipline - vs. plenty for
             | others. I also sort of think if I managed it it would just
             | be for the letters, it wouldn't actually be helpful or
             | signify anything relevant. It would be nice if there were
             | something to work towards and achieve in that regard that
             | did actually mean something, and motivated working on
             | useful things.)
        
       | [deleted]
        
       | wink wrote:
       | 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.
        
       | jedberg wrote:
       | 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.
        
       | bob1029 wrote:
       | 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?
        
         | akiselev wrote:
         | _> 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 wrote:
           | rqlite creator here, happy to answer any questions about it.
        
       | a_square_peg wrote:
       | 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.
        
       | kgeist wrote:
       | 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
        
       | lotw_dot_site wrote:
       | 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.
        
         | and0 wrote:
         | I 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.
        
       | kinduff wrote:
       | 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.
        
         | greggyb wrote:
         | Thanks for sharing! I had not come across this channel yet.
        
       | kylixz wrote:
       | 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.
        
         | greggyb wrote:
         | Thanks. This is the second recommendation for this group, so I
         | am eager to take a look.
        
       | rtp4me wrote:
       | 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.
        
       | mbesto wrote:
       | I've done nearly 300+ interviews with CTOs regarding their
       | technical architectures over the last 8 years.
       | 
       | AmA
        
         | speedgoose wrote:
         | Have you considered publishing about it?
        
           | mbesto wrote:
           | (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 wrote:
         | Do 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 wrote:
           | Heavily 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 wrote:
             | Yeah I guess I've only worked in those big 500 companies.
        
       | siddontang wrote:
       | 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.
        
       | fabian_shipamax wrote:
       | 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.
        
       | gwbas1c wrote:
       | 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.
        
         | DMell wrote:
         | That is a lot of what not to do. What are some ways to learn
         | what to do for someone just getting into the field?
        
           | felipeccastro wrote:
           | Build 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.
        
           | machiaweliczny wrote:
           | Best way to learn is by working with someone experienced.
           | 
           | Or just use mature solution like Rails for example it solves
           | most of typical problems and has easy itegrations. If you
           | need more flexibility then maybe Node.js or other ecosystem
           | is better.
           | 
           | Generally theme about architecture is called System Design
           | and there are resources to learn it for interviews/learning
           | purposes but most of it only is applicable at very big scale
           | and you might never need it. Read "Designing Data Intensive
           | Applications" and look into [1] if still interested.
           | 
           | IMO better to invest time into data design/querying (caching)
           | so that you won't think you need some vodoo to handle your
           | traffic. Like 90%+ of sites/apps don't have 1000req/second
           | and this should be handled by Python on Arduino so as long as
           | your DB design is good you are fine.
           | 
           | For async processing it's worth taking a look into Temporal
           | [2] as it looks as promising alternative to job ques and
           | cronjobs.
           | 
           | I can also recommend [3] to learn some cloud patterns
           | 
           | [1] https://github.com/donnemartin/system-design-primer
           | 
           | [2] https://temporal.io/
           | 
           | [3] https://docs.microsoft.com/en-
           | us/azure/architecture/patterns...
        
             | machiaweliczny wrote:
             | If you mean more like code architecture than web services
             | architecture then I can recommend
             | http://aosabook.org/en/index.html
             | 
             | There's even intro about web services:
             | http://aosabook.org/en/distsys.html
        
           | jtmarmon wrote:
           | See 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.
        
       | rr888 wrote:
       | 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.
        
       | GauntletWizard wrote:
       | 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.
        
       | mathgladiator wrote:
       | 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.
        
       | danabrams wrote:
       | My therapist...
        
       | nfhshy68 wrote:
        
       | mkl95 wrote:
       | Coworkers
        
       | pydry wrote:
       | Whatsapp/Signal groups of ex-coworkers - decent and smart people
       | I worked with previously whom I trust.
        
       | purpleblue wrote:
       | 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.
        
       | idomi wrote:
       | 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.
        
       | wuliwong wrote:
       | 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.
        
       | eatonphil wrote:
       | 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.
        
         | greggyb wrote:
         | Thanks for sharing! Will check it out.
        
       | sam0x17 wrote:
       | 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 :)
        
       | spelunker wrote:
       | 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.
        
         | yitianjian wrote:
         | As someone who's been at larger companies for a good portion of
         | my career - this is the expertise at large internet companies
         | that is really difficult to find at most smaller places. Not
         | many services hit 1k+ QPS, not many companies really work at
         | scale. I'd recommend almost every senior-ish eng to spend some
         | time in big tech just to get exposure to some of these patterns
         | and thoughts. And ideally not cargo cult them just because AWS
         | does it.
        
         | greggyb wrote:
         | Thanks 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 wrote:
           | I 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 wrote:
             | I 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.
        
       | brudgers wrote:
       | You might hire a consultant on hourly rate and get all the
       | discussion you want.
       | 
       | Good luck.
        
         | ysavir wrote:
         | I 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.
        
       | ensemblehq wrote:
       | 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.
        
       | nogridbag wrote:
       | 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!
        
         | pcthrowaway wrote:
         | > 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
        
           | nogridbag wrote:
           | I mainly listen to the InfoQ podcasts, but the only impact it
           | had was contributing to my imposter syndrome.
           | 
           | Regarding microservices, that may be common advice on HN but
           | I'm not sure about the general dev community. I think most
           | developers feel it's important to have on their resume along
           | with docker, kubernetes, etc. And the only way to do that is
           | to work at companies using microservices.
           | 
           | Anecdotal, but many of my developer friends during the
           | initial hype were asking me my thoughts on microservices and
           | deciding to take lead roles to introduce microservices at
           | companies without knowing anything about their codebase. Then
           | they would change jobs every 6 months and repeat.
        
       | mh- wrote:
       | There are some good channels on the Rands Leadership Slack for
       | discussing architecture/design decisions.
       | 
       | https://randsinrepose.com/welcome-to-rands-leadership-slack/
        
         | greggyb wrote:
         | Thanks for sharing! I will take a look at this.
        
       | Melatonic wrote:
       | 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!
        
       | Karawebnetwork wrote:
       | 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.
        
       | blablabla123 wrote:
       | 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
        
       | ramoz wrote:
       | 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.
        
       ___________________________________________________________________
       (page generated 2022-08-03 23:01 UTC)