←back to thread

1070 points dondraper36 | 2 comments | | HN request time: 0.53s | source
Show context
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 #
1. 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 #
2. 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.