Ask HN: How do you decide what to learn next?
Let's say you have very limited time to learn and that you are not doing much learning in your day job. How do you decide what to learn? What is your process for picking up topics to learn (other than "this is interesting")?
103 comments
[ 3.7 ms ] story [ 172 ms ] threadSince I'm the only dev and I have to do back end and front end I realised that I was weakest on the front end (particularly JavaScript) so I made a concerted effort to learn JavaScript properly since apart from picking it up organically for years I'd never really studied it.
The funny part (to me at least) is that while I'm never going to like JavaScript I dislike it a lot less than I used to once I understood the underlying structure better.
Javascript: The Good Parts (though this is a bit full on if you are really just getting started).
Reading the source of popular libraries as well in a good IDE so you can jump around and get to where stuff is defined/created.
That's pretty much me. Someone will say something, or I will see something somewhere and a little bit of looking it up to find out what was being talked about might pique some interest and off we go.
Interestingly, this doesn't happen in my day job :(
I believe something can be useful when I need to know it or when it is a good basis for other more applied topics.
If there is something that can speed up my workflow, I learn it. If it improves my applications speed without much time to implement / learn then I work on that.
For new shiny Javascript libraries I really have held back to see what the winner will be; backbone used to be the go-to lib, ember (tried to learn but it changed a lot in the early days), angular (decided not to invest any time into it).
There are 24 hours in a day, don't try and learn everything, just try and be productive with the tools you have and the ones that will get the job done for you.
My time these days are spent learning Nepalese, React and trying to build a business in Nepal....keeps me busy.
When I want to learn something new I pick an item from the list and work on it (usually some idea I came up with). My preliminary research efforts often help me realise an idea or it gives me a chance to compare two different learning sources. I also try to create something using what I learned. Through craft I feel like I draw more from the learning experience. The outcome can also be that I need to find better references or that I simply want to learn something else.
The most difficult thing is getting started. I find it useful to be systematic about it by explicitly devoting time to it. Once you have a system in place you like it eventually becomes a habit. Also note that it is helpful to break tasks into small subtasks. Having a feeling of accomplishment leads to a more positive experience of the learning process which further leads to increased learning drive.
Note that my process is not much more sophisticated than "this is interesting". However, instead of acting on some hunch in the moment I act on observations which I gather over time.
I think it's much easier to learn things when you have a goal because you have to learn tiny nuggets of knowledge that are useful. I find learning something without the context of how to apply it to the real world is very difficult, so I generally don't just go out and learn things (tech-wise) without a legitimate usage in mind.
That generally is what drives what I learn. I'm about to start getting deep into BPM2 and Activiti because it looks like it will solve an organizational problem that I'm currently observing, just as an example. Otherwise it's not really connected to anything I would be doing otherwise (although there are a few potential use cases if I understand the system the way I think I do).
I'm presently learning predicate calculus and formal specifications of software systems. I came to it by hunches: software engineering should be more like engineering because companies like Yahoo! Japan are building earthquake notification systems on OSS infrastructure and the keynotes at Blackhat suggested it was a requisite for this industry to move forward. It turns out the math is beautiful and it helps me design better software and I'm only just getting started.
It has also added new things to my list of things to learn such as the refinement calculus as well as alternative modelling systems like Event-B.
I have a very sensitive mind. I can't concentrate on multiple projects at the same time. For example: If I'm working in a day job, I can't work on a side project efficiently, I can't concentrate on both my office work and side projects. If I do, My employer could easily figure that I'm churning out.
So, If I want to work on a project.. I'll make sufficient money then I quit my job and spend next coming months fully-fledged on my project.
It was never useful to me and I remember zero content from either of those now.
A First Course in Abstract Algebra - rotman
[edit] By learn, I don't mean simple regurgitation of the facts or some superficial thing, I'm talking about extended study and efforts.
Though it's not cheap, I think it's the best investment I've made in my own professional development.
This being said, I also own a Kindle Paperwhite and use it at least an hour a day for reading non-technical books. I can't recommend that device enough.
* Says that the rest of the world is doing it wrong and they will fix the situation with this "change of paradigm".
* Presents their products as a "social movement" that's "challenging the industry as we know it".
* Promises 10x productivity.
* In general, bases their success on attacking others. Specially if they say things like "everybody knows exceptions are like cancer".
* Uses grandilocuent names to call a two thousand lines library.
* The resulting code looks like gibberish. The most likely a child can understand it, the better. It it's directed at the elite programmers, bad.
* Doesn't put enough care on tooling.
Edit: OK, it's a very negative answer, but it's effective. It quickly discards 99% of shiny new things.
Also let me insist that these are heuristics I apply to what I use for my own consumption, usually to create private tools that will make my life easier, or just to learn something satisfying.
That said, I bet you know Haskell better than me. The fact you singled it out asking about it makes me suspicious it shows at least one of the red flags :-)
If that's right, I don't care how good it is.
For me C# is at least twice as productive as Objective-C, so I suspect there more where that came from. I'm on the lookout for another 2x boost. But the farther down that road you go, the more isolated you become. It's a bit of a balancing act between individual productivity and being able to hire and work in groups, or to find help. Perhaps
https://developer.amazon.com/public/solutions/alexa/alexa-sk...
http://stackshare.io
Ideal features would include:
- a regular review of the things you've listed to see if they're still relevant and to help you prioritize
- a way to see what's trending amongst everything you've listed (ex. I have three front end web frameworks on my list but React is collectively popular, so perhaps I should start there)
- it could notify you if a new (good) book / blog post is published on a topic you're interested in
- you could compare with your friends to see if someone you know has learned it recently or to sit down and hack together
- it could share a common list of subtasks across users -- for example, starting with Django Rest Framework might consist of: (1) doing the python tutorial + (2) doing the Django tutorial + (3) doing the DRF tutorial
In the case of this project, I'd pushed it off because I thought others wouldn't be too interested. Nothing like a little HN community validation :)
I think I will build it :)
I actually wanted the same thing but for Spotify. I settled on making two "_To Listen" playlists: one for singles, one for albums. After I listen, then I delete from that playlist.
Writing that out makes it sound as somewhat awkward as it is, especially (quickly) on mobile.
https://www.youtube.com/watch?v=pB_lGaKHODY
There is a public ranking system for users based on points. You receive points for watching videos, completing quizzes, and doing code challenges. It's pretty meaningless, but these points are categorized based on what type of track they were earned from, so you can see what people are most recently learning.
They don't tailor their notifications to specific niches. You always get a Netflix like notification whenever they upload new content. Their feed doesn't have the option to sort by what's trending/popular either. It's a relatively expensive service and is criticized for being pretty dumbed-down in how they deliver learning material, but I think it can be useful.
What I'm envisioning is something agnostic of any particular learning platform or the content you choose to learn from, at least to start.
Thank you for the insight.
Is there a better way?