tags:

views:

280

answers:

12

Certain days (like today) make me wonder for how long can I really keep up with having to constantly learn new stuff to be able to survive in this industry. And by survive I do not simply mean “make a living”.

For example as a .NET programmer I have .. WCF / Silverlight / ASP.NET MVC / Ruby / Python / Sharepoint (yuck) / New ORM / New Unit Testing Techniques... etc etc... You get the point.

In real life, I would get a chance to work on a few of these.. but for the rest how do I keep up?

How do you keep yourself motivated ? Is it actually possible to do so without having technology on your mind 24/7 ?

+6  A: 

Having to learn something new everyday is the motivation for me. It's exactly why I love my job.

innaM
And what do the less fortunate people (like me) with jobs that are not so exciting do ?
Preets
You may contribute on an open-source project you like developed in a language you do not use at work.
Andrea Ambu
@Preets: I know it could be hard these days, but you can make it your long term goal to find a job that you'll enjoy doing.
Marko Dumic
@Marko Dumic: That would definitely be swell !
Preets
+6  A: 

Learn more abstract stuff rather than becoming an API monkey. Read books like code complete, agile patterns,practices&principles, refactoring to patterns, GOF design patterns, Unit testing, working with legacy code etc... rather than your latest API reference book. The principles you learn will make picking up an API a lot easier, I used to think the same but now this is much easier.

A: 

I have the same problem, I guess we all have it. For me, I try to follow most of the technologies that I think I may need or find interesting, so just to know when it's the right time to use it.

Bashar Kokash
A: 

Learning new things is a big part of why I love what I do. I'm most engaged when I'm figuring out how to work with some new technology and put it to use on a real project.

If I wasn't doing that I'd soon lose motivation. Working with the same tools everyday, putting in place the same old solutions to the same old problems would kill me. :)

Andy Hume
+3  A: 

I've heard it said that Sir Isaac Newton was the last person on earth who was able to know all there was to know about science. (Now we have specialists. ;-)

There's an argument that it's better to be the true expert in your environment on one area, rather than trying to keep up with everything about the computing field. The crucial part is knowing which area is important enough to have experts, and knowing just enough about everything else to know the relationships (and boundaries) of your knowledge to other areas.

joel.neely
+2  A: 

I was surprised to learn (or simply to hear as I'm not equipped to judge the accuracy of the statement) that medicine is a lot like this: doctors have to spend a lot of time learning new procedures as what they know is basically obsolete within 5-10 years, which surprised me.

In IT of course it's more like 2-3 years. Of course some things are universal, which is why a decent education in the theory is so important but the hype in 5 years will be about something that probably hasn't been invented yet.

I personally find it's more important to keep abreast of the trends in the industry rather than using and becoming competent (let alone expert) in all of them (or even a significant subset). Like Ruby on Rails, Hibernate, JPA and pretty much any other ORM are about the same philosophical desire to diminish or remove the object-relational mismatch. You don't need to learn all of those technologies to know that. Just 1-2 will do.

I find it incredibly useful to skim relevant sites, particularly aggregator sites like www.dzone.com but also sites like InfoQ. 95% of the articles I don't read more than the blurb and those that read I'll often skim large parts. The sum of all these articles gives you a good idea of what's going on in the industry over time without reading them being a full-time job.

Your job will dictate a lot of what you use and most jobs won't change that much over time, certainly not at the pace the industry changes. Java Web applications have well and truly moved on from Struts (1) but you'll find there's plenty of people out there maintaing Struts code for their jobs.

To a certain extent, keeping the same job for many years is an exercise in forced obsolescence.

It's one reason (I believe) that staff turnover in IT is in the order of 18-24 months.

Don't think that you have to know everything. Just be aware that something exists and with enough experience you'll be able to pick up anything if you need to... as long as you know it exists and (at a high level anyway) it's purpose, strengths, limitations, etc.

I can't stress this point enough:

This is not an industry where you work 9-5 and that's it.

This industry will often involve longer hours and learning on your own time. Not because they have to (even though they kinda do) but because they want to.

I go into this subject in a bit more detail in Help me sell Linq training to my boss. Frankly, the whole attitude that you only have to learn things on the job and it's your boss's responsibility to teach you something (or give you the time to learn it) irks me no end.

cletus
I wish I could upvote it 10 times and publish it on a major e-newspaper
Jader Dias
+1  A: 

To some extent I do see what you mean. However, I think it becomes a lot easier if you sit back and realize that there has been very little new in computing for the last 20 or so years. Once you understand the fundamentals of CS then a lot of these frameworks and "dynamic language of the week" and so forth are just really all doing a lot of the same things and have the same problems. One could way to keep up with the fads is to listen to some podcasts that discuss those things in your daily commute and all of that. You pick up a lot in the background noise. Some I would suggest are:

Java Possee, Software Engineering Radio, .NET Rocks, StackOverflow Podcast, and there are several others. :)

BobbyShaftoe
+4  A: 

I'd say there is no corralation between number or API's one knows and how good a coder one is. In almost every case I've seen, a employeer will perfer having a top notch engineer over a API monkey.

What project are you possibly working on where you would need to keep all those API's 'in-paged' at one time? If such a project exists where you have to be involved with all these peices I'd run...

In a nut shell focus on more of the engineering side, learning API's (unless totally relevent) is a waste of time; time that could be spent making your self a more solid coder.

Matt Davison
+1  A: 

You don't need to and can't learn everything. I take two paths with respect to learning. First, I try to learn new technologies that I know will help me solve my problems better or faster. An example of this is ASP.NET MVC. MVC is a pattern that I believe will make more code more testable and thus less bug-prone. This learning is part of my job. I enjoy it, but I do it because the job requires that I keep improving my skill set and become more productive.

Second, I try to learn emerging technologies that just interest me. Sometimes this pans out for work. For example, a couple of years ago I started using RubyOnRails for some personal projects. I knew some about MVC from school but I hadn't ever put it to use in an real application. Putting together some simple -- and not so simple -- web apps in Rails was enough to convince me that MVC was the way to go and so when ASP.NET MVC Beta came out I knew that it would be a better platform for me. Note that I never considered that I had to start using RoR at work for it to be useful to me.

Working at a University is helpful with respect to the latter type of learning. I regularly attend graduate seminars and learn about new research. It's not a big investment -- an hour a week at most. Sometimes, though, I find things that interest me and I end up taking or auditing a class. I've learn more about anonymity and privacy issues and techniques to guard privacy in databases recently, for example. I've also dabbled in text mining.

The point of the latter is that it isn't job-related, but interest related and I enjoy learning about it. I don't feel compelled, but I am learning new skills and sometimes, like with RoR, it does come in handy later.

tvanfosson
+1  A: 

The only time I cringe about learning some "NEW and IMPROVED" technology is when it really isn't new or improved and it's been adopted simply because the wrong people were put in charge. However, every time there is some new idea or an improvement on an old idea that makes me stop and think "Wow... that's really clever" I remember why I became a developer in the first place.

Spencer Ruport
A: 

Just learn "how to learn" !

I have learned and worked on several technologies and my experience says that there is an abstraction among the technologies.

So, the day you learn the abstract technologies, you would have almost negligible learning time to start working on the new technology.

coder
+1  A: 

Unfortunately, a lot of us have to work on projects that simply have to work.

If I'm continually learning new stuff, I'm by definition not very good at it (ie inexperienced, having just learned it). My employer doesn't hire junior devs who know little, they hire experienced devs who know what they're doing.

Thus a little evolution of technology is acceptable and good, the wholesale dumping of new stuff (some of it crap) is detrimental to software development in general.

My advice is to ignore as much of it as you can, work with what you need to know, that helps you do your job. You will have to keep an ear to the ground to keep up to date with what's out there, so you can tell whether its time to pick up a technology to try it for a particular job, but otherwise, don't worry over them all. You can be a perfectly good engineer writing win32/MFC apps than if you're continually jumping from MFC to Winforms to WPF to QT.

gbjbaanb
ah yes, but what about the greed to know it all :-o ;-)
Preets