Most active commenters
  • al_borland(3)

←back to thread

1070 points dondraper36 | 11 comments | | HN request time: 0.269s | source | bottom
1. al_borland ◴[] No.45068433[source]
“Everything should be made as simple as possible, but not simpler.”

As someone who has strived for this from early on, the problem the article overlooks is not knowing some of these various technologies everyone is talking about out, because I never felt I needed them. Am I missing something I need, but just ignorant, or is that just needless complexity that a lot of people fall for?

I don’t want to test these things out to learn them in actual projects, as I’d be adding needless complexity to systems for my own selfish ends of learning these things. I worked with someone who did this and it was a nightmare. However, without a real project, I find it’s hard to really learn something well and find the sharp edges.

replies(5): >>45068506 #>>45068885 #>>45068909 #>>45069194 #>>45073358 #
2. IAmBroom ◴[] No.45068506[source]
Yes, and I (nearly) live this nightmare. I have someone higher up in the food chain who is fascinated with every new piece of software they find, that MIGHT be useful. We are often tasked with "looking at it, and seeing if it would be useful".

Yeah, let me shoehorn that fishing trip into my schedule without a charge number, along with the one from last week...

replies(3): >>45068553 #>>45068590 #>>45069260 #
3. colecut ◴[] No.45068553[source]
Does he ask you to "figure out how to implement AI"?

That is what my boss asks us to do =p

replies(1): >>45074908 #
4. ◴[] No.45068590[source]
5. threemux ◴[] No.45068885[source]
This is indeed a vexing issue. I feel it often. It's this feeling that leads to resume-driven development which I really work hard to avoid.
6. dondraper36 ◴[] No.45068909[source]
Such a familiar feeling. Articles similar to this one make lots of sense to and I do try to embrace simplicity and not optimize prematurely, but very often I have no idea whether it's the praised simplicity and pragmatism or just a lack of experience and skills.
7. SPascareli13 ◴[] No.45069194[source]
Implement the simplest thing that works, maybe even by hand at first, instead of adding the tool that does "the whole thing" when you don't need "the whole thing".

Eventually you might start adding more things to it because of needs you haven't anticipated, do it.

If you find yourself building the tool that does "the whole thing" but worse, then now you know that you could actually use the tool that does "the whole thing".

Did you waste time not using the tool right from the start? That's almost a filosofical question, now you know what you need, you had the chance to avoid it if it turned out you didn't, and maybe 9 times out of 10 you will be right.

8. al_borland ◴[] No.45069260[source]
I was the go-to guy for this under my former boss, but he let me do pretty much whatever I wanted, so it usually wasn’t an issue to not work on anything else while playing around with new stuff.

Though there was a time when he wanted me to onboard my simple little internal website to a big complicated CICD system, just so we could see how it worked and if it would be useful for other stuff. It wouldn’t have been useful for anything else, and I already had a script that would deploy updates to my site that was simple, fast, and reliable. I simply ignored every request to look into that.

Other times I could tell him his idea wouldn’t work, and he would say “ok” and walk away. That was that. This accounted for about 30% of what he came to me with.

9. mrkeen ◴[] No.45073358[source]
> Am I missing something I need, but just ignorant, or is that just needless complexity that a lot of people fall for?

Ignorance plays a big role. If you don't perceive, e.g. a race condition happening, then it's much simpler to avoid complicated things like locking and synchronisation.

If you have the belief that your code will never be modified after you commit it, then it's much simpler to not write modifiable code.

If you believe there's no chance of failure, then it's simpler to not catch or think about exceptions.

The simplest thing is global variables, single-letter variable names, string-handling without consideration for escaping, etc.

replies(1): >>45075042 #
10. IAmBroom ◴[] No.45074908{3}[source]
No, fortunately as an engineering firm (construction), we have strong corporate guidelines on usage of that Pandora's Box.
11. al_borland ◴[] No.45075042[source]
For the basics inside a single code base, like error handling, maintainability, race conditions, etc, I’m thinking about most of that.

It’s more about adding additional tools to the stack. I will fight hard not to add in additional layers of complexity that require more infrastructure and maintenance to manage. I want to eliminate as many points of failure as possible, and don’t want the stack to be so complex that other people can’t understand how it all fits together. If I win the lotto, or simply go on vacation, I want whoever has to take it over to be able to understand and support it.

The thing I’ll be working on next week has a lot of potential race conditions, and I need to find a simple solution that avoid them, without creating a support and maintainability burden on myself and the future team. Building a database would probably be the easy solution, but that’s one more dependency and thing to maintain, and also means I need to build a front end for people to access it. If I can do it without a database, that would be ideal.