Ask HN: Time to update my skills. What should I do?
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 / setup, including AWS for the past 5 years or so. I've got no formal CS training, just what I'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.
I hate to say it, but I don't feel like I'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?
17 comments
[ 3.4 ms ] story [ 46.6 ms ] threadInstead, I suggest learning Android. It's my "next five years" step.
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
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.
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.
-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.
I've also been looking into learning a bit about machine learning and data science via 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.
And that is just one example.
Type in a term and go