
Ask HN: What is the most underrated skill software engineers should learn? - aliabd
Also curious about highest value skill for least duration
======
abd12
Writing.

It helps to clarify your thinking. At your job, it will help you explain
concepts to others and multiply your efforts.

Externally, it can help make great friends and boost your career if you blog &
share things you've learned.

~~~
112
This. Being able to think is the most underrated skill.

There is no thinking without writing and drawing.

I _HIGHLY_ recommend reading Julian Shapiro's guide on writing:
[https://www.julian.com/guide/write/intro](https://www.julian.com/guide/write/intro)

The market is shaping each generation. Unfortunately, it's pretty common to
interact with engineers that don't think before doing, they just start doing
with the hope of "figuring it out as we go". This leaves no room for
beautiful, simple code.

Is it a side-effect of the web boom? How much of this was the result of the
PHP and JavaScript subcultures? Couldn't say.

~~~
afarrell
Its a side-effect of hearing stories of the other extreme of the dichotomy.

------
rasikjain
Soft skills - Speaking, Team Building, Listening patiently, Able to translate
technical details to non-technical audience, Ability to help/volunteer the
team during the crisis mode.

This helps a lot in shaping the career and boost self confidence.

------
moralestapia
Proper math. It's also easier than you think, even a year of (casual but)
serious study will open up your vision and make you feel extremely more
confident with your work.

~~~
ahpearce
Any idea where to start? I've always found it extremely challenging, in
regards to both motivation and direction.

~~~
sn9
It depends both on your current background and your goals.

What's the highest level of math that you know so well you could walk into any
classroom and teach it? For many, it's been so many years since they've had to
use anything from even middle school algebra that they might have to start
there.

Make sure you're building on a strong foundation if you wish to build
something grand that persists.

You want to find the highest level that feels too easy, and then gradually
increase difficulty from there.

You can use sites like Khan Academy to find that point. Alternatively, you can
just embrace the fact that you may be overconfident and work through books
that seem "below your level" just to verify that you really have mastery over
the subject matter.

You could spend a year or two going through the Art of Problem Solving books
which cover pre-collegiate math at a deeper level and use SRS like Anki to
schedule review of concepts and problems you've understood and solved.

At the college level, assuming you're a programmer, the first subjects to
master are probably how to write proofs well, calculus in single and many
variables (e.g., Spivak followed by Hubbard and Hubbard), discrete mathematics
(e.g., Rosen or Epps), linear algebra (e.g., Strang, Axler, Shilov, etc.), and
statistics and probability.

Hang out on math forums like the math subreddit and you'll see many books
recommended over and over again.

Be sure to examine the preface and introduction of any book you're thinking
about buying. They usually include a section on the intended audience and what
their background should be to productively engage with the text.

The most important thing is that you solve or attempt to solve many problems,
and avoid looking at the solution until you've really spent a good deal of
time banging your head against the wall trying to figure it out. How much time
you should wait scales with the difficulty of the subject (e.g., less than an
hour for high school level material, a week or more for advanced undergraduate
level material, etc.).

~~~
ahpearce
Appreciate your response to this. I guess it's tough to go back and try to
pick things up and move forward from a particular point. I feel like getting a
much more solid grasp on Probability and Linear Algebra would be the most
beneficial to my profession (data science), but again, not sure that I have
the motivation.

~~~
sn9
It absolutely wasn't my intent to discourage you!

The way I think of it, we all likely have decades left in our career.
Consistently spending a few hours per week studying mathematics or some other
technical subject related to our goals will only take a few years to reach a
non-trivial level and then you still get to enjoy decades of returns off that
initial investment of time.

How much more effectful will you be with a deep understanding of the
fundamentals of your craft? How much more fulfilling will your work be when
you have a top X percentile set of skills within your field or a unique
combination of skills that give you unique insights or career leverage?

And that doesn't even touch on the aesthetic beauty of the subject matter
itself! How will it affect the way you view and understand the world around
you?

Remember the lessons of compound interest: a small increase of investment
consistently made early on will likely have outsized effects down the line.

------
kazinator
How about: learning to type fast, with all ten fingers, without looking at the
keyboard.

~~~
sgillen
I would say 10 fingers is optional if you can manage the other two.

Fun fact I type with 3.5 fingers at a reasonable speed and without looking at
the keyboard. I never have problems with wrist pain. I tried to teach myself
to use all 10 fingers and within a day or two was experiencing very noticeable
pain! I switched back to my ad hoc method and haven’t looked back.

~~~
muzani
I used to think so, but I switched to an ergonomic keyboard, which split the
keyboard to two parts. After properly learning to type, my work speed
increased tremendously. It also helps a lot having a 100% accuracy rate on
brackets and apostrophes.

------
blaser-waffle
Sales, and selling.

You're selling yourself and your skills on an individual level.

You're selling your team and your pieces of the codebase on a manager level.

You're selling your product or your vertical on the executive level.

This isn't Wolf of Wallstreet or "Coffee is for Closers", but if you're not
able to sell yourself a little then you'll be struggling against an equally
good coder who knows how to put a little spin and polish on what they're
doing.

~~~
eliasbagley
Any resources for this?

~~~
soulchild37
Definitely [https://kalzumeus.com](https://kalzumeus.com) for selling yourself
careerwise, and [https://stackingthebricks.com](https://stackingthebricks.com)
if you are planning to sell your own product

------
dflock
If you want a purely technical skill, being fluent in SQL, including DDL,
joins, etc... would be a pretty good candidate.

------
thewileyone
Testing. I've never known any great developer with at least good testing
skills. I've met many awful developers who don't know how to test.

~~~
thorin
Correct. Testing can mean so many things though and could include debugging,
unit and component testing, integration testing, reading 3rd party
code/documentation to understand why your code fails to work as expected. Also
documentation of what was expected and what happens...

Current crop of programmers seem good at writing unit tests, but poor in terms
of overall system understanding and related skills (security, performance,
networking, unix tools, databases etc).

This is as an EE/developer for last 25 years working often with offshore
developers on large projects/accounts.

------
cvaidya1986
Setting expectations and communicating them clearly and continuously.

------
cbanek
Good listening skills: Reflective listening, active listening, etc.

[https://en.wikipedia.org/wiki/Reflective_listening](https://en.wikipedia.org/wiki/Reflective_listening)

[https://en.wikipedia.org/wiki/Active_listening](https://en.wikipedia.org/wiki/Active_listening)

------
thorin
Speaking, writing, listening, thinking ( which includes debugging, designing,
how things fit together, how people use their stuff, how you use other peoples
stuff).

Communication seems to be the main thing I see missing, and caring whether
what is produced is fit for purpose (not just your bit). As I move towards
being an architect/less coding, this is something I'm thinking about more.

------
pid_0
If you want to make lots of money, soft skills. You can be a decent engineer
and a good presenter and make $$$

------
medialucky20
Writing,know the reason behind developing this product or code. many times we
end up just developing what asked to do without knowing its purpose, usage,
impact etc. Sometimes these factor influence your work to feel belong to
something

------
photawe
Dealing with bugs in other APIs. This is such a sad truth of today's software
- you are dependent on other libraries, and as you use them, you encounter
bugs - and quite a few, I may add.

And even sadder, Microsoft ('s APIs) is not the exception, Microsoft is pretty
much the norm.

------
erkanerol
Fixing a lot of small issues to make the codebase ready for production without
getting bored. Unfortunately, only small portion of software engineering is
sexy and cool.

------
airbreather
Effective Problem Identification and then Requirements Capture.

Few do it well, a poor start almost guarantees a poor outcome regardless of
the quality of the team.

------
jghn
Presentation skills, speaking in general. Learning how to read a room, drove
consensus, and tease apart what someone is really after

------
JamesBarney
Estimation.

------
ak39
Relational data normalization at least to 3NF.

------
master_yoda_1
is to understand that you can NOT get away with poor coding skill by
developing only underrated skill ;)

------
boltzmannbrain
Patience.

------
ironschool
Naming

------
frogperson
negotiating/sales.

------
tboyd47
Debugging

------
codingslave
The only thing that matters is data structures and algorithms. If you cant
master those, you wont get far/your pay is forever capped and should move into
management or another career entirely.

~~~
brailsafe
You forgot the /s

~~~
codingslave
unfortunately im serious

~~~
brailsafe
That seems bizarre to me. Perhaps in generalized see roles at certain
companies in certain locations and when you are grinding the interview
process, but how do you feel it applies as a progression in skill alone?

