Hacker News new | ask | show | jobs
by sshtml 1102 days ago
A few that come to mind:

- Unix/Linux fundamentals (processes/threads, builtin commands, scripting, file system/permissions, basic system admin, etc.)

- SQL

- Writing & communicating technical topics (i.e. how do you distill complex technical concepts to the appropriate level of detail to have meaningful discussions with the target audience; applies to all technical topics and becomes more important as you advance in your career)

- Testing (unit/integration/e2d; but more conceptually, how do you gain confidence that your code does what it's intended to do?)

3 comments

Definitely agree with all of them. I didn't work at places that valued testing until fairly recently and I'm absolutely shocked that I was able to get by as long as I did without it (plenty of incidents and bugs were involved though).

Every book I've read on software develop always hits on testing and I can't believe I ignored it for so long saying "but my code is hard to test". Then it's your code's fault. If you can't write tests because the code isn't structured to do so, that means your code has bad structure IMO (I'm sure there are situations where this is trickier but they're the minority). The amount of bugs I produce has dropped dramatically since I started writing tests for almost all my code. Seriously a career changing thing that was pretty obvious but I just ignored.

> "...communicating technical topics..."

So important and sets you apart from a developers who lack the ability to explain what they've done in terms of how a non-technical user/customer can understand.

I would make the first point more generic.

OS internals: networking and OS level caching are a must when trying to squeeze every bit of performance from a server.