HACKER Q&A
📣 agomez314

What are long-lasting tech skills?


It seems like every day or week there's a new software, framework, OS or skill that tech workers need to know in order to stay relevant. What are some skills that can be learned and be perfected over many decades without having to reinvent myself all over again (akin to a journeyman's path to becoming a master)?


  👤 sshtml Accepted Answer ✓
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?)


👤 JoeMayoBot
Here are a few that I can think of:

- Patterns - Separation of Concerns - Modularization - Source Control - Abstraction - Domain expertise - The ability to translate user requirements into tech - Tolerance for some degree of ambiguity - Debugging - Best practices in quality - Unit testing

I'm sure there are more and some people might disagree. The gist is that tech changes, but common practices, skill sets, and thought processes are long lasting.


👤 helph67
Problem solving, recognising that it's the client who pays your wage and "knowing the odds"... https://en.wikipedia.org/wiki/Pareto_principle

👤 hgs3
Become an expert in a domain, i.e. compilers, computer graphics, cybersecurity, bioinformatics, etc... Developer skills that age poorly are those for building CRUD apps.

👤 joshxyz
Networking for me.

Knowing the ins and outs of TCP, UDP, HTTP, TLS you can work with caddy, haproxy, envoy, nginx, and other future networking things.


👤 codingclaws
Caring is huge, but also hard to teach.

Self teaching.

Simple math (arithmetic, boolean algebra, strings, composite data types, bitwise operators, order of operations, infinite expression nesting, and of course functions).

Complexity avoidance.

Written communication.

Subconscious thinking (ie. solving problems on autopilot while doing something away from the computer).


👤 jeffrallen
Knowing how to tell someone "no, I won't build that" and make them thank you for it.

👤 VoodooJuJu
Empathy, which is unfortunately but understandably pretty rare in tech. When the engineer lacks empathy for the end user, the human, we end up with terrible UX, unsatisfied specs & reqs, bad software in general.

Never blame the user, the customer - they are always right. If the user is repeatedly doing something "wrong", they're not wrong, the engineer/designer is wrong, and needs to readapt to the what the user sees as right.


👤 pawelduda
Since you mention how fast things move, maybe spotting familiarities between tools and ideas behind them so you can kickstart your learning process

👤 vermasque
CS fundamentals like algorithmic complexity. This can also help in interviews where Leetcode-like format seems to be the norm.

Aim to work at places that are flexible on the experience with tools (software, framework, OS, etc.).


👤 askafriend
Judgement. Decision making.

👤 lotsoweiners
SQL, basic to medium networking concepts, Excel.

👤 revskill
Algebra.

👤 ano88888
be able to build something people want using whatever tools

👤 epirogov
excel through 3 decades very helpful for routine

👤 reducesuffering
Linux systems / command line

SQL

React.js