News for hackers. Stuff that matters.
Re:Ask HN: How to avoid over-engineering software design for... by flak48 on Wednesday June 24, 2020 @02:21AM (#23624708)
>> engineers go extreme in designing things/code for future cases which are not yet known

>They're afraid.

In many companies (think FAANG), engineers, especially senior engineers are incentivized/forced to show fancy design docs as part of the annual appraisal process. The more complicated the design, the more 'foresight', the better.

If it sounds kind of ridiculous (TPS reports from Office Space anyone?) it is. But on the other hand, taking a bit less cynical look, the more massive a company gets, the more the voices which demand objectivity in all these promotion/bonus multiplier processes. So a kind of obsession about such weird 'measurable' metrics gradually builds up in the name of objectivity.

And as soon as there are metrics, you can bet everyone in the system will do their best to game them (it only makes too much sense to do so).

And thus you end up with over engineered systems all over the place.

A lot of the 'not-invented-here, let's reinvent it' style culture also develops similarly - you have too many smart people in a room where the work is just not that demanding. Even if you were to get over your personal existential crisis (why am I writing yet another crud app?!), if you're the type that wants to see a promotion every other year, your're forced to invent work this way.

Re:Ask HN: How to avoid over-engineering software design for... by pydry on Wednesday June 24, 2020 @04:55AM (#23625719)
I think it's a bit more than a desire to show "fancy design docs" or metric gaming. I've seen a lot of engineers prioritize fixing as yet hypothetical future problems over problems that are burning them right now even when there is no need for design docs and no metrics to game.

I think some problems are just seen as sexier than others.

Re:Ask HN: How to avoid over-engineering software design for... by flak48 on Wednesday June 24, 2020 @12:50PM (#23630471)
For sure.

I just wanted to shed a light on some unfortunate external pressures faced by a subset of engineers, which contributes to this problem. Didn't meant to come across as cynical.

Re:Ask HN: How to avoid over-engineering software design for... by danielheath on Wednesday June 24, 2020 @05:14AM (#23625822)
People who do this get promoted because overengineering results in the manager getting more headcount.

My solution was to work someplace that can’t afford to waste money on bullshit. Has worked well so far.

Re:Ask HN: How to avoid over-engineering software design for... by N1H1L on Wednesday June 24, 2020 @11:26AM (#23628967)
Fetishization of objectivity

It's a great concept, and is often what irritates people. I work at a national lab, and senior management is absolutely obsessed with metrics, often to the detriment of the purpose of the organization itself.

There needs to be some humility too - especially in our modern data driven world. All that is important, you may not be able to measure, and all that is measurable may not be important.

Re:Ask HN: How to avoid over-engineering software design for... by ex_amazon_sde on Wednesday June 24, 2020 @05:29AM (#23625906)
> In many companies (think FAANG) > The more complicated the design, the more 'foresight', the better.

Certainly not in Amazon. Surely there can be exceptions but in general the company has a culture of simplifying stuff anywhere is possible.

Re:Ask HN: How to avoid over-engineering software design for... by throwaway9191a on Wednesday June 24, 2020 @09:05AM (#23627379)
This is a huge problem at AWS.

IMHO the largest contributor to over engineering in this company is people suggesting flaws in other's designs simply to have something to contribute during a meeting. I can't remember anyone, ever, telling me to remove something from a design doc (3.5 years).

I have added unnecessary complexity to my own designs as a response to comments. Not customer driven, not data driven, but somebody at a meeting got focused on something and it ended up getting added to the design.

Re:Ask HN: How to avoid over-engineering software design for... by sidlls on Wednesday June 24, 2020 @09:24AM (#23627544)
>I have added unnecessary complexity to my own designs as a response to comments. Not customer driven, not data driven, but somebody at a meeting got focused on something and it ended up getting added to the design.

I've had unnecessary complexity introduced to my code during code reviews as a response to comments, too. Most often it's to make things "more testable" so as to reach an arbitrary code coverage target.

Re:Ask HN: How to avoid over-engineering software design for... by sharpy on Wednesday June 24, 2020 @06:29AM (#23626300)
I've seen promos being denied, because the problem wasn't sufficiently complex enough. I'd say it was, but the design was simplified as much as possible, leading to 'wrong' impressions.
Re:Ask HN: How to avoid over-engineering software design for... by numlock86 on Wednesday June 24, 2020 @06:12AM (#23626194)
>simplifying stuff anywhere is possible

https://raw.githubusercontent.com/aws-samples/aws-refarch-wo...

Ironically, that's how you are supposed to run Wordpress on AWS.

Re:Ask HN: How to avoid over-engineering software design for... by alharith on Wednesday June 24, 2020 @07:13AM (#23626568)
Unironically, this is one of the simpler setups for a multi-node WP setup I have seen, and I have set up prod WP many times. Anyone with associate level knowledge of AWS can do this. There is a reason there are entire companies (pantheon) dedicated to hosting Wordpress for you: doing it with speed, resiliency and redundancy is hard.
Re:Ask HN: How to avoid over-engineering software design for... by owenmarshall on Wednesday June 24, 2020 @09:18AM (#23627486)
Meta: I've vouched for this comment. You appear to be shadowbanned.
Re:Ask HN: How to avoid over-engineering software design for... by alharith on Wednesday June 24, 2020 @11:34AM (#23629106)
They don't like conservative opinions here, so I am not surprised.
Re:Ask HN: How to avoid over-engineering software design for... by ex_amazon_sde on Wednesday June 24, 2020 @07:31AM (#23626669)
You seem to be confusing Amazon's internal infrastructure and its development model to how AWS is used by customers.
Re:Ask HN: How to avoid over-engineering software design for... by numlock86 on Wednesday June 24, 2020 @07:44AM (#23626756)
I would have posted internal slides directly from app architects or even service(-prototyping) dev teams within AWS including similar vibes regarding this discussion, but for obvious reasons that's not a good idea. But whom am I telling that ... That "reference architecture" aimed at customers using their infrastructure regarding a Wordpress installation gets the general idea across, though.
Re:Ask HN: How to avoid over-engineering software design for... by regularfry on Wednesday June 24, 2020 @07:46AM (#23626761)
That's the result though, right? Radical internal simplicity forces incidental external complexity.
Re:Ask HN: How to avoid over-engineering software design for... by ex_amazon_sde on Wednesday June 24, 2020 @08:30AM (#23627096)
No, I'm talking about internal services that aren't directly exposed through AWS API. This represent the large majority of the internal codebase.
Re:Ask HN: How to avoid over-engineering software design for... by ComodoHacker on Wednesday June 24, 2020 @01:11PM (#23630791)
Would it be any simpler when running on-prem or in another cloud?
Re:Ask HN: How to avoid over-engineering software design for... by mabbo on Wednesday June 24, 2020 @06:43AM (#23626382)
You must not have spent long at Amazon.

My original comment was 100% based on my experience as a developer at Amazon.

Re:Ask HN: How to avoid over-engineering software design for... by ex_amazon_sde on Wednesday June 24, 2020 @07:32AM (#23626674)
I did, across different roles in two well known teams. As I said, there are exceptions, and the hiring bar has been dropping a lot in the recent years.
Re:Ask HN: How to avoid over-engineering software design for... by Aeolun on Wednesday June 24, 2020 @08:56AM (#23627302)
Well, they haven’t hired me yet, so either I’m terrible, or the hiring bar is just completely arbitrary.
Re:Ask HN: How to avoid over-engineering software design for... by ex_amazon_sde on Wednesday June 24, 2020 @10:09AM (#23628035)
In all large companies the people involved in an interview are a tiny fraction of the whole workforce.

Most of the time it's people from the team that is hiring and one or two "guests" from other teams (but usually working in the same building).

Managers also have plenty of power to influence the decision, therefore keeping a very uniform hiring bar is really difficult. (But no, it's not "completely arbitrary")

Also, I wrote that the bar dropped a lot, to the point of shifting all employees level up by one, but this does not mean that the company hires 90% of the candidates.

If a team was hiring 1 candidate every 1000 screened resumes and now it's 1 in 100 it's a whopping 10x change... but that doesn't make you a terrible engineer!

Re:Ask HN: How to avoid over-engineering software design for... by Aeolun on Wednesday June 24, 2020 @06:49PM (#23634738)
Sorry, I was just trying to comment on how interviewing itself is an arbitrary crapshoot.

Say one slightly dubious thing and you torpedo your chances of the job. Write one slightly dubious thing on your CV, and it will be rejected without a second look.

While I’m confident that most of the people rejected for those reasons would be at least adequate at their job.

Re:Ask HN: How to avoid over-engineering software design for... by collyw on Wednesday June 24, 2020 @09:40AM (#23627735)
Lets face it hiring is just a shambles in this industry. 20 years in the industry I know how to write a reliable system that is easy to maintain. Getting kind of crap at the tests they give in interviews.