Live data from Hacker News

Behaviours to avoid in a software architecture role

danielwatts.info

151–160 of 174 posts

Re: Behaviours to avoid in a software architecture role

#151
post #146
post #141

Earlier quoted context omitted.

my current job is company with 1B in sales, with code base of one of the the main products started about 20 years ago, few additional acquired and semi integrated companies/products, high hiring rate of young and eager developers that know how to code very fast but don't know how to keep thing from blowing up in production environment. what i do spans from feature set and scope negotiations with product (because devs…

Oh, I am sure that you do lots of work. And your company is organized in such a way that your role is critical path for lots of things. But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role? Back when I worked there, one of the universal shocks when people go to work for Google is that the overall architecture wa…

>But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role?

I have a few notes here:

0. Google maybe is exception. But i never worked in google, so i don't know how good it is really.

1. Not all companies can pay same wages and get same talent as Google

2. Every time there is talks about GCP/AWS/Azure a lot of people say that all of those services seems to designed by completely different people and don't mesh together nicely.

3. I worked in one of the FAANGS , and while it's widely known for it's excellent engineering it was a massive dumpster fire. There were excellent people that did amazing things on lower infra level, but in the moment that you move a bit higher up it was disorganized mess of multiple teams not knowing how to collaborate properly what resulted in outages, sometimes rather big, which were not noticed from outside mostly due to size of production environments that allowed to shift users to still functioning parts of the system. Those outages were mostly result of not having somebody who will look at system end to end and will identify potential cascading failures or weak points in general.

>BOTH Musk and Ford knew how to weld, and considered that knowledge essential to being able to do their jobs. Sure, they didn't do a lot of welding day to day. But how could they make correct decisions about how to build new machines if they didn't know how those machines are put together?

I didn't say that I don't know how to code. I said that I won't pass coding interview. Companies that I work in have coders much better than me, but I am much better than them in understanding how system supposed to work end to end and how to prevent it from collapsing under various unpleasant scenarios.

Re: Behaviours to avoid in a software architecture role

#152
post #139

Earlier quoted context omitted.

For the record, with that interview, even saying “in python, I’d use the standard library avg(list), because it would be ridiculous to re-implement provided and tested ecosystem functionality” would have served him well in terms of indicating he wasn’t an utter fraud. That alone wouldn’t land the job, but it would be a strong positive.

depends on the company. i once (15 years ago) was interviewing with a company and they essentially asked me to whiteboard some regex like pattern matching flow. i did it, and after completing it to their satisfaction i said that in real world i wouldn't do it, as it's waste of time and will use lib* whatever. I didn't get this job :) a few years later, i discovered that few guys on one of the teams were from this ver…

To be fair, xml-rpc truly is terrible. To start with, XML is extremely verbose and you add a lot of network overhead for that, plus a lot of parsing overhead, which makes rpcs significantly more expensive than they should be. Use https://capnproto.org/ instead. (Based on protobuff, which is an open sourced version of what Google uses internally.) As far as I'm concerned, the only valid reason to use xml-rpc is because you're interfacing with someone else's system and they have chosen to use it.

Moving on, here is an excellent example of an important architecture system that almost everyone gets wrong. In any distributed system you should transparently support having rpc calls carry an optional tracing_id that causes them to be traced. Which means that you log the details of the call with a tracing id, and cause all rpcs that get emitted from that one to carry the same flag. You then have a small fraction of your starting requests set that flag, and collect the logs up afterwards in another system so that you can, live, see everything that happened in a traced rpcs. To make this easy for the programmer, you build it in to the rpc library so that programmers don't even have to think about it.

You then flag a small random small fraction of rpcs at the source for tracing. This minimizes the overhead of the system. But now when there is a production problem that affects only a small percentage of RPCs you just look to see if you have a recent traced RPC that shows the issue, look at the trace, and problems 3 layers deep are instantly findable.

Very few distributed systems do this. But those that do quickly discover that it is a critical piece of functionality. This is part of the secret sauce that lets Google debug production problems at scale. But basically nobody else has gotten the memo, and no standard library will do this.

Now I don't know why they reinvented xml-rpc for themselves. But if they had that specific feature in it, I am going to say that it wasn't a ridiculous thing to do. And the reason why not becomes obvious the first time you try to debug an intermittent problem in your service that happens because in some other service a few calls away there is an issue that happens 1% of the time based on some detail of the requests that your service is making.

Re: Behaviours to avoid in a software architecture role

#153
post #60

Earlier quoted context omitted.

with the housing cost I think it is impossible to do FIRE even with SWE salary.

This is not a rhetorical question: Do you still want to live close to SV when you're not working there anymore? Your burn-down rate for your retirement fund is predicated pretty substantially by the standard of living you maintain after you retire. If a lot of your day to day activities become indefensible once you can't justify it based on work concerns, then your costs may be lower. Look, for instance, at all the f…

Not really but I do still want to work with smart people. I guess I'll never be able to FIRE then.

Re: Behaviours to avoid in a software architecture role

#154
post #151
post #146

Earlier quoted context omitted.

Oh, I am sure that you do lots of work. And your company is organized in such a way that your role is critical path for lots of things. But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role? Back when I worked there, one of the universal shocks when people go to work for Google is that the overall architecture wa…

>But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role? I have a few notes here: 0. Google maybe is exception. But i never worked in google, so i don't know how good it is really. 1. Not all companies can pay same wages and get same talent as Google 2. Every time there is talks about GCP/AWS/Azure a lot of people…

I did work at Google, and their engineering architecture is insanely good. Their product design, not so much. Both aspects are visible when you use their site.

I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the architecture have to write code, work with their system, and see from experience what is wrong with it, they produce better architectures.

It is not whether coding produces more value than architecture. It is that continuing to code informs their architectural decisions.

For a similar idea in a very different industry, when Robert Townsend was CEO of Avis back in the 1960s he turned the company around. He made it profitable, and made it grow.

One of the things he did that he says made a huge difference was to make it a rule that everyone worked the rental desk. Didn't matter whether you were the CEO, VP, big manager or whatever. One day a month you stood behind the rental desk and had to deal with live customers. And having that regular experience meant that problems in the organization that would otherwise go missed became instantly visible. Just like how actually having to code and debug things in your architecture makes architecture problems visible that otherwise you'd discount. It made Robert Townsend a better CEO. The corresponding exercise would make you a better architect.

See https://hbr.org/2010/02/make-the-change-be-an-undercov for more.

Re: Behaviours to avoid in a software architecture role

#155
post #152
post #139

Earlier quoted context omitted.

depends on the company. i once (15 years ago) was interviewing with a company and they essentially asked me to whiteboard some regex like pattern matching flow. i did it, and after completing it to their satisfaction i said that in real world i wouldn't do it, as it's waste of time and will use lib* whatever. I didn't get this job :) a few years later, i discovered that few guys on one of the teams were from this ver…

To be fair, xml-rpc truly is terrible. To start with, XML is extremely verbose and you add a lot of network overhead for that, plus a lot of parsing overhead, which makes rpcs significantly more expensive than they should be. Use https://capnproto.org/ instead. (Based on protobuff, which is an open sourced version of what Google uses internally.) As far as I'm concerned, the only valid reason to use xml-rpc is becaus…

It happened 13 years ago and it was exactly same but with different xml syntax :) It was way before microservices, etc. purely point to point.

Re: Behaviours to avoid in a software architecture role

#156
post #154
post #151

Earlier quoted context omitted.

>But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role? I have a few notes here: 0. Google maybe is exception. But i never worked in google, so i don't know how good it is really. 1. Not all companies can pay same wages and get same talent as Google 2. Every time there is talks about GCP/AWS/Azure a lot of people…

I did work at Google, and their engineering architecture is insanely good. Their product design, not so much. Both aspects are visible when you use their site. I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the a…

>I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the architecture have to write code, work with their system, and see from experience what is wrong with it, they produce better architectures.

Totally agree with this. I personally started with installing trumpet winsock and netscape navigator on win3.11. I did customer support while been developer. I went through most of positions that are usually part of software development org and dealt with with most aspects of software. And I consider myself lucky to been able to do so.

But the unfortunate truth it's that in majority of companies that develop software (lets get outside of silicone valley for a moment), developers tend to be very far removed from production environments and from clients. As example, I was hired to work on a new, from scratch product, in one of biggest suppliers of software for telecoms (8B in sales). Over there "core engineering" was tasked with developing "core functionality" and there were totally separate delivery organization that will take this code and adapt it to client needs and will write installers/deployment systems, figure out how it actually integrate, run, etc. Clients weren't accessible to core engineering and internal product management couldn't talk to them either.

Also, the overall approach was that it's perfectly normal that software will crash and leave everything in inconsistent mess, hence there were mandatory tooling to be developed for manual operation to "fix things".

I spent first few months arguing with my boss that it's not normal and that we must deliver software that can be installed and work without crashing left and right. I got to built first devops org in company, first private cloud lab, pretty much first in company integrated ci/cd, jira+confluence (because company used internally developed "agile" tools that were unusable. and i actually got visit from internal auditors questioning me why we spent money on something that already exists in company), lobby to create track for engineers to interact with clients so they will understand what is real operational environment of software they are writing and what are the real requirements so they will be able to do better job, get training for developers so they will learn that there is something outside of "enterprise java" (as anecdote, when i presented rabbitmq as part of architecture, i got asked to what java standard it corresponds and when i said to none, i was told that they don't really understand why would I use it). Project was amazing success and delivered more in less time than was common in the company. (manager got fast tracked to vp/svp/gen manager overseeing 2B in business within 4 years. I got relocation to states :).

my point i guess, it's that most of software development in most companies is disorganized mess with developers been completely detached from realities production environments. And when I am hired, pardon the pathos, my job is to bring order into the chaos or light into the darkness or whatever. In cases when I am out of my depth in some areas (i well aware about limitations of my knowledge) , i usually have enough pull to hire some domain specialists that I can outsource to them designs/implementation.

Re: Behaviours to avoid in a software architecture role

#157
post #56

Is software architecture role the end game for SWEs?

When I'm managing junior folks, I generally advise them there are three main paths: 1. Keep focusing on IC/software work. You keep growing and having larger impact, capping off with an architect type role. 2. Lean into project management, full stack, and business a bit. Become a tech lead for increasing large/important projects. This is a great general path that still lets you be pretty close to the code. 3. Focus on…

What’s the difference between no. 1 and 2? It seems the same to me

Re: Behaviours to avoid in a software architecture role

#158
post #154
post #151

Earlier quoted context omitted.

>But if a company the size of Google can get by without software architects, why does your company need to be organized in such a way that you require that role? I have a few notes here: 0. Google maybe is exception. But i never worked in google, so i don't know how good it is really. 1. Not all companies can pay same wages and get same talent as Google 2. Every time there is talks about GCP/AWS/Azure a lot of people…

I did work at Google, and their engineering architecture is insanely good. Their product design, not so much. Both aspects are visible when you use their site. I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the a…

It seems to me that in most organisation, the equivalence to 'rental desk' is facing the customer, not having to write some code. So we should be taking developers/architects/etc. and bringing them to interact with end users.

Re: Behaviours to avoid in a software architecture role

#159
post #154

Earlier quoted context omitted.

I did work at Google, and their engineering architecture is insanely good. Their product design, not so much. Both aspects are visible when you use their site. I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the a…

It seems to me that in most organisation, the equivalence to 'rental desk' is facing the customer, not having to write some code. So we should be taking developers/architects/etc. and bringing them to interact with end users.

Unfortunately it's not always possible. I worked on OSS [0] for telecoms. Consumers of OSS are dozens of different teams across telecom. No telecom company will externalize those end users to vendors. The best you can get is meeting with with "enterprise architects" who collected requirements from all the teams and wrote RFI to which, if you answered good enough, you will be granted in person meeting to explain them better how your stuff is working.

[0] https://en.wikipedia.org/wiki/Operations_support_system

Re: Behaviours to avoid in a software architecture role

#160
post #156
post #154

Earlier quoted context omitted.

I did work at Google, and their engineering architecture is insanely good. Their product design, not so much. Both aspects are visible when you use their site. I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the a…

>I acknowledge that Google is able to hire incredible people. They also got a lucky break in hiring Jeff Dean early. However it is my considered belief that when you call Google an exception, you're reversing cause and effect. When people who come up with the architecture have to write code, work with their system, and see from experience what is wrong with it, they produce better architectures. Totally agree with th…

In other words you're saying that "software architect" exists as a role in these organizations because bad organizational structures create problems that it is a band-aid for.

And I'm saying that the band-aid doesn't work that well, and you do better if you fix the organizational structure to not need it. And furthermore, as a developer, those organizations are no fun to be in and you can't pay me enough to want to deal with them. Particularly not when I have the option of finding better organizations to be in.

Which adds to the problem. When good developers choose not to be in your company because your company is a disaster for developers, you don't get good developers. Which reinforces the idea that developers aren't that good, and causes them to try to put guard-rails around developers to prevent the problems that bad ones cause. Thereby creating a negative reinforcement cycle.

Post reply on HN