83

I was a freelance web developer until circa 2004 when I started going down the management route but have decided to try to get back into development again (specifically JavaScript and HTML5 web/mobile web apps) and I really get the impression to be truly good at these and similar fast moving technologies a constant amount of time is required to be set aside to invest in getting better at existing skills in addition to learning new skills.

I understand right now since I am getting back into things there is a pretty steep learning curve, but seeing how good many guys are out there - the only way I see of getting up there is putting in a serious amount of time.

For those working as fulltime developers, what I am trying to understand is this - on most days, how much time in the office is spent actually grinding out code compared to learning/research. I could easily spend 2-4 hours daily getting on top of the best ways to go about doing things.

Do most good developers who are employed full time invest significant hours outside of work sharpening their skills?

Or maybe I'm looking at all of this completely wrong?

12
  • 13
    I don't have an answer per se, because I am still struggling with this concept myself, but one idea that really resonates with me is to simply move your feet. Commented Nov 29, 2012 at 14:42
  • 2
    This sounds like career advice to me (see FAQ). Vote to close.
    – n00b
    Commented Nov 29, 2012 at 14:56
  • 12
    @Droid: I don't even see how this question could be a career advice!
    – Wizard79
    Commented Nov 29, 2012 at 15:56
  • 21
    I don't see how a question asking how programmers can stay at the top of their game is remotely off-topic, or not constructive. Commented Nov 29, 2012 at 16:34
  • 1
    Ride the train. Driving seems like such a tragic waste of precious reading time to me now. Commented Nov 30, 2012 at 4:19

22 Answers 22

61

To be honest I use newsfeed reader. I subscribe to a number of blogs and technology related sites. I'll read my feed during lunch, before work and sometimes after work. However I use my tablet for that and will constantly review news sources for if they provide a good time to value ratio. I probably get 1-2 hours a day reading about new things.

Generally I will not waste time on reading comments or commenting unless its a real knowledge transfer.

14
  • 10
    Hacker News is very popular
    – Gary
    Commented Nov 29, 2012 at 15:28
  • 21
    +1 Generally I will not waste time on reading comments or commenting unless its a real knowledge transfer. This is actually really good advice. I also stay up to date via blogs and technology relates sites but only recently discovered how much time i waste reading comments, which rarely provide any value (ofc this depends on the topic and type of source). Commented Nov 29, 2012 at 15:38
  • 4
    SE network is one of the only places I comment, anymore. Value is very high. Commented Nov 29, 2012 at 15:38
  • 53
    @OliverWeiler The irony of reading your advice on not reading comments... in your comment. Commented Nov 29, 2012 at 15:52
  • 2
    @GavinCoates: The people who are reading his comment are exactly the people who are in need of that advice, so it works. :-)
    – ruakh
    Commented Nov 30, 2012 at 4:51
31

Really? This isn't one of the answers yet?

Suggest to the boss that you've heard about newThing and that it could help the company, especially with hideousProblemWeJustHad. That's how I made my foray into unit testing. That's not super-cutting edge, but my school did a horrible job of teaching what it was all about and it was new to me. Part of the time of doing that was definitely researching how to do it right.

And while this is more or less out of your control, I often find myself learning new things just to do my job. I learned DO-178 and SQL because they were kind of mandatory for the task at hand. If you REALLY want to dive into new stuff, get a new job.

In short. Get paid to learn. Because there's an actual honest-to-god reason to use (some) of these new things. Because they're better. If they're better, the boss will want you to use them because it will help his bottom line. There's some overhead, sure. The learning process isn't instant and time is money, but if it isn't worth it, hey, maybe the new thing isn't all that much better. In that case, shitcan it.

3
  • 5
    I call that Managing Up.
    – Warren P
    Commented Nov 29, 2012 at 20:07
  • Totally agree. Sometimes doing a bit of the work outside to show it's potential helps. I did this with ember.js and managed to actually get the project signed off, not to mention the overtime promised and bonuses
    – rickyduck
    Commented Nov 30, 2012 at 13:35
  • I had to google "managing up". Essentially it's managing those above you. Kind of a buzzword. It's working off the idea that your boss should be in the know about newthing and should be the one to suggest using it rather than the peons driving the company. But there are just SO many non-technical bosses and the field is just SO big that expecting the bosses to know what's best is kinda silly. It's not managing your boss, it's just throwing an idea out there.
    – Philip
    Commented Dec 14, 2012 at 22:51
15

I put the most useful information that I come across in an Anki deck. Every morning I spend 5-10 minutes going over the material. Just this week, for instance, Anki asked me this question which I had not dealt with for some time:

PHP: What must be done after a foreach on a referenced array?

I didn't remember if the answer was unset($value) or reset($value), so that kept me sharp. Sure enough, this very morning I had to use that in code.

I keep some snippets of information regarding AWS, PHP, Bash and other technologies that I use in there. At the very least, Anki keeps the info fresh in my mind or easy to find if I forget.

EDIT: I should also mention, for me programming was a hobby that developed into a software development career. I find that people whose careers are also their hobbies tend to naturally stay abreast as it their personal interest, not just professional interest. This goes for artists, doctors, gardeners, and most other skilled professions, not just programmers.

3
  • 7
    I started out as a hobbyist too but there were times when I arrived home after work that the last thing I wanted to do was open up an IDE
    – James
    Commented Nov 29, 2012 at 14:32
  • 1
    I had not heard of Anki before. The link you provided did not have an obvious link to a repo of shared decks. Do you have some nuggets that are good for programming?
    – Freiheit
    Commented Nov 29, 2012 at 14:46
  • 1
    From within the Anki application you can download user-shared decks (File -> Download -> Shared Deck). I'm not personally sharing a deck at the moment, but I could go through it, censor some things and then share it.
    – dotancohen
    Commented Nov 29, 2012 at 15:23
12

When time is limited, you are better to focus on the highest quality material.

Books (the good ones) are more likely to have higher quality material than blogs. Books with high average customer review scores on Amazon usually have the highest quality material. Get a Kindle and download a few highly rated books on the subject - keep it with you whereever you go. Maybe an hour a day of reading? - thats what I do anyway, not sure what is a good time guideline.

If you are getting back into the saddle and have the budget, better again is to attend a decent training course (or conference) for a kickstart. A few days of intense training = months of reading.

7
  • 3
    That depends entirely on the blogs you find. IE - You're very likely to find high quality material on places like A List Apart, Smashing Magazine, and similar trade-oriented "web magazine" style blogs, or the blogs of people like Joel Spolsky, John Resig, etc. Additionally, books often get outdated very quickly (for example, both my JavaScript and my Android development books are already pretty much useless due to changes in the technologies).
    – Shauna
    Commented Nov 29, 2012 at 15:36
  • @Shauna If you know the dates when major changes happened in the technologies (wikipedia is good at listing major change release dates), you can use Amazon's Advanced Search (near top left on any Amazon book page) to filter for only books released after the latest technology change date - Under "Pub. Date" on the search page you have option to select After a given date. I usually filter my search for books released only after major technology change dates and then sort the results list by Avg Customer review to find the best ones.
    – GBH
    Commented Nov 29, 2012 at 16:34
  • 1
    That doesn't help for books you've already purchased.
    – Shauna
    Commented Nov 29, 2012 at 17:06
  • @Shauna, that's what Safari Books Online is for. Commented Nov 30, 2012 at 8:09
  • 2
    Good books do not get outdated! Why would you purchase a printed documentation with some comments? Look at that list of Jeff Atwood codinghorror.com/blog/2004/02/… Commented Nov 30, 2012 at 8:27
8

Sharpen the saw is a must for all involved in any knowledge based work. How to do that is left to individual. Here are some thing I do

  • Listen to podcasts, pick up links are learn about the technology and its relevance is specific areas (http://www.javaposse.com/, http://www.se-radio.net/ and many more)
  • I read quite heavily (management and technology)
  • Do small project to get feel of new things, that is not directly used in my normal work.
  • Google tech talks - This is much more involved than plain podcasts, but more useful.
1
  • 3
    podcasts are a good way to figure out what is interesting. And you can listen while commuting or the like. I often listen on the bus
    – Zachary K
    Commented Nov 29, 2012 at 12:07
6

To be blunt, yes. Good developers do spend some amount of non-work time programming. Often times that is some pet project, where they can play around with new and interesting things. Oftentimes things that are not applicable for work use to broaden the mind and keep up with the (relatively) cutting edge.

1
  • 1
    I always daydream someday if coming home every night at 6pm and switching off from it all - and having weekends pretty free. Guess this is a daydream :) Commented Nov 29, 2012 at 15:25
6

As AC/DC would say: "It's a long way to the Top if you wanna Rock and Roll".

It's not going to be easy if you're aiming to the top. The main problem of trying to get back on the horse is to feel outdated - not to mention stupid.

You try to understand TDD, then you stumble on Dependency Injection and then on Inversion of Control containers. The latest thing to pop under my radar was CQRS. Trying to grasp all of that at once is really hard. Small steps.

And it doesn't help the fact the some of it can be considered just a fad. Boy, do we like to boast this new shiny thing that will solve all of our problems.

Couple of things to try:

  • http://www.safaribooksonline.com/ they have (it's kinda hidden) a 5 slot subscription per $ 9.99 per month. They have a mobile app. You can study wherever you are.

  • Subscribe to some video classes. I subscribed to http://tekpub.com/ once and loved. I also know of https://peepcode.com and http://pluralsight.com. You can watch on the go.

  • Choose a few good newsfeed and follow it. Choose quality over quantity. Otherwise you'll just feel crushed by too much information.

  • Use https://getpocket.com to store those interesting pages that you might want to view later. Stop opening new Tabs to view it later and forgetting about them. They have mobile apps that allow to view your stored pages on the go.

  • Use https://ifttt.com to make your life easier. I for one make it so that when I star an item on Google Reader, it saves automatically for me on Pocket.

  • http://www.class-central.com/ List of MOOC offered by institutions like Stanford and MIT. Some of it can be really interesting.

Anyway, the best programmers probably spend a lot of time outside work hours learning new things. But they do that because they love coding. It's easy to find time to improve your coding skills when you love coding. :)

6
  • "It's a long way to the top..." ;)
    – Alex
    Commented Nov 29, 2012 at 14:42
  • Some good advice here - I discovered CQRS the other day for the first time! Commented Nov 29, 2012 at 15:27
  • Got a link to that 5/slot 9.99 deal? I only see a $20/month individual deal on Safari
    – Warren P
    Commented Nov 30, 2012 at 3:49
  • No. It's kinda hidden. I went there. I clicked reactive and it showed me the 5 slot option. i.imgur.com/3E4GM.png Commented Nov 30, 2012 at 4:16
  • +1 for SafariBooksOnline, its the biggest thing to happen to dev books since dev books ;)
    – Kris
    Commented Nov 30, 2012 at 7:14
4

"Grinding out code" IS the best learning tool. When given something that can use a new method, I pound away at it till it works. If a customer requested something that required the new tech, I'll bill them for it, but if it's something I just hadn't gotten around to learning, I don't bill them.

The web stuff is moving at a good pace. In my little company I use freelancers for things I don't know or don't have time for. Usually they teach me but it has gotten harder to keep up with what works today but you couldn't use yesterday or it will work tomorrow so you should learn it today and on and on.

For non-web stuff things were more stable. You wrote code in one language on one platform. Now you need to know HTML/CSS/Javascript/Java/SQL/PHP/*nix/all those APIs....and then there's Internet Explorer....sigh.

It is a struggle for one developer.

3

Conceptualize & build your own projects.

Seriously. Everything thing I have learned has come from me coming up with some far-fetched idea then sitting down to try and figure it out. If you do this long enough, you will set yourself on a path of continual improvement.

1
  • 1
    Not sure why this is such a bad idea that someone would downvote it. Curiosity is a virtue when it comes to tech people. +1
    – Warren P
    Commented Nov 29, 2012 at 20:22
2

Just try to make the most of your free time. You could spend 3 hours every day learning about new technologies, but you still probably want to have some social life.. So it might not be the best approach.

What I usually do is learn during those moments when (in normal conditions) I would be 'lazy'.. Reading technology books in the train, watching podcasts before going to bed (insted of watching TV), reading StackOverflow, technology blogs or other sources when I need a rest at work (instead of being on Facebook), talking about technology with my workmates during lunch time..

2
  • 1
    launch time or lunch time? :)
    – JoelFan
    Commented Nov 29, 2012 at 15:26
  • Sorry for my english! ;)
    – margabit
    Commented Nov 29, 2012 at 16:03
2

One trick I use when learning something new is to go to StackOverflow (or the tech's dedicated forums), find a question I don't know the answer to, and work out the answer. Also, I try to implement something using the new skill/tech. For example, in order to learn how to program for windows phone, I asked my wife what kind of app she wants. The process of writing that app forced me to learn more about the platform and how to do things.

You can read all you want, but you don't get experience from reading.

2

Just ask yourself what drives you not what others are driven by?

For example - Do I want to create mobile apps or continue working on web apps since I have past experience on it or do I want to do some technical consulting? I think once you know what you want to be doing for the next few months or years, you'll know exactly where to begin and what you need to be learning.

This isn't a question what just IT people ask.

1

I have never found a better explanation of "how" or "why" to make time for this than Peter Norvig's "Teach Yourself Programming in 10 Years". When I lose motivation for "making the time" -- as you pointed out, who doesn't?!? -- I just re-read his article and re-commit. :)

1

For those working as fulltime developers, what I am trying to understand is this - on most days, how much time in the office is spent actually grinding out code compared to learning/research. I could easily spend 2-4 hours daily getting on top of the best ways to go about doing things.

My company are very forward thinking and like to ensure we are developing against the latest technologies. They appreciate that as part of this they must give their developers time to get their heads around new features/APIs etc. For example, we recently switched to Richfaces 4 from Richfaces 3. A massive migration where we easily spent half our time just trying to understand the new landscape. If a company cannot commit to giving you some company time to keep on top of the latest developments then you could be in the wrong place.

Try getting your company to get a Safari Books license. It is a comprehensive resource of the best technical books out there. Including a series of rough cuts and work in progress. The web in general is a great resource too but the levels of ambient noise and mis-information is high.

Do most good developers who are employed full time invest significant hours outside of work sharpening their skills?

I also invest an hour or so each evening outside of work to keep up to date. Every now and then I will update my professional certifications too which does require extra commitment over weekends to achieve.

Again let your company know that you are doing this in your own time and see if they will pay for your exam fees or training. Or perhaps allow you to sit the exam on company time.

1

The answer is simple, try to use the latest technologies at work, and if you can't, do side projects

But to save time you need to first know what to learn so your time is well spent.

This is what worked for me

  1. Hacker news, but one needs to be careful, searching periodically for keywords works for me
  2. GitHub - see the list of most starred and forked projects, this is almost always in sync with reality
  3. Stackoverflow - see the most trending tags and questions
  4. Google trends (but you need to know what to look for first)
  5. Indeed job trends (this is how I learned about MongoDB for example)
  6. Meetups (very good source)
  7. Twitter - follow fellow hackers you respect, I often learned of new stuff that way
  8. Coderwall, Geeklist and other hacker dedicated social networks help sometimes too
  9. Conferences - most of them are now online recorded after the fact or live
  10. Or, you can simply create a new technology yourself :)

Second part is how to learn it effectively so you use your time effectively

I found udacity, coursera, codeschool, codecademy, teamtreehouse, edx.org, udemy, net tuts+ and others to be great resources since their courses tend to keep up with latest technology

On the other hand you can end up in an information explosion and rant about it like I had before: http://tilomitra.com/the-crazy-world-of-code/

0

Resources & tools I use to keep up are listed below. I probably spend 1-2 hours per day reading up on tech subjects, though not always the tech subjects I should be directing my attention to.

As far as the ratio of time spent reading at work to time spent coding, I'll spend time reading up on a subject if it is directly related to the work at hand (e.g., how to use that new framework properly).

I find I do two types of reading. Deep reading on a specific subject that I'm using or will use in the future, or Wide reading where I will browse other tech areas that I'm not using but still find interesting.

  • Podcasts

    • Useful because of their portability. You can listen when you wouldn't typically be able to read (e.g., at the gym, cleaning house, cooking)
  • RSS Readers

    • Useful because they aggregate your blog feeds. Use them to group together high value content.
    • I've found setting up "search" folders for particular technologies useful as these folders will cover all blogs subscribed to.
  • Safari Books Online

    • I go back and forth on this one because of the cost. When I do use it, it is a great value but it takes effort to read all the books you add to your shelf.
  • Books (Dead Tree Format)

    • Useful for deep dives on a particular technology or for reference.

Scott Hanselman has a good video on dealing with your "personal data stream" - http://www.hanselman.com/blog/ItsNotWhatYouReadItsWhatYouIgnoreVideoOfScottHanselmansPersonalProductivityTips.aspx

0

In addition to what has been said, I would add - "Have a plan". I try to pick one or two technologies every 6 - 12 months, and set a goal of getting a deep understanding of these. Then I try to define actual tasks to get me there - say, read through a few online tutorials, pick a side project using that technology, start to follow new discussion sites (or subscribe to the new tags in StackOverflow), etc. This doesn't require a ton of time, but consistency in moving forward a little each week. (If you use a productivity system, such as GTD, your learning goals can be included in your normal project and goal planning, and reviewed regularly).

0

Newsletters!

I currently write a newsletter called Pycoder's Weekly a weekly newsletter for python developers which covers the weekly happens in various topics within python which is very topical to a certain area you might want to keep up with.

That really wasn't intended to be a plug.

I think this medium serves itself very well to keeping up with things and is an excellent resource for many developers.

There are many for various languages and tools, have to trudge through tons of news and find interesting things can be time consuming and extremely distracting.

0

There's a few things that I do to try to stay on top of new tech:

  • I probably spend an average 8-16 hours per week learning something new, or honing some idea, or just trying out a new technology. For example, I wanted to learn more about ASP.Net MVC 4, so I put together a quick app for work to let me manage some metadata in an old database. The app almost never gets used, and this wasn't a sanctioned project, but it's around if I need to add new fields, etc, and I can twiddle with it as needed.
  • I will revisit something I wrote or worked on in the past, and try to redo it in said new technology. I had written a simple script in Perl a while ago to let me scrape a public webpage every 15 minutes watching for changes, and decided I would see what it would look like in Python, and then I also rebuilt in Clojure.
  • I pay for and use a Safari account from O'Reilly and I constantly swap in new books on something that interests me.
  • I read through the different StackExchange boards to see what's popular, what's trending, etc. Even if I don't know the answer to a question, I will sometimes try to figure out the answer on my own.

These are just a few of the things that I do, but the thing that's clear is if you want to learn and stay up-to-date on something new, you'll just have to be willing to invest the time. It's like any other skill you want to hone.

-1

Some companies have policies that the employee can spend 20% of time on the other activities, than the day-to-day work. One can use this time to sharpen the saw or to keep on top of technology.

4
  • 4
    This is certainly not the case. Google does, but last I saw they're not "most companies".
    – Telastyn
    Commented Nov 29, 2012 at 12:30
  • Google's 20% time is very rare as an official policy at companies. It's slightly less rare are purely tech-oriented companies, and at companies where programming/IT exists solely to support the core business, it barely even exists.
    – alroc
    Commented Nov 29, 2012 at 13:45
  • @Telastyn - You are right. Changed "most of the" to some.
    – Manoj R
    Commented Nov 29, 2012 at 14:11
  • 1
    @alroc - I'd argue that it's not as rare as you think, if you expand it a little to include places that effectively do it, but don't have an official policy for it. I've been in several companies (particularly agencies), where you're pretty much expected to do side projects that could help the company if you're in between client/official projects.
    – Shauna
    Commented Nov 29, 2012 at 15:39
-1

What I do is I organize lunchmeetings at work every now and then.

I find some video (e.g. from channel 9) and just schedule it during lunch, get a beamer and a room and invite everyone who might be interested. A great way to spend lunch with colleages. Also a great way to show initiative.

-3

Technology is moreover passion, regardless of time and effort it takes, it makes craze in self and when addicted feels like void to self. Best to update yourself is using online reader, as previously stated. Mostly I usually spend like 1-2 hrs on different news feeds though I have no access physically to the technology. Its hard earned technology for me but thank to feeds that least I can sense it beyond my touch. Knowing technology is not just a way to have things known for self rather a way of paying tribute to the innovaters

Not the answer you're looking for? Browse other questions tagged or ask your own question.