Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

closed as not constructive by gnat, Walter, Matthew Flynn, Robert Harvey, Tim Post Nov 30 '12 at 13:52

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

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. –  jonyamo Nov 29 '12 at 14:42
2  
This sounds like career advice to me (see FAQ). Vote to close. –  n00b Nov 29 '12 at 14:56
11  
@Droid: I don't even see how this question could be a career advice! –  Lorenzo Nov 29 '12 at 15:56
17  
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. –  Steve Evers Nov 29 '12 at 16:34
1  
Bear-in-mind that the vast majority don't stay-on-top of the latest technologies. –  nicodemus13 Nov 30 '12 at 11:38

23 Answers 23

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.

share|improve this answer
10  
Hacker News is very popular –  Gary Rowe Nov 29 '12 at 15:28
20  
+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). –  Oliver Weiler Nov 29 '12 at 15:38
4  
SE network is one of the only places I comment, anymore. Value is very high. –  New Alexandria Nov 29 '12 at 15:38
49  
@OliverWeiler The irony of reading your advice on not reading comments... in your comment. –  Gavin Coates Nov 29 '12 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 Nov 30 '12 at 4:51

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.

share|improve this answer
4  
I call that Managing Up. –  Warren P Nov 29 '12 at 20:07

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 had to deal 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.

share|improve this answer
5  
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 Nov 29 '12 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 Nov 29 '12 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 Nov 29 '12 at 15:23

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.

share|improve this answer
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 Nov 29 '12 at 15:36
1  
That doesn't help for books you've already purchased. –  Shauna Nov 29 '12 at 17:06
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/… –  Angelo.Hannes Nov 30 '12 at 8:27

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.
share|improve this answer
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 Nov 29 '12 at 12:07

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.

share|improve this answer
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 :) –  u2sonderzug Nov 29 '12 at 15:25

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. :)

share|improve this answer

"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.

share|improve this answer

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. :)

share|improve this answer

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..

share|improve this answer
1  
launch time or lunch time? :) –  JoelFan Nov 29 '12 at 15:26

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.

share|improve this answer
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 Nov 29 '12 at 20:22

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

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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/

share|improve this answer

I am visiting tech events in local communities, and get to know a lot of interesting staff there. Meeting with professionals and getting their insight on problems and solutions is realy helpful. Thus, being connected with your colleges keeps me aware of ongoing processes.

Here is a link that mostly has events in US - www.communitymegaphone.com.

share|improve this answer

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.

share|improve this answer

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).

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer
4  
This is certainly not the case. Google does, but last I saw they're not "most companies". –  Telastyn Nov 29 '12 at 12:30
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 Nov 29 '12 at 15:39

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

share|improve this answer

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