Live data from Hacker News

Ask HN: With such fast changes in technology, how do you update your skillset?

news.ycombinator.com

71–80 of 90 posts

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#71

Learn patterns and pop up the abstraction level. There are only a few patterns in programming: imperative, OO, functional, etc. Learn those. There are only a few abstraction levels in problem solving: meta, business, system, physical. Learn those. There are only a few types of patterns in ML and Big Data. Looks like it's time to learn those. But the principle is the same. Learn the patterns of various forms of soluti…

I've wrestled with this question virtually since the day I began coding professionally: Should I become an expert at one language/domain, or, should I constantly learn new things and change roles? I've done the latter, and I don't know yet if it will have been worth while. I worry about being a "jack of all trades, master of none". Yet, as you point out, a master of one trade had better hope it doesn't become obsolet…

You say "or" but it can be "and". Best is to be an expert in one, "and" having a jack of all trades experience. I.e. you can specialize in front-end work with framework X, but doesn't mean you can't have experience with optimizing db queries. I think a big part of how to do that is just to stay curious and learn new things for the fun, while having a go to language to get things done efficiently.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#72
post #19

3 steps program (specially crafted for the aged) =============== 0. Assume any "new" thing is worse than the "old" alternative - until proven otherwise. 1. Critically filter out hype/PR. 2. You're left with much less to learn. 3. Invest "out-of-work" time in something really valuable.

Yep, totally agree. And I think the more experience you have, the easier it gets to filter out the crap.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#73
post #11

To be honest, it isn't and I don't. That sounds rather blunt, but most organisations that aren't startups don't change technology quickly if at all. C++ has served me well for two decades; I probably ought to adopt C++14 but on the other hand my current job requires that the codebase build with a 2008 compiler. I'm also extremely skeptical of the extent to which AI and VR are new , as opposed to incremental improveme…

I completely agree with you. I started in this field in 1992. I've seen the coming and goings of many flash-in-the-pan technologies. If you are a dev and are selling yourself on your skillset, ask yourself, "is this sustainable?" The answer is "no." A fifty-year-old brain simply does not absorb new technologies as fast as a 25-year-old-brain. If your plan is to continually adopt new cutting edge technologies in order…

I completely disagree with this. I am also a few years shy of 50 and way ahead compared with 20+ year old self-styled "ninja" developers. They simply don't know what they don't know. They truly believe that they are "experts" or "ninjas" because they have read a few tutorials on the latest soon-to-be-forgotten fashionable language/framework. Or believe that framework/language X is truly something new because a "hello world" web application is easy to write. And then a year later, when things get tough and the realise that the wonder framework/language has limitations, they jump ship to yet another shiny "silver bullet" framework/language that will save them from having to actually learn the hard stuff, allowing themselves to still believe that they are "ninjas". Meanwhile, people who actually know their stuff take over the ruins of their efforts and make it work. Rewriting it step by step to fix it.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#74

Earlier quoted context omitted.

I completely agree with you. I started in this field in 1992. I've seen the coming and goings of many flash-in-the-pan technologies. If you are a dev and are selling yourself on your skillset, ask yourself, "is this sustainable?" The answer is "no." A fifty-year-old brain simply does not absorb new technologies as fast as a 25-year-old-brain. If your plan is to continually adopt new cutting edge technologies in order…

I completely disagree with this. I am also a few years shy of 50 and way ahead compared with 20+ year old self-styled "ninja" developers. They simply don't know what they don't know. They truly believe that they are "experts" or "ninjas" because they have read a few tutorials on the latest soon-to-be-forgotten fashionable language/framework. Or believe that framework/language X is truly something new because a "hello…

And how do I know this by the way? Because I have done it many many times in my career. Taking over a ruin build by "ninjas" and making it actually work and bug free in production. Meanwhile the "ninjas" have jumped ship to another company, building a new ruin with some new "better" framework/language. Until of course things get tough and they again jump ship, leaving the ruin to somebody who actually know what they are doing.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#75
A great quote from Lambert about what software development is:

1. Decide what the program should do. 2. Decide how the program should do it. 3. Implement these decisions in code.

Only the last part is actually coding.

In other words, as a software developer, you are not paid to type. You are paid to think. And the deeper your knowledge and experience, the better tools you have to actually do that. So focus on learning step 1 and 2!

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#76
I think having a good core is more important than the "latest flashiest framework" / "New Language" / "whatever" at the end of the day it will be your experience that gets you out of the shit, not some new tool! However saying that I think it is important to not let yourself go stale. I worked with a company that had about 6 devs that were doing things seriously old school, they had no interest in upgrading their skills and for someone who likes to keep on top of the new features on languages it was painful to work with them. In the end however, when they left that company they probably found pretty quickly that they were unemployable!

For me personally, I find that I generally have free reign to test out "new (to me) technologies and my experience helps me realise quickly if they are going to be helpful or a bust!

Take any opportunity you can to do a "little project" in something that interests you and then apply it to problems in your work!

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#77
I'm concentrating on learning stuff that fascinates me. This also happens to be computer science skills that won't go out of date for a while. Some of it discovered before silicon chips! Even if it won't directly help me in my job today or getting a new job, it Will help my career in the long term by making me a better thinker and programmer.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#78

Fundamentals. I'm a game developer who have worked in 2d social/mobile lately and am now getting into VR. Turns out, if you know how rendering pipeline works, it's not such a foreign land after all.

Can confirm fundamentals. The longer i work as a developer, the more i see the importance to have a grip of the basics. For me this is mysql, linux, math rather than new frameworks, languages and build tools.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#79
Here is how it's going for me. For background, over the last few months I've very quickly become adept in deep learning, being able to understand current research papers, read through textbooks, implement my own models with Tensorflow and other libraries, and train real models on remote servers (e.g. AWS). For reference, I have an engineering background but no formal schooling passed an undergraduate degree.

The situation: my early-stage startup is fundraising right now, which can be kind of a time sink. Lots of accelerator/grant/angel applications. There's a good chance we hit our seed round, but also a good chance I'm unemployed next quarter when/if runway runs out.

In either case, I decided that AI, specifically deep learning, would be incredibly important to my career. The startup will need the expertise in the future (so I'll have to understand how to hire people with it), and should I need to find another job in a few months, this is a pretty cool field to learn and I find the work enjoyable (previously was a data scientist but foused more on vanilla regression and convex methods).

Therefore since November I've portioned out 20 hrs/week to the startup focusing on its fundraising and BD needs, which leaves a whole lot of other hours for skills development. Here has been roughly my curriculum:

- Mathematics review, and basic neural networks. For this I went over multivariable calculus and lin alg, which I've always been fairly strong, by essentially trying to derive the backpropagation derivatives for simple vanilla neural networks. Then make sure I understand derivatives and matrix data organization for convolution, which is a key component of modern ML. Sources: pencil and paper, and lots of Google to answer any of my questions. Time: 1-2 weeks.

- CS231n online course: http://cs231n.stanford.edu/ Great summary of modern methods in deep learning, plus more foundational level stuff. I read through all the lecture content and made sure I could work through derivations, because for me at least this cements technical understanding. Some of them are sort of tedious, e.g. manual RNN backprop. Also this course has great and simple software examples, I read through the code to make sure I understood the numerical computation and data organization parts. I also ran a few software examples and played around with parameters for fun (and learning). Time: 1 month.

- Reading research papers (and online lectures) on applications that interest me. For this phase, I found 10 initial research papers that interested me. The topics for myself included image classification (starting w/ classic 2012 Hinton paper), reinforcement learning, robotics applications, video prediction. This step was harder, can be like learning a new language. Not every paper is going to make sense at first. But go through enough of them and you'll build up familiarity. Sources: can start by searching through reddit.com/r/machinelearning Time: 2 weeks.

- Learning software frameworks. From the above step I came up with my own small sample problem related to stuff I read that I could test even on my weak laptop (remember, training these big networks requires big computing power). So in this step I started researching different frameworks, and settled on starting a small project with Keras. Sources: google around for deep learning libraries, read up on them, see what you like, and most importantly, have a motivating sample problem that you wanna code up. Time: 2 weeks.

- Harder problems, more software, more papers. This is where I'm at now, it's sort of like an iterative research loop where I 1) come up with new problems I want to solve, 2) learn more about the software I need to implement it, and 3) search more prior work to gain insights on how I can solve the harder problems. In particular, I've switched over to learning and using Tensorflow, and also learning how to use AWS for stronger computing. So I had to dust off some linux scripting and command line skills too. Like I said, this is fairly iterative and probably closer to "modern research" where learning from my (virtual) peers and experimentation and production are closely linked. Time: from the last month to present.

Overall, in the last 3 months or so at about 30 hrs/week I've added an extremely powerful new skillset to my arsenal that I've been meaning to do for quite some time. I can understand 90% of all modern research in the field, and create useful software to solve data-driven problems. Completely for free as well, aside from the $0.81/hr I pay to AWS for training some networks overnight. This is the type of thing I'd have wanted from a Master's (or even PhD) program, but who wants to go back to school...

Hope this helps someone :) Remember, AI/ML is more approachable than most people think, you just need to start with a solid mathematics background. After that you'll be flying, the field is relatively quick to learn, especially if you like learning through doing.

Re: Ask HN: With such fast changes in technology, how do you update your skillset?

#80

Earlier quoted context omitted.

I'm seeing a lot of mythic stereotypes here. I am a 52 year old full time coder, and have been actively developing since taking a college pascal class at age 11. > If you were a 50 year old coder 10 years ago, then your only hope of remaining in the tech industry would be to add "Manager" to your job title. People outside the startup bubble value delivering, regardless of age. Developers outside the startup bubble wo…

> I never start anything from scratch, as I have about a dozen application skeletons ready for various specific purposes, plus similar libraries I wrote, plus a knowledge of several large commercial SDKs, and developer experience in several major FOSS applications I've had a project manager (very insightful guy) tell me something similar before. He said "as you get more experienced you'll (ideally) write less code an…

Git is not a library, it's a program. There are, of course, libraries in many languages for using git[0] from within many other kinds of applications.

Another example of a library would be libjpeg[1] for reading and writing the jpeg image format and dealing with all the different ways the format can be adjusted, which gets incorporated into many applications, for example ImageMagick[2].

Basically, a library consists of code that is intended to be reused by calling it from other code.

[0] It's astonishing how often this gets reinvented. Here are just Python libraries: https://pypi.python.org/pypi?%3Aaction=search&term=git

[1] https://en.wikipedia.org/wiki/Libjpeg

[2] https://en.wikipedia.org/wiki/ImageMagick

Post reply on HN