Keeping Up and "Just In Time" Learning

April 27, 2006

Do you ever feel like you're buried under umpteen zillion backlogged emails, feeds, books, articles, journals, magazines, and printouts? Do you ever feel that you're hopelessly behind, with so much new stuff created every day that you can never possibly hope to keep up?

Well, you're not alone.

Via SecretGeek:

  • You do NOT have to refactor all your code.
  • You do NOT have to keep up with the latest news from microsoft, and know everythnig there is to know about longhorn, whidbey, avalon, XAML, indigo and star wars III.
  • You do not have to have perfectly de-coupled tiers in your technology independent SOA software.
  • You do not have to comply to every standard, achieve the perfect balance between maintainability and performance. Usability and familiarity.
  • You don't have to do "first things first every day"
  • You DO NOT have to memorize and understand every patten the gang of four have catalogued.
  • You do NOT have to read every technical blog, print out every technical article and learn every technical thing there is to learn.
  • You are beautiful just the way you are.
  • You are brilliant, interesting, wise and fun to be around.
  • You rock.

Via Kathy Sierra:

I remember when the first public release of Java came out, and it had 200 classes. You could fit the entire class library in the same space as Miss January. But then 1.1 came out and the API more than doubled to 500 classes. It no longer fit on a centerfold – but you could get it on a wall poster. With 200 classes, you really could master the entire API. With 500, it took some effort, but you could at least be familiar with just about everything, given enough time. By Java 1.4, the library had swelled to 2300 classes. And today? It's something like 3500 classes just in the Standard Edition – not including the mobile and enterprise extensions. You could wallpaper an entire room with the class library.

By the year 2000, it had become impossible for even a Sun Java engineer – someone creating the API – to be familiar with everything in the standard library. Yet the rest of us were feeling guilty. Like we were falling behind. Like we weren't hardcore Java programmers.

It's time to let that go. You're not keeping up. I'm not keeping up. And neither is anyone else. At least not in everything.

Kathy has a few suggestions to combat Information Anxiety:

  • Find the best aggregators
  • Get summaries
  • Cut redundancy
  • Unsubscribe from as many things as possible
  • Recognize black holes (gaming, slashdot, etc)
  • Pick categories for balance; include some from outside your main field
  • Be more realistic about what you're likely to get to; throw the rest out
  • In anything you need to learn, find someone who can tell you what is
    • Need to know
    • Should know
    • Nice to know
    • Edge case
    • Useless

I don't worry about keeping up with the Joneses; I focus on the specific problem at hand. I take a "Just In Time" attitude to learning new technology. I can't possibly learn everything. But I do try to learn enough to know what the new thing is, and when I might need it. Most of the time, I don't need it. And when I do, I can learn it Just In Time to help me solve the current problem I'm working on.

Posted by Jeff Atwood
22 Comments

I'm starting to think we need more arrows. Like big, red, helpful arrows that point to a specific class in the big 3500+ class chart along with the text "probably a good class to start with".

Mats Gefvert on April 30, 2006 3:59 AM

Well article. I agree with everything. Thank you, now I won't feel down anymore.

Lukaszp on April 30, 2006 5:22 AM

I think it is a good thing to "feel stupid". Not in the negative sense, but to feel that you don’t know enough.
I don’t think Einstein walked around saying "Damn, I am maybe the smartest man alive”. Like with my newborn son, the more stuff he learns the more stuff my son needs to learn. The more books you read, you start to see how little you actually know. No matter how many programming languages you know even more programming languages you don’t know.

I am very much a JIT developer, I don’t worry about technology I don’t know. I just learn it, if I need it. So far it has worked great; I have solved every task in my career. But now I am starting to feel like a bad developer. I am mostly doing .Net programming, and more often I tend to get in little stupid situations when I think I am being smart. Like when I develop some smart UserControl, and the other developers just say, “well the framework already have that functionality, maybe only 80% as good as yours, but it works, so let us use that instead”. This is just an example and I do love a lot of things with huge the Frameworks like Java and .Net. But I tend to find that I should be less smart, creative and stupid. I should just be wise and follow the leaders.

Peter Palludan on April 30, 2006 5:52 AM

good advice. we need more books with the words "don't panic" on the cover ;)

Marshall on April 30, 2006 11:31 AM

Thanks for that post! It gave me a real feeling of relief to realize that not everyone I work with is super-human.

BTW, cleaning out the cruft from your RSS feeds may be more rewarding than cleaning out your office closet!

Schuyler Colfax on April 30, 2006 11:40 AM

Refreshing comments.

One of the things that is frequently forgotten about these things, it that the people who are 'behind' are experts. People on the cutting edge are not, because it takes years to master any new field.

Switching to new platforms/languages sets people back years - sure the principles and general experience carry over, but the fluency, speed, and specialised knowledge of the quirks and 'gotchas' do not.

Paul Coddington on April 30, 2006 1:45 PM

Interesting comments by Peter Palludan up there. I think this is evidence that programming, even at "advanced" levels, is "maturing" farther away from a science and more toward a "knowledge trade". I.e. anyone that knows the general rules can get by.

This may be good for productivity, and for advancement of technology in the computer industry. But I got into programming because of the challenge. I fear for the day that programming stops requiring creative thought and critical problem solving skills. I.e., when it becomes the intellectual equivalent of manual labor: problem X is a variant of general problem type Y. General problem type Y is solved with tool Z. Apply tool Z to problem X with appropriate force and *click* problem solved.

That's not what I got into this industry for. I want challenges. Recognizing the type of screw and turning the correct screwdriver is not a challenge for me. I want to solve new problems that have never been tackled before.

Chris on May 1, 2006 4:34 AM

I'm going to print the first bit (SecretGeek) and start reading it to myself every day when I get to work. I'm always stressing about "needing to know".

Actually, if I could drop the multiplayer Call of Duty 2 habit, and use that time to learn, I'd be a guru.

Mako on May 1, 2006 6:40 AM

I don't have it right to hand, but one of my rotating e-mail sigs goes something like:
"I'd rather learn SQL than 100,000 programmers APIs".

For those not doing database work, that's not much help. For the rest however, it sure does. If only we can get the coders fingers out of the data...

Buggy Fun Bunny on May 1, 2006 10:02 AM

Good suggestions. But like a diet, the effects only last so long before your subscriptions/bookmarks/whatever are once again massive. It's a perfect addiction: free, pleasurable, seemingly useful and beneficial, with no obvious downsides, at first at least.

reed on May 1, 2006 11:37 AM

I find that if I just read Coding Horror and The Daily Grind everyday, I'm well informed about the current goings on in the software development world.

Cheers to all those who can keep up with more than a couple of RSS feeds a day.

Ryan on May 1, 2006 12:38 PM

Wumpus,

You know, I agree with you, in principle, especially as it refers to myself. I don't need to learn every new thing -- and because I work in the embedded space, it's great to see all this Web 2.0 and "Yet Another Means Of Communication Between 2 Computers With Some Horrible Protocol Built On Top Of IP" just zoom by over my head like a 747 going from NY to LA. I don't care what those guys in the 747s are doing -- odds are that they'll just crash anyway.

On the flip side, I've worked with programmers that just didn't want to learn anything new. Programmers who start brand new MFC apps to send data over TCP (rather than using C# or VB). Programmers who get confused when using Bugzilla because they didn't read the error messages. Programmers who still need to be told why version control systems aren't just something setup to get in your way.

If you're reading a blog, you're probably not one of those people though -- and your statement is true. It's the people that don't ready ANY blogs which worry me.

Alex on May 1, 2006 1:51 PM

Trouble is, is SEEMS like everyone else IS keeping up. So how do I create this impression?!?!

Mags on May 2, 2006 2:57 AM

The problem with "just in time" learning is that it easily becomes "too little, too late." If you are blessed with sufficiently long or flexible schedules that you can easily budget in the learning time for the technologies you discover you need, more power to you. All too often though, it seems that by the time I discover I need a new technology, it's too late to come up to speed by the time I need it. So I think I need to anticipate a bit to keep ahead of the curve.

Dave W. on May 2, 2006 1:30 PM

It's nice to know I'm not the only person doing this.

In fact, computer sciences is a very vast subject, so it's impossible to be up to date in all of it's fields. It's much wiser to just keep a "cache" of knowledge, and fill it as you need. Of course, you have to be a fast learner, and avid reader for this. For example, I was able to learn C# and .NET in under a week to start a project, as well as learning the Twisted Python framework as I programmed a server in it.

Now, if you ask me something about Twisted, I'd probably know the answer, but in a very general way, no details. My cache has been flushed and filled with something else (VB.NET, SQLServer, TurboGears, among others) and so I just have a vague remembrance of whole things I was using earlier. But when I start using them again, things fall in place much faster, because I already know how things work, and even if I don't remember which class did XML serializing, I know there *IS* XML serializing and the documentation does the rest.

As Dave W. points out, you gotta be careful though. When the projects schedule is small, and time is tight, you better use the tools you better know and, only later, refactor or create a new version using the best practice.

David

David Guaraglia on May 10, 2006 8:14 AM

Maybe you feel like this too!

Natasha on July 18, 2006 1:51 PM

Not much of a coder, but found this post from a friend, who is.

secretgeek, your list almost freed me -- but mostly because, not being a real coder (about at first grade level for HTML now LOL), I didn't understand most of it, so knew it was ok not to. THEN you did it -- had to add:

You are beautiful just the way you are.
You are brilliant, interesting, wise and fun to be around.
You rock.

Now, I'm all uptight again! If you think I'm beautiful, brilliant, interesting, wise, fun to be around AND rock -- boy, you missed the boat on me! Since you missed that boat by a whole ocean and contenient, I'm now fearing that I'm missing the boat by not worrying about the rest of your list! LOL

Lynn on August 15, 2007 12:53 PM

I dunno, Lynn, I actually liked that part the best. ^.^;

Maybe it's something we need to be reminded of more often?

Jared Spurbeck on January 13, 2009 9:53 AM

Agree completely. I've been at Microsoft for over 7 years now and didn't go to college (yet), or know code when I started. Everything I've done so far (Systems Engineer, Dev, PM) I've learned as I needed it. You can pull this off, you just can't be too lazy (save that special sort that causes you to go learn something so you can automate the job you're too lazy to do. That kind is worth gold.) :)

Jon on February 6, 2010 9:46 PM

Nice article. The IT field is basically a quagmire. Its better to accept that fact right away or move on to a different field. I guess someday I wish for Utopia where I won't be obsoleted when I get out of bed each and every morning.

The industry needs to stop running around like a chicken with its head cut off trying to find the next big thing. The tools constantly change, but yet they do the same thing, create code to run on machines. First we get a screwdriver and learn how to use it. Then out comes the newdriver, different than the screwdriver, but does the same thing. Then out comes the phewdriver which is totally different than the screw and new driver but performs the same function of both previous tools.

Other industries change for the better. This industry changes because someone or some company says this is the better way to sell a product. The IT industry is perpetually undermining its own productivity.

Jon Raynor on February 6, 2010 9:46 PM

Bravo

Maxx Daymon on February 6, 2010 9:46 PM

Great post. I'm glad I'm not the only one who thinks it's impossible to stay on top of everything. The anxiety drops when you just ignore the news and the Internet in general and just concentrate on the program / problem at hand.

Jason Doucette on February 6, 2010 9:46 PM

The comments to this entry are closed.