

Ask HN: Time to update my skills.  What should I do? - gadhra

Growing up, my parents (both teachers) had to put in 100 hours of professional development every 5 years; I&#x27;ve tried to do the same as a developer, and I feel the time to put in my 100 hours is nigh.<p>I just turned 40, been in the industry for more than 20 years.  Management experience, lots of PHP, Python, bash shell. MySQL, CouchDB, and Redis. Plenty of network administration, web server, and infrastructure design &#x2F; setup, including AWS for the past 5 years or so. I&#x27;ve got no formal CS training, just what I&#x27;ve picked up on the job.  My tech portfolio has afforded me a good living working for startups as anything from systems administrator to front-end developer to back-end work to managing developers.<p>I hate to say it, but I don&#x27;t feel like I&#x27;ve got a great handle on the Next Important Thing.  Is it Go? Haskell? Ruby? Docker? Will learning any of those leverage my brain into important programming concepts, like the way C++ and PHP taught me the importance of OOP so many years ago?  Are any of those programmatic approaches going to be cornerstones for the future?
======
rickr
Learning a functional language (and way of thinking) was pretty enlightening
to me.

I've also been looking into learning a bit about machine learning and data
science via [https://www.kaggle.com/](https://www.kaggle.com/). They run
contests with some very interesting problems.

I don't know if these are the next 'big things' but i certainly don't regret
learning them.

~~~
bbcbasic
Me too. I found advanced C# expression shenanigans very confusing. Then I
learned Haskell. Now I see the C# but think the Haskell and it is a lot easier
to deal with even the most hardcore expression jujitsu that I see in the
codebase.

And that is just one example.

------
brudgers
Of the languages you mention, Haskell is the one that's probably going to take
you the furthest out of your comfort zone because there are a lot of practices
from other languages that just won't work...but I'm not sure that 100 hours
will be enough to recarve all the brain wrinkles that could be recarved.

An alternative would be a course on one of the MOOC's. Say algorithms or
cryptography or discreet optimization or whatever. That might fill the formal
CS training gap you've mentioned rather than layering something up on either
side. If the future is one in which computer hardware doesn't continue to get
exponentially faster, CS is going to be a cornerstone.

Good luck.

------
bsaul
I don't think learning another new language or admin tool is going to really
make a big difference ( it's an easy thing to learn once you know all the
previous one). Since you have no CS education, i'd think you should improve
your math / algorithmic skills. Such as :

-logic / type theory kind of skills. Seing how the recent batch of PL ( rust, swift) are influenced by research, i bet a lot of the industry is going to have a much higher demand for formal prooves, and all the topics you usually find associated to functionnal languages. If you need something practical, try getting your hands around Coq proover.

-AI : with the lastest hipe around deep neural network, and recent industry success such as SIRI or anything Google does, i also bet having a good general knowledge of AI algorithms and techniques is going to be an important thing for people in software development ( not necessarily to develop new ones, but at least know what's possible and how to use libraries). So, pick any course on coursera and try to follow them, there are fantastic ones, and they're very easy to find.

~~~
AreaGuy
What does 'prooves' mean?

~~~
bsaul
sorry, i'm not a native english. i meant formal proofs.

~~~
AreaGuy
Ah, no problem. Thanks for clarifying! I thought it might be some terminology
I did not know.

------
sj4nz
Formal Methods and systems like Agda, TLA+ or other where you develop proofs
of your algorithm. For me this seems like a very rich and deep direction for
software engineering. This is very much the atomic sledgehammer approach to
"first: make it correct; then make it fast."

~~~
AnimalMuppet
It sounds like gadhra wants to learn things that will advance his/her career,
rather than stimulate his/her intellect. With that in mind, I'm going to
strongly disagree with you. Agda and TLA+ are not going to open many doors to
jobs in the next five years.

Instead, I suggest learning Android. It's my "next five years" step.

------
lsiunsuex
I don't think you can plan this for more then 5 years out, if that. The
industry is moving to fast lately - new ways of doing things are constantly
coming out, new frameworks, etc...

I like to watch the job boards (regardless if I'm looking or not)
careers.stackoverflow.com, cybercoders.com, dice.com - search a keyword
(angularjs, docker, nodejs, etc... ) and see what you get - if it looks like
there's a good amount of demand, run in that direction.

Personally, my money is on frontend (angularjs, react), nodejs and mobile
(react native, obj-c, swift) - all signs point to an increasingly mobile world
- it's time to start learning those things to stay relevant.

------
mlitchard
Haskell is not the Next Important Thing, but rather the ideas that it reifies.
When Haskell is yesterday's news, the successful ideas will remain, but in the
next generation language. That said, learning Haskell will put you in front of
these big ideas, and I believe will make you valuable. That said, keep an eye
on Idris, and dependent types.

------
gizi
The next important thing is most likely not a programming language (and
certainly not a framework). At that level, there's a real breakthrough only
once every decade, if even. Everything else is noise that you can happily
ignore. If a job description demands an alphabet soup of noise, ignore it. It
will turn out to be a lousy job anyway. Download and read decent code from
github. You will find most code to be noisy. This is normal because 90% of all
code is noisy. According to Sturgeon's law, the reason for this is that 90% of
everything is noisy. Read a lot of code, write some once in a while, and don't
work for -- or with -- idiots and you should be ok.

------
Sakes
What a difficult question. I think it's confusing for the same reason that
there are so many options, we don't know what the future will be.

All I can tell you, and what most people will be able tell you is, what tech
we are exploring. For me that is React + Flux on top of a c# or groovy
backend. Docker is very exciting, but it is not exactly ready since the
containers you create in Docker don't actually contain.

If I had to reduce my decisions on which new tech to adopt to a primary
factor, I'd say it is, does this tech promote a decoupled code base?
Applications are getting huge, and whether you are trying to superman a
solution as a solo dev, or trying to clearly define a separation of
responsibilities across a team, the ability to make modifications to the code
with as little knowledge of the application as a whole is what will allow you
to develop a large app which is still maintainable.

React + Flux - yes

c# + entity framework + webapi - yes

groovy + gorm - yes

docker - yes

------
anon987
[http://www.indeed.com/jobtrends](http://www.indeed.com/jobtrends)

Type in a term and go

------
brador
Maybe it's time to start a project of your own? (startup?)

~~~
robodale
I agree with this. The act of delivering a solution to paying customers tends
to bubble correct enough solutions to the top. The optimal choice of
platform/stack and other dodads are a function of this.

