Never stop learning

Dear new developer,

I was at a lunch a few weeks ago and asked some senior engineers and managers what advice they’d give to a new developer. One said: “never stop learning”. I thought this was a perceptive answer and wanted to expand on it. I learn something new every day. I’m going to talk about how to learn and then why people stop learning.

First, how to learn. I think the short answer is “Google”. The internet is an amazing place.

The longer answer is:

  • Think about why you want to learn. Is it for fun? To find a better job? To be better at the job you are at now? A side project that you are interested in? Scratching your own itch with a solution? Because you want to make the world a better place? Having a firm “why” will encourage you when things are difficult.
  • Determine what you want to learn. From the why comes the what. Is it a business  domain? A particular technology? A framework? A certain mindset?
  • Consider how you want to learn it. After what and why comes the how. Do you learn best through videos? Reading? Code tutorials? Blogging? A realistic side project? Reading others’ code? Try each of these if you haven’t and see what gets you excited and what seems to cause knowledge to stick.
  • Execute. That one little word is hard to do. But you need to find the time and the willpower to take the why, what and how and actually do it. As some say, it’s easy to write and hard to do. Start. And when you fail to make as much progress as you’d like, think about the why.

Why do people stop learning? I think there can be any number of reasons:

  • Bored: they simply aren’t interested in learning.
  • Frustrated/blocked: they can’t learn what they want to because of other constraints.
  • Tired: too much else going on and they need their energy for other things.
  • Comfortable: they know what they need to know and are “punching the clock”.
  • Shifting priorities: other things in their life have taken precedence.

All of these make sense. And it’s important to realize that you have a job to live your life, you don’t live your life to succeed at your job.

But, if you are not interested in learning new things, pretty soon technology will pass you by. You can still make a great living, but opportunities will get fewer and fewer, and you may need to shift companies or locations, or give up salary. There are definitely people still writing COBOL, but every year fewer companies need it. There may be people still writing java applets, but I can’t think of any companies that need that particular technology.

Another thing to note is that sometimes a shift in perspective, whether a new job or a new way of looking at your current job, can remove some of the obstacles that prevent you from learning.

So, figure out how you want to learn, and never stop doing it.



Help, I can’t learn/do something because it is boring!

Dear new developer,

Sometimes you have to learn or do something boring. I know there are times when I’ve had to schlep, whether that is data entry, learning a technology that I’m not thrilled about, or tediously manually replicating a bug many many times to try to debug it.

A couple of tips on how to deal with this:

  • Focus on the larger picture. This often helps me stay motivated. Why am I doing this? How is it connected to the larger goals of the organization? Who is this going to help when it is finished.
  • Notice the fun parts. You can’t, of course, only do the fun parts, but you can notice them and smile. For example, I am not really a front end developer. I find CSS to be a combination of both frustration and boredom, but there are times when I have to mangle it. I enjoy learning some of the basics (the difference between padding and margin). And it is often a chance to ask questions of  a member of my team with different strengths than I have, which is usually pleasant.
  • Automate what you can. Don’t go overboard, but you can do simple types of automation like creating a shell script or shell alias. Even just writing down the exact steps you are doing or the areas you’ve explored can be helpful. It’s helpful now to deal with the tedium (in two ways, both because it can be more interesting to write the automation than to do the work and because having the automation means you’re less likely to make mistakes) and helpful in the future in case this issue arises again for you or someone else.
  • Take breaks when you need to. Depending on your deadline, take periodic breaks. If there are other tasks on your todo list that you never seem to get to but have some value, take a break and do one of them. Remember that it is a marathon, not a sprint.
  • Depending on how long you’ve been working on learning this technology or task, you may want to stick your head up and make sure what you are doing is still needed. That is obviously not good advice if you have only been working on this for a few hours, but if it has been a few days or weeks, sometimes other priorities will take precedence. Be prepared to answer the question “well, how long do you have left?” with some level of confidence, though.

Sometimes you have to do or learn something that you find boring. Hopefully these tips will help make it a little easier.