
Ask HN: What skills to acquire in 2019? - miguelrochefort
I quit my software development job 4 months ago to take some time to travel, develop some ideas, and improve myself. I have a very flexible schedule, and I&#x27;m eager to make the most out of 2019.<p>What are some skills (technical or not) you think someone in my situation (or anyone else) should consider acquiring in 2019?
======
Maultasche
I've been learning Elixir, which is really good for creating concurrent and
scalable systems. Concurrency has always been something that has fascinated me
and I see in Elixir a chance to make very concurrent code without having to
deal with locks, race conditions, and all the other icky low-level stuff.
Elixir is also a functional language, making this is the first functional
language I've learned, which is another reason I'm enjoying it.

Over the past couple years, I've heard from developers who were very satisfied
with Elixir, so I finally sat down and started to learn it.

As I've been learning Elixir, I've been writing a series called "Learn with
Me: Elixir" at
[https://inquisitivedeveloper.com](https://inquisitivedeveloper.com). The idea
is that anyone else who's also interested in Elixir can follow along as I
learn it and learn it for themselves as well.

Of course, playing around with it has also helped me learn far more than just
reading about it. Writing about it has helped me learn a lot better, and my
hope is that someone else will also find my writing useful.

~~~
freehunter
I use Rails for my web programming needs, and I've heard a lot of people talk
about switching from Ruby/Rails to Elixir/Phoenix because of "concurrency",
but I'm going to be honest and say I don't know what that means. I'm not a CS
grad and I'm not super familiar with all of the terminology.

Can someone help me with two things? Really trying to understand the benefit.

1\. When you say "concurrency" do you just mean "handles more users at the
same time" or is there something more to concurrency? I keep seeing web chat
applications in tutorials for Elixir but chat is such a small application of a
technology that I find it hard to believe the majority of Elixir users are
building chat systems. What are you using the concurrency for? Why isn't Rails
sufficient for that application?

2\. Given that most web apps are CRUD, are there any benefits to using Elixir
for a typical CRUD website (other than less-than-tangible things like "it's
functional")?

Much appreciated!

~~~
_asummers
I'm a single core server, and I have a queue of tasks. I can process them one
at a time. But say I don't want to work on one task at a time. I might decide
to do some database operation and while I'm waiting for the response to come
back, I might decide to do some work on a separate thread so I'm not idling.
We now have concurrency. If I add more cores, and my program is coded to be
able to take advantage of that, I have more workers to execute that queue and
now we have parallelism! If I then go and add separate computers (nodes) and
connect them over a network, we have created a distributed system which itself
may be a concurrent, parallel system.

What Erlang and therefore Elixir gives you is a very sound mental model
whereby your communication between nodes and separate workers is done via
message passing between Erlang processes (read: not OS processes), and the
receiving process may or may not be on the same computer as the sender. Those
messages may also be synchronous or asynchronous, depending on what you're
doing.

It also gives you a nice mental model for failure. Imagine I'm doing some
super big indexing of some alphabetized data. It may make sense to subdivide
that work along letter bounds, where some worker does A, another does B, ...
etc. Suppose the worker for Q failed. What do you do? You may have to kill the
entire job, but you might be able to get away with just repeating Q, or maybe
even some subset of Q. But you as the worker that just failed are not in the
best position to make that decision, so you fail and let your supervisor know,
just like in a large organizational structure. That supervisor may decide the
whole job is unrecoverable and fail and let ITS supervisor decide what to do.
Erlang/Elixir gives you a toolkit to describe these operations via constructs
called GenServers and Supervisors that you organize into what are called
"supervision trees".

It also guarantees "fairness" between your jobs. Say you have the letter
example, and whatever you're doing, the letter L s taking WAY more time than
anyone else. To preserve overall system integrity, the Erlang VM will decide
to say "hey man, you're gonna get a chance to finish but I'm gonna let M get
some time for a bit and I'll come back to you." This is called "preemptive
scheduling". This gives Erlang its "soft real time" properties.

All this to say, you're really setting yourself up to build more complicated
systems if you need to. But even if you're not, and you have a typical CRUD
app, things like preemptive scheduling are super powerful. Consider a web
server. It may make sense to give each request its own process. If you have
one that's taking too much time, the system will make sure you're not backing
up completely by making sure the next request can run, for at least a little
bit.

I'm kind of handwaving details here, but this is the general idea behind these
types of systems. Erlang as originally designed was to handle telephony
switches and such, and therefore had to handle many different callers all at
the same time, on systems with not as much parallelism, and therefore being
able to process jobs literally simultaneously, but they needed to ensure that
the calls waiting to be connected could connect eventually.

They also designed around being able to hot upgrade your system. If I'm a
telephone pole computer, there's no way they're gonna send a guy out to me to
upgrade my system, and I want to make sure I can update the computer while
it's still servicing the calls coming through it.

~~~
karanke
I enjoyed this explanation, thank you.

Curious to know what the differences are vis-a-vis big data tools like Hadoop
or Spark; as a user of those tools I recognized a lot of common failure
patterns in the example above. Thanks!

~~~
_asummers
I'm unfamiliar with Hadoop/Spark beyond knowing what they are and vaguely
where they'd be used, but I imagine they tend on the "well we can just
recalculate sub-jobs" failure models, instead optimizing developer speed over
computational speed. Though that is wild speculation.

You wouldn't use Erlang/Elixir for doing calculation because that's just not
what it's good at. But you might use it as something to manage jobs in a
larger distributed system perhaps. Though my suspicion there is you may run
into tooling impedance mismatches as you get deeper into the failure modes.

Sorry I can't speak more knowledgeably about that. I'm curious if any WhatsApp
folks are around and can comment on if they ever made their Erlang systems
talk with their Hadoop/Spark stuff and what that all looked like.

------
vikas5678
3 critical skills that will help you through out your life: 1\. Learn to
workout well - crossfit, hire a trainer, etc 2\. Basic financial knowledge -
investing, taxes, RSUs/Options, etc 3\. Presentation skills - most of your
career will be determined by how effectively you communicate, influence and
persuade. Invest in it.

~~~
giladoved
Great advice! Do you know of any links/resources to help develop skills 2 and
3?

~~~
brianbreslin
read Iwillteachyoutoberich.com to start on #2 his site is by no means the end
all be all, but it will give you a start.

~~~
rkho
+1 to this, I think Ramit Sethi's material is a great introduction to
financial knowledge. This year I'm following up with Bogleheads and, if I can
handle it, The Intelligent Investor

------
nilshauk
I would love for us tech folk to dip our toes in idea history, hermeneutics
and rhetoric.

We need to think about the way we think and talk about the way we talk. I mean
reflect on the state of things, instead of blindly increasing shareholder
value. We glorify engagement, but we’re arguably glorifying how addictive our
creations are.

What if apps maximized for less time spent, like help users just do their work
and get on with living life?

When I work on web sites that deliver services I often picture users being in
a hurry. People just want to get on with life, not live their lives within my
server side rendered single page web app. :)

~~~
owl57
_What if apps maximized for less time spent_

Today I used an automated delivery booth. At the end it reported in big
letters: "you took your order in 2 minutes 12 seconds". Made me vividly
remember the end-of-level screen in classic Doom. Maybe that's a good idea:
make the session time prominently visible, to have an urge to optimize.

~~~
trevyn
Like a package locker? Why did it take two minutes?

~~~
owl57
Well, I liked the end-of-level screen, but the rest of UI was not so new-user-
friendly, especially not sleepy-new-user-friendly.

About half the time I was staring at the instruction "the box will unlock now"
with the box in question still behind a closed door before trying to pull the
door harder.

------
CPLX
The skill I am working on the hardest for 2019 is being able to put down my
phone. Or more generally to stop the cycle of mindless addictive loops,
checking for comments and upvotes on social media, endlessly refreshing
forums, and so on.

I’ve tried a few times over the past year to make headway on this and haven’t
felt successful, so I’m redoubling and trying to deconstruct the concept a
little, figure out some rules and habits to impose on myself, and so on.

I don’t feel confident of success at all, it feels like the defining
characteristic of our time is that we’re all walking around with the
equivalent of a gram of cocaine in our pockets 24/7.

My working theory is that drastic abstinence oriented solutions are the only
way forward.

Any success stories welcome.

~~~
hn_meditate
I've had a lot of success via Ulysses contracts:
[https://en.wikipedia.org/wiki/Ulysses_pact](https://en.wikipedia.org/wiki/Ulysses_pact)

You're stuck in these loops through little fault of your own. Our environments
are engineered to be very addicting; tech products train our brains to crave a
quick hit of stimulus at the slightest hint of boredom.

Trying to fight against this with just willpower alone is an uphill battle.
Willpower fluctuates throughout the day, and (supposedly) it is a finite
resource per unit of time. You may win a few battles, but the strong cues in
your environment remain, and will likely snare you next time around.

It's hard to resist the temptations because they are pleasurable and salient
rewards in the here and now, in a way that longer-term, more abstract goals
(read a book, stop wasting time on junk info-snacking, etc) can never be.

Ulysses contracts bridge this gap by pulling the longer-term, more abstract
goals into the here and now, endowing them with an immediate saliency of their
own. Now your new habits can fight on the same ground as your old habits.

Examples: the person who, in trying to quit smoking, gave a friend a check for
$5k and promised that if she smoked again, she'd have to report herself to her
friend, who would then donate that money to the KKK.

Examples of my own: \- I jettisoned caffeine by promising my spouse that for
every caffeinated drink I took, I had to give up in proportion something I
love dearly (e.g. skip a day of meditation) \- I cut down on online
boardgaming by promising a friend that I would only play with him -- and
should I play with an online stranger, my friend would receive $5k and proceed
to squander it at the poker table. (Making the resulting outcome of your
contract breach, something that stings, that is visceral and has an emotional
valence to it, it key to making the contracts successful).

It also helps to engineer your environment. Remove the cues and temptations.
I've had more mixed success with this. But quitting FB, Linkedin, definitely
removed strong loops. (My brain fought like hell against their absence, then
after the three week mark, never a peep again. Goes to show the arbitrariness
of our cravings)

------
jasode
You don't state your programming background but you mentioned C# in previous
comments.

I would recommend _machine learning_ as a very useful skill to acquire.

I have to be more specific because "machine learning", "artificial
intelligence", and "data science" are really large topics that can encompass
difficult math and PhD research.

For application programmers, I think a very realistic subset is using an
existing "machine learning toolkit or API" (e.g. Keras in Python) to analyze
data and solve problems. You _use_ the machine learning algorithms but don't
necessarily write them from scratch. This level of proficiency only requires
high-school math. The analogy would be knowing SQL even though one doesn't
write b-tree algorithms from scratch or using the "=PMT()" function in MS
Excel without deriving the annuity equation from first principles.

I think machine learning concepts (classification, clustering, etc) will
become an expected _baseline_ of programmer knowledge just like SQL was 25
years ago. Its usage will become more pervasive and will be utilized by more
people that don't have _" data scientist"_ in their job title.

~~~
EpicEng
I don't mean to imply it's impossible, or throw out some appeal to authority,
but dabbling in ML is not going to open doors for you. I worked in and around
the field for more than a decade. Companies who are serious about this stuff
can sniff a beginner out and they tend to want credentials. It's a deep
subject, so that's not terribly uncalled for, and knowing how to throw a
classifier together does not in any way mean you're competent and able to
solve hard problems.

Not trying to be a downer, just my $0.02. For fun? Sure, go for. For career
development? You had better be serious and ready to devote the next 5-10
years. I do not at all agree that ML is going to become a baseline skill.

~~~
mindcrime
_I don 't mean to imply it's impossible, or throw out some appeal to
authority, but dabbling in ML is not going to open doors for you. I worked in
and around the field for more than a decade. Companies who are serious about
this stuff can sniff a beginner out and they tend to want credentials._

What I think you're missing is that ML is becomeing accessible to
organizations WAY outside the sphere you're referring to. In the not-too-
distant future, "Bob's Small Engine Repair and Screen Doors" will want to take
advantage of ML / Data Science / AI. And it may well be the case that all they
need is somebody that can implement Linear Regression or K-Means using SK-
Learn, or using a cloud ML API.

And larger organizations will always have room for people with varying levels
of skill, especially as demand for the most highly skilled people outstrips
the available supply.

 _and knowing how to throw a classifier together does not in any way mean you
're competent and able to solve hard problems._

Not everybody is solving a "hard problem". By way of analogy... if your car
has a broken connecting rod, you need to take it to a mechanic who knows how
to pull an engine, tear it down, rebuild it from scratch and put everything
back together. If you have a bad O2 sensor, that work can be done by somebody
much less knowledgeable. If you need the oil changed, that can be done by
somebody even less knowledgeable still. Or to use a different analogy, you
don't need a neurosurgeon to cut out an ingrown toenail. Use the right person
for the job at hand.

------
loteck
Organizing.

Not necessarily in your workplace, but sure, that too if you're into it.

Mostly I mean community groups of like-minded folks who stay in touch, remain
active and do meaningful things together, like speaking up against bad uses of
technology in government and law enforcement. Or training people how to get
started in tech. Or hacking something together that could be meaningful for
the lives of people in a city.

~~~
confounded
This has been the most satisfying tech-related thing I’ve done in the last few
years.

It’s how I’ve felt most useful outside of my day-job, and also how I’ve gained
a broader perspective on the culture, values, and practices at other
companies.

------
asveikau
Empathy.

The tech giants are having massive scandals because they lack it. Whatever you
do, be here for the end user. Think about their lives and make it no worse.

~~~
sabarn01
[https://www.amazon.com/Against-Empathy-Case-Rational-
Compass...](https://www.amazon.com/Against-Empathy-Case-Rational-
Compassion/dp/0062339338)

~~~
bb88
That seems similar to the concept of "ruinous empathy". In other words, don't
waste your feelings on others, especially if you may have to fire them.

Having been on both sides of that coin, being fired and having to fire others,
it's clear to me that reducing the amount of pain is important, even if such
an act must be done.

------
nick_urban
Meditation. Being able to direct your attention, to be present in difficult
situations, to care about others when it's easier to worry about oneself, and
to be willing to see truths that contradict one's self-image. There is much to
be gained from this simple practice, and much to be lost from foregoing it.

"the faculty of voluntarily bringing back a wandering attention over and over
again is the very root of judgment, character, and will. [...] An education
which should improve this faculty would be the education par excellence." \-
William James

~~~
trevyn
Note also that you can train these useful skills in ways other than extended
courses of formal sitting meditation. (Which also often come with a lot of woo
attached.)

~~~
mdsharpe
[https://wakingup.com/](https://wakingup.com/) and
[https://www.headspace.com/](https://www.headspace.com/) are both woo-free
choices I'd recommend.

------
lwheelock
Leadership skills.

Whether or not you need them today or not, whether you want to be in a
leadership role soon or not, they are essential for anyone seeking to progress
and you can’t start too soon.

There are many many ways to approach this and I’ll just offer two book titles
that I believe would be beneficial.

1\. Start with Why 2\. Extreme Ownership

~~~
kken
A much faster way to understand the central message of "Start with Why" would
be to watch the TEDx talk:

[https://www.youtube.com/watch?v=u4ZoJKF_VuA](https://www.youtube.com/watch?v=u4ZoJKF_VuA)

Is the book worth reading, in addition? I see very mixed reviews.

~~~
ivanmaeder
Don't waste your time with the book—it's complete fluff: unoriginal, rambling,
repetitious, with faulty reasoning…

------
eggy
Financial literacy. I find many of my smart, technology friends don't really
have a solid grasp of finances and economics. Something as simple as a six-
month cash flow spreadsheet would do wonders for most people. I am trying to
instill this in my older children.

~~~
finaliteration
> I find many of my smart, technology friends don't really have a solid grasp
> of finances and economics.

This describes me, unfortunately. I consider myself fairly smart, did well in
college, tons of technical skills, but I am -terrible- with money. I keep a
12-month spreadsheet showing income and expenses for every pay period and one
showing current debt, but beyond that I know I’m awful about it. A lot of it
comes from my parents also being terrible with money and never teaching me
saving vs. spending, investing, etc,. I’ve figured out some of it on my own
but I still struggle.

I’m glad to hear you’re trying to teach your children better.

~~~
travisoneill1
> I keep a 12-month spreadsheet showing income and expenses for every pay
> period and one showing current debt

This means that you are not terrible with money. 90% of practical personal
finance can be expressed as follows: expenses < income. The rest is
implementation details.

~~~
finaliteration
That's fair. When I say I'm terrible with money I mean more in the realm of
saving vs. spending. I have a small amount in savings for emergencies/cash
flow safety but I definitely do not have 6 months worth of expenses set aside
or hundreds of thousands of dollars in my 401(k) as some of my peers seem to.
Also, if I'm being totally honest my retirement plan is basically to never
retire, partly for financial reasons but also because I like working in my
current industry and staying busy and don't see that changing.

Part of that comes from being in a high cost-of-living area with a child and
student loan debt, but I also know that a part of it is due to the fact that I
buy things I don't need way too often.

~~~
MaulingMonkey
Savers are often finding ways to make inertia work for them. Every penny in my
401k was directed there by my employer. I never saw it in the paycheck, I
don't think of it as something I have available to spend. Others might use a
bank account they don't have a debit card attached to. Or for debts, might set
up an automatic transfer to eventually pay it off, and bury their credit cards
in a filing cabinet somewhere.

Some people find luck with budgets. Don't tyrannize yourself - it's OK to
carve out some of your budget for buying things you don't need - but you can
balance that with letting yourself save some. And budgets don't have to be
100% set in stone - when my friend wanted some replacement computer parts, he
cut back on his food budget (by cooking more instead of eating out) for a bit
to "afford" it.

I realize this is easier said than done, though!

Even if you never plan to retire, having a rainy day fund / a long runway will
help take the stress out of layoffs, and give you more time to find the job
you want vs the job you need to pay the bills, etc. - hopefully helping ensure
you keep enjoying working in your current industry :)

------
randcraw
Writing. Clarity, brevity, and expressiveness are all too rare these days,
especially in technical writing and presentations. Writing well can greatly
improve your thought process and make your message sing.

I'd start by reading Strunk & White, which nicely addresses clarity and
brevity, leaving only a source for expressiveness, which is basically
storytelling. There I like the writing books by Steven King, Ray Bradbury, and
Ursula LeGuin, but many other worthwhile primers of style are (almost) as
good.

Then practice writing while critically reading the best works of good writers,
carefully observing their techniques, and then stealing them liberally. Ask
friends you trust to assess your work and explain what they liked, didn't
like, and why.

~~~
daleco
Thanks for the tips. Any other recommendations to improve clarity in writing
and speaking? I’m not a native English speaker and I’ve been looking for ways
to improve.

------
jsgoller1
Interviewing. I spent about 3-4 months this year working on my interviewing
and competitive programming skills via LeetCode, reading The Algorithm Design
Manual, and taking classes at Bradfield School of CS in San Francisco. I feel
like it's made a world of difference. I know Hacker News tends to hate on
programming interviews, but it really pays to be good at them (and trust me,
it's a learnable skill). I do agree that the algorithms-and-whiteboard method
can be highly problematic, but I've come to firmly believe that the time for
criticism is when you're designing the interview for a candidate, not being
interviewed.

~~~
seanmcdirmid
You spent 3-4 months honing your interview skills, that sounds very expensive.

Are you claiming that this practice made you a better programmer overall or
just better at interviews?

It isn’t just hackernews hating on the current way of doing programming
interviews, it’s a widespread sentiment in the industry. The current way of
doing interviews seems both excessive (requires 2 months of practice) and
easily games (with 2 months of practice...). Who is winning from this?

~~~
jacques_chester
> _You spent 3-4 months honing your interview skills, that sounds very
> expensive._

Assuming a 25% pay bump, it more or less pays for itself in a year.

Not counting the effect of compounding. Bumps are typically by percent, so
every point you chisel out early in your career is valuable.

~~~
seanmcdirmid
Assuming you couldn’t get that job any other way, sure. However, even most
Googlers would think that is excessive (even if they did it themselves, most
of them would not admit to it).

------
jsgoller1
C. I read K&R and did every exercise in it this year, and it really changed
how I thought about programming, even in higher level languages. Specifically,
I feel like it's made me a lot more considerate about algorithm design and
detecting edge cases. More justification: [https://blog.bradfieldcs.com/the-
cost-of-forsaking-c-1139864...](https://blog.bradfieldcs.com/the-cost-of-
forsaking-c-113986438784)

~~~
romeisendcoming
You are not going to get much love here. But you are right.

~~~
jsgoller1
Well then, I'm happy with just your love.

------
bb88
I think the electronics and electronics fabrication industry is ripe for major
disruption in 2019. The end of copper clad fiberglass boards are in sight, and
that will change the way we think about electronics in fabrication.

Electronics is also kind of exciting right now in particular. The open
hardware community while in it's infancy still, is growing rapidly. Notably,
the ESP32 platform has allowed home brew IoT technology to grow very rapidly
as it brings a processor and Wi-fi to a chip for less than $5.

~~~
lj3
> The end of copper clad fiberglass boards are in sight

Where can I read more about that? My google searches have not been fruitful.

~~~
bb88
[https://www.youtube.com/watch?v=Z228xymQYho](https://www.youtube.com/watch?v=Z228xymQYho)

~~~
lj3
interesting. Thanks!

~~~
bb88
The other approach is through a copper ink such as this one:
[http://copprint.com/](http://copprint.com/)

~~~
nikkwong
This looks cool and could be a much easier solution than the aforementioned
laser/printing setup. Judging from the website though it doesn’t look like
they have a product ready to go, is that true, and are there any alternatives?
It would be nice if there was a filament I could just plug into my 3D printer
and start using :p

~~~
bb88
I think googling "conductive" plus one of "3d filaments" or "t-shirt ink" or
"epoxy" or "resin" or "nail polish" or "paint" is a good place to start.

I believe that company will probably sell the ink by the barrel full for
industrial fabricators.

------
ultrasounder
1\. Go deeper into the PyTorch ecosystem to be able to work my way through an
ARXIV research paper and implement it. 2\. Go deeper into Calculus and Linear
Algebra to support my quest to understand the PyTorch implementations better.
3\. Using these newly acquired skills build a better clone of a very popular
SAAS offfering that charges an arm and leg for even basic operations and offer
it at a deep discount. 4.Learn marketing skills(NOT _Growth hacking_ ) 5\.
Learn tech interview skills. Similar to what someone had posted.

------
scarface74
I am in the middle of a technology pivot - moving away from the on-
prem/Microsoft stack to AWS development/Devops/networking and the $cool_kids
JavaScript full stack along with Python.

Also adding on Docker/Kubernetes and ElasticSearch.

Finally, I’ve railed against the need for LeetCode style studying and I
haven’t had an interview in almost 20 years that has required it, but I guess
I will get back to basics and start working through it.

------
7ewis
Two things I want to focus on are Kubernetes and Golang.

I've played with them in the past, but not spent enough time with them to be
confident using them in production.

~~~
ojhughes
Go is undeniably very useful, just feels like such drudgery actually working
with it.

~~~
benburleson
Just my 0.02, but I started my primary project in Golang this year (a first
for me) and have genuinely enjoyed getting deeper into using the language.
Great tools, great community, and a clever language -- what more could you
want?

~~~
7ewis
In my limited experience so far, I just keep finding out how to do something
then wondering why it's so complicated.

Things I could do in Python in ~10 lines, seem to require at least double in
Go.

I'll keep learning it though, I'm sure I'll start to see the benefits soon!

------
avip
Clairvoyance will become increasingly important in 2019.

~~~
bitL
Any hands-on MOOC for that out there? ;-)

~~~
AlexCoventry
Find a TV show where the protagonist is always right, like _House_. It will
teach you all you need to know, and provide a healthy role model.

------
mfazalul
I've made a list of things I'd like to learn soon. These are personally
important to me, but based on your circumstances and specializations, it may
(or may not) be important for you as well.

1> Learning to learn From my interactions with some of my friends, I've come
to realize that I'm pretty bad at learning, or at being focussed and
determined enough to put work into it. I'm not sure how I can correct it, but
I've decided to learn at least one skill (like playing guitars, skateboarding,
etc.) that requires persistence.

2> Calculus. statistics and some neuroscience I'm a PhD student and my work
primarily focuses on machine learning applications. However I've come to
realize that there are too many AI Engineers and very less AI researchers and
computational neuroscientists. I feel it's sad that a lot of people are
following the hype-train for deep learning, while there is a third-generation
neural network (spiking neural networks) that needs more research. Although
this has been around for about a decade, the field is still lacking in terms
of research. To even contribute a little bit into the field, I would need more
knowledge in calculus, statistics and neuroscience (at the very least, about
how neurons work). Even if I end up being unable to do research in the field,
I still think calculus and stats are very important, so its a win-win anyway.

3> Psychology. I've had my own battles with anxiety and depression, and one of
the things that has helped keep me at bay even when I had suicidal thoughts
was my knowledge about mental health. I could tell myself "this is not right,
fight it or get help", because of what I've learned about psychology. I
believe that learning psychology can help me better understand myself, my
thoughts and my yearnings, as well as that it would give me the ability to
understand others who are going though similar (or more difficult)
circumstances. On the side, learning "persuasive psychology" can probably help
with understanding the effects of different marketing tactics, while also
maybe help me deal with difficult people. Other things like cognitive behavior
therapy and mindfulness are also things I need to learn, but that would
require some help from a therapist.

~~~
sn9
1) If you haven't, take this MOOC: [https://www.coursera.org/learn/learning-
how-to-learn](https://www.coursera.org/learn/learning-how-to-learn)

2) Machine learning and computational neuroscience are two different fields.
You really don't need to understand neuroscience to contribute meaningfully to
machine learning.

You'd be much better served by studying mathematics like
real/complex/functional analysis, abstract algebra, probability, etc.

3) If you've struggled with suicidal thoughts, anxiety, and depression, don't
bother waiting to see a therapist. Finding a therapist should be the first
thing on your list.

------
disposedtrolley
I've just begun my dive into games programming (coming from a web dev
background) which has taught me to think about problems from a data-driven
perspective, and how to write performant code.

It's also a great way to learn how complex programs are structured and
iterated upon. Games have so many layers of abstractions which are fun to
explore :) I'm following the Handmade Hero series which aims to create a
production-quality game from scratch -
[https://handmadehero.org/](https://handmadehero.org/) \- building and engine
and all.

------
febin
1\. Learn Math required for ML/AI.

2\. Learn to write deep content.

3\. Learn to manage personal finances

4\. Learn to invest

5\. Learn to draw

6\. Learn to sing

7\. Learn to have proper 8 hours of sleep

8\. Attempt to build a profitable startup again

~~~
mkl
Can you go into more detail on what you mean by "write deep content"?

I think number 8 is probably mutually exclusive with most of the others,
especially 7!

~~~
febin
I write on Medium. But, most of the content I write only touches the surface
of a topic. It doesn't go deep into the topic like some of the excellent
articles upvoted on hackernews.

~~~
ultrasounder
Could you post a link to your medium posts or atleast divulge your medium
username so that I can look your articles up?

~~~
febin
[https://medium.com/@heyfebin](https://medium.com/@heyfebin) I have written a
lot of bullshit due to ignorance. However, some articles turned out to be
decent. Here are a few.

[https://hackernoon.com/popular-use-cases-of-blockchain-
techn...](https://hackernoon.com/popular-use-cases-of-blockchain-technology-
you-need-to-know-df4e1905d373)

[https://hackernoon.com/the-impatient-programmers-guide-to-
le...](https://hackernoon.com/the-impatient-programmers-guide-to-
learning-e2960d0516a)

[https://hackernoon.com/how-to-build-it-fast-and-cheap-
cffbd2...](https://hackernoon.com/how-to-build-it-fast-and-cheap-cffbd21881bc)

[https://hackernoon.com/3-popular-types-of-blockchains-you-
ne...](https://hackernoon.com/3-popular-types-of-blockchains-you-need-to-
know-7a5b98ee545a)

[https://medium.com/wethinkideas/how-to-validate-if-your-
idea...](https://medium.com/wethinkideas/how-to-validate-if-your-ideas-need-a-
blockchain-e1a4846d16fd)

[https://hackernoon.com/what-happens-when-you-combine-
blockch...](https://hackernoon.com/what-happens-when-you-combine-blockchain-
and-education-d533ef6d4862)

~~~
ryanwaggoner
Agreed with the other commenter: don't be too hard on yourself. At first
glance, these are pretty solid and nothing to be ashamed of.

A few things that have helped me tremendously as a writer:

1\. Volume. There really is something to the idea that going for quantity over
quality eventually results in higher quantity _and_ quality. The more you
write (and read), the better you get at it. Also, no one churns out
consistently great stuff. You may need to write dozens of mediocre pieces to
find a great one.

2\. Consider hiring an experienced editor to go over a few of your posts.
You'll learn a lot in the process.

3\. There's a need for "shallow" writing too. You might want to write a
WaitByWhy-style 25,000 word post on blockchain, but 1) that's incredibly hard
to do, and 2) there's only so many people who want to read that. The audience
of people who might want to read a 800 word post on the subject is a lot
bigger, and writing a short-but-informative post is its own skill.

4\. Why do you want to write? In 10 years, what do you hope to look back and
have gotten out of it?

Anyway, keep up the good work :)

------
davmar
Our industry is behind when it comes to understanding race and racism. Proof:
Slack's mistake this last week.

In 2019, learn about institutional racism and why we have to undo it. Take a
course from the People's Institute. If you haven't learned about this in depth
before, be prepared to learn a lot and have your preconceived notions
challenged.

[https://www.pisab.org/](https://www.pisab.org/)

I promise you'll walk away with new perspectives and discover a whole new area
you can grow and make a difference in.

~~~
natestemen
I'm glad someone has mentioned this here. It's something our industry is
really not taking seriously at all and needs more people pushing for.

As you mentioned company decisions have real racial effects, and those
decisions are often made by homogeneous teams that lack diversity and
perspective.

If anyone wants a recommendation for reading to build up some knowledge about
these issues I would recommend reading "White Fragility" by Robin DiAngelo.
She does a great job breaking down lots of common misunderstandings white
people have about race, and why those misunderstandings are created in the
first place.

~~~
ryanwaggoner
I start with a pretty strong bias against any philosophy that counts
skepticism of itself as proof of its own existence. It's like a religion that
says you know it's true because other people will claim it's not true.

~~~
davmar
I'm not sure what you mean by this comment. How does it relate to the
discussion on racial equity?

------
davidwihl
Public speaking. It's a skill I developed later in life, and could have used
very frequently had I had previously. The power of oration to influence people
is quite amazing.

------
zero4ll
Learning Azure Dev Ops is always good as it makes it possible to publish your
own Ideas in a scalable environment that is affordable. Microsoft Learn is
pretty neat as they will take you through the basics for free, just take your
time. You also get nifty badges from Microsoft for completing different
learning modules. They are very much making it look like a nice page you can
attach to a resume.

------
mud_dauber
Negotiation skills.

[https://abe-winter.github.io/2018/12/20/stalin.html](https://abe-
winter.github.io/2018/12/20/stalin.html)

[http://www.jamesaltucher.com/2014/05/the-ultimate-cheat-
shee...](http://www.jamesaltucher.com/2014/05/the-ultimate-cheat-sheet-to-
become-a-great-negotiator/)

[http://time.com/38796/6-hostage-negotiation-techniques-
that-...](http://time.com/38796/6-hostage-negotiation-techniques-that-will-
get-you-what-you-want/)

[https://hbr.org/2016/07/how-to-negotiate-with-a-
liar](https://hbr.org/2016/07/how-to-negotiate-with-a-liar)

[https://hbr.org/2014/06/how-to-negotiate-with-someone-
more-p...](https://hbr.org/2014/06/how-to-negotiate-with-someone-more-
powerful-than-you)

[https://www.fastcompany.com/3001209/negotiate-car-
salesman-5...](https://www.fastcompany.com/3001209/negotiate-car-
salesman-5-tactics-help-you-win-every-time)

[https://www.theatlantic.com/business/archive/2015/04/ask-
a-h...](https://www.theatlantic.com/business/archive/2015/04/ask-a-hostage-
negotiator-whats-the-best-way-to-talk-about-a-raise/391943)

[https://bothsidesofthetable.com/when-should-you-allow-
exclus...](https://bothsidesofthetable.com/when-should-you-allow-exclusivity-
in-deals-15b37534cfba#.zick9tdk7)

[http://www.bakadesuyo.com/2014/11/how-to-deal-with-
difficult...](http://www.bakadesuyo.com/2014/11/how-to-deal-with-difficult-
people/)

[https://mindhacks.com/2014/05/26/the-best-way-to-win-an-
argu...](https://mindhacks.com/2014/05/26/the-best-way-to-win-an-argument/)

~~~
walamaking
This is fantastic.

------
northwest66
This year I'm going to build a small CNC mill and learn to operate it
correctly. That and dance cha to at least a competent social level.

------
westoque
Learning more Math.

Contrary to popular belief that you don't need math to do "programming", you
actually do need math to progress in said field. Whether you like it or not,
Math will be a limitation when it comes to acquiring new knowledge in the
computer field. For example, I've been wanting to do Machine Learning for
awhile and it just so happened that you need a lot of Math to fully understand
it. I've been reading the book "Machine Learning for Humans" and that book is
amazing and can't recommend it enough. [0] They explain complex concepts in
ever so simple sentences, but reading through the book, you see formulas and
equations that are intimidating to the person that is not used to reading
them. I would assume that a math major would have a different and opposite
experience.

So yes, more math.

[0]: [https://medium.com/machine-learning-for-
humans](https://medium.com/machine-learning-for-humans)

------
DrNuke
Sales. You will have a different job every day and meet different people until
the end of this world.

------
kurosawa
Do something that would be orthogonal to the current sum of your life
experiences.

~~~
mooreds
This!

If you have time off, do something risky that you wouldn't do normally. Why?
Because soon enough you'll likely be back in the normal swing of things and
unable to take that risk.

Examples:

Work on a farm

Do the Appalachian trail (or similar)

Take the train across Australia

Learn to ride a motorcycle

Learn to play guitar

Etc Etc

~~~
omosubi
I worked on an organic farm this past year for two weeks (through WWOOF) and
it was probably the best two weeks of the year for me. It really opened my
eyes to how food is produced and just how much humans have changed the
landscape of the planet - well worth the effort

~~~
mooreds
I spent 6 months at home and abroad travelling and WWOOFed for 3 weeks of it.
Those 3 weeks had the biggest impact and resonate through my life even today,
years later.

------
crb002
Postgres, Rust, and Angular is the current long term support tech stack. Start
with Heroku and some AWS S3 buckets to store media assets.

UX research methods. Then finding projects/teams you want to work on.

Personally? Thinking about writing a book on SMT solvers, extending jHipster
to other languages, doing some high performance SAAS offerings, publishing my
semigroup research, my serverless complie optimzation toolchain, and my LLVM
based operating system call taint annotation for C++/Rust to get Haskell style
IO annotations.

------
apsdsm
A little on the noes perhaps but try learning how to teach. I took some time
to learn how to teach English many years ago and it was a great perception
changer.

------
xiphias2
Investing is a great skill to have. Starting with understanding different
asset types, their histories, modern portfolio theory, diversification, tail
risks of all assets, how central banks and other banks work. I believe the
market can be beaten, but you have to have more financial knowledge than the
average retail investor.

~~~
thomas93
While this might be true, I think a more reasonable skill to acquire would be
a better grasp of financial literacy.

People spend an incredible amount of time accumulating capital, but many spend
hardly any time learning to properly manage it, relying instead on financial
advisers selling commission driven products.

I think that it is often the mentality of trying to "beat the markets" that
lead people to make poor financial decisions, when in fact the majority of the
population would benefit from taking the time to obtain a fundamental
understanding of their own personal finances.

~~~
xiphias2
We can say both are important skillsets (two sides of the same coin), so I
won't argue with you :)

Also maybe beating the market is not that important, but I was making a
mistake of accumulating cash without investing it when I was younger. I didn't
have spending problems though as I was frugal in my life (though being too
frugal was a problem in itself as well).

------
edgecrafter
a personal skill which improves life over time, e.g. take up meditation, tai
chi, yoga, regular fitness or similar

If planning on going freelance/solo develop presentation skills. (reading up
on stuff like
[https://www.amazon.com/gp/product/0321668790?ie=UTF8&tag=gar...](https://www.amazon.com/gp/product/0321668790?ie=UTF8&tag=garrreynoldsc-20&linkCode=xm2&camp=1789&creativeASIN=0321668790))

For technical skills, really depends on where your interest and skills are ...
look for longterm trends and learn stuff that matches your
personality/interests/skills

------
pjbster
Not a list of "whats", exactly; more like a list of "whys":
[https://80000hours.org/](https://80000hours.org/)

------
StudentStuff
Ideally gain skills that will weather the potential recession that should
start mid-year? Not sure what those will be exactly, but perhaps others have
an idea...

~~~
maxxxxx
Networking and interpersonal skills. I was around when the .COM bubble burst
and all your technical skills that made you easy signup bonuses a year earlier
were worth nothing. But knowing somebody who trusted you would give you the
job.

------
todd3834
I've been getting pretty psyched on Machine Learning / Tensorflow. I plan on
diving deeper into this world in 2019

------
totemandtoken
I hesitate answering because I am not really a software engineer, but I think
a strong understanding of philosophy will probably help. I see a lot of other
comments in this thread recommending empathy, organizing, hermeneutics, etc.
Most of that goes under the admittedly large umbrella of philosophy.

Software engineering/programming is somewhat distinct in most fields because
you can by some abstraction recreate and scale a thought with high fidelity.
In the past, we could transfer or spread thoughts through books or other
media. This might've created some sort of mimetic action on the consumer of
the media, but it would probably be some corruption of the initial thought of
the author. Consider for example, Marx claiming that "what is certain is that
I myself am not a Marxist" (not that I am intending to start a political
discussion, just to point out that sometimes artists distance themselves from
the art). By contrast, a computer program is a thought that is enacted with
precision each time it is called. Which is what makes the content of program
so philosophically important. Ethics of course becomes paramount because
speech is now action in a much more salient way than it ever was before. But
the questions of values and of aesthetics should also be considered.

You will probably have to carve out your own fields of study within philosophy
and how it relates to computer science beyond the usual accelerationism,
trolley car problems, digital physics, etc, but I think it will be well worth
it if I'm just giving my two cents here.

~~~
badsavage
Philosophy and functional programming are my most important skills. Ontology
and logic are super useful for a programmer.

------
huxflux
Have less girlfriends

~~~
xchaotic
said no programmer ever ;)

------
purplezooey
Brown-nosing

~~~
scarface74
While that could be stated better, Organizational Theory 101 is that there are
three levers of power - relationship, expert, and role in that order. After
ignoring relationship power for years, that has helped me get ahead more than
anything.

~~~
mud_dauber
The 48 Rules of Power should be on your bookshelf as well. (This not entirely
in jest.)

------
bitwize
Cloud, machine learning, AI. If you haven't gotten your Ph.D. in machine
learning by now, you're at considerable risk of being replaced by an offshore
dev who can do your job for pennies on the dollar. As for languages, the
future of computing is JavaScript (except for the lowest and most performance-
sensitive layers, over which the Rust Evangelism Strike Force has an
unshakable claim).

Nontechnical skills: practice vipassana and observe a strict, austere hipster
diet (preferably plant-based) if you want to not die. Learn how to sustainably
live off-grid with zero emissions if you want to not kill the planet. And for
God's sake, delete your FANG accounts. All of them.

~~~
ultrasounder
"As for languages, the future of computing is JavaScript (except for the
lowest and most performance-sensitive layers, over which the Rust Evangelism
Strike Force has an unshakable claim". You mentioned AI/ML both of which are
deeply embedded in Python ecosystem though R is still the choice of academia.
JS is and will continue to be a client only Tech stack for ML because of it's
lack of a NUMPy like Math library. Between friends you should also add Python
to your arsenal of languages to learn.

~~~
bitwize
I have a feeling that will all change once the data community gets wind of
TypeScript.

