Learning a new framework or language always feels slow and sluggish at first. I’m working on learning Ruby on Rails right know after a year or two of not learning a new framework and I had also forgotten the feeling. At first, I stumbled at every step on the way and nothing was familiar even if I’ve been programming for the web for many years. Not to help things, Rails is a strongly opinionated framework, so a lot of things are done by convention and not by configuration or by code. It’s a great productivity boost once you know the proper conventions, but it’s hard to deduce all of them at once when getting started.
At first, I had the impression that I was going slower than usual. For a developer with a good grasp of the web and of other frameworks, a few weeks should be enough to get up to speed in a related technology and reach a point where they’ll be able to produce work at a decent pace. Not top cruising speed, but a few months down the line nobody will notice that they were new at it.
I’ve started two months ago and I’m barely getting there, but the thing is, I’m going at it in my spare time. I realized it was totally normal and that I was not growing soft with some simple mathematics. I’m sure you’ve also had the impression that you were too slow and not as productive that you could be when you started learning a framework for a new project or a new job, but it’s totally normal if you look at the time involved. Here is a ballpark estimate of what you can expect depending on the time you have to learn:
- If you’re learning as part of your job as a full-time developer, you’ll have about 30 hours a week to get up to speed if you don’t have any other task to work on. This number gives you some padding for a few meetings and unforeseen emergencies. If you learn by yourself using online resources, 3 weeks is a reasonable time frame to learn a new framework you’re not familiar with, so 90 hours are needed. Let’s round it up to 100 hours.
- If you’re learning on you own and have a busy life, you’ll have time to work on it maybe 1 to 2 hours a day for a total of 5 days a week because you’ll most likely be busy a few nights a week. So 5 to 10 hours a week would be a realistic estimate. If learning that same skill takes 100 hours, you’re looking at 10 weeks to 20 weeks to do the same job. So, in the end, it’ll probably take you 3 months at the very least, and probably something like 6 months if you’re too busy.
These times are not strictly equivalent, but should end up being about the same: if all your learning is concentrated in a short time frame, you’ll loose less time to context switches. It’ll be faster to get set up and remember what you were doing if you’re working on it all the time, and you’ll need switching less often for the same result if you’re working a full day on it.
On the other hand, when you have to stretch it out, you’ll have more time to for new knowledge to sink in between sessions as long as you build the habit of doing it regularly. It’ll take longer to reach the same result for sure, but you’ll reach the same point eventually.
You’ll still be working as a software developer in 6 months: this time will pass anyway, so if you start investing some time now you’ll have a brand new skill down the line. So don’t be too hard on yourself if you feel that learning something is taking you forever: you’re not too slow, you just have to put in the time to get better at it.