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 am always given the advice that developers need to stay up to date with the latest in technology - things like webrtc, updates on html5 and css3 and new js libraries, software methodologies like TDD, DDD, and BDD.

The question is why? Why do we need to constantly update ourselves? Can't we just stick with what we know and become better with it?

share|improve this question

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

closed as not constructive by gnat, thorsten müller, Walter, Robert Harvey, Jim G. Aug 16 '12 at 23:55

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.

16  
In software development, there's a push to do both: get to know some technologies in depth and keep up on the ever changing new technologies. This is partially why it's so damn hard to find good developers. –  joshin4colours Aug 16 '12 at 13:28
2  
To address the close votes so far, I think it is a fair question, and I cannot find an exact duplicate on the site. Just please try to keep an eye on poor answers so that we can clean them up. –  maple_shaft Aug 16 '12 at 16:59
4  
I fail to see why programmers as a class must "stay up to date" with the latest in "web technology" for whatever both of those concepts actually mean in practice. A curious mind and continual learning are certainly critical for personal growth in any profession, but the false dilemma assuming "web tech" is the sole axis for personal growth makes this a bit too loaded of a question for my tastes. Looking critically at the high voted answers - do any of them even answer the question other than offering platitudes of encouragement and motivational slogans to "stay in the game"? –  bmike Aug 16 '12 at 17:16
1  
@bmike: I agree with you: of course a curious mind will want to learn new stuff all the time. In this case, new stuff means something you do not know, which might be an interesting programming language that's been around for 40 years or longer (e.g. Lisp). The industry pushes us to update and to consider the latest stuff interesting, more effective by default. My main point: learning a technology you do not need just because it is new is a waste of time. –  Giorgio Aug 16 '12 at 17:45
1  
@RobertHarvey It is not as if the question is asking "How?" or "What?" as that would be NC. It is asking WHY and I personally feel that is relevant and answerable. –  maple_shaft Aug 16 '12 at 17:57

8 Answers 8

up vote 40 down vote accepted

New technologies surface for a reason. Usually that reason is because they are more efficient or powerful at accomplishing a particular task.

There is still value to be had in sticking with old technology for the sake of legacy systems, but when they eventually reach their end of life you'll be behind the game.

Business reasons aside, constantly learning new technologies keeps you on your toes and will open your eyes to different ways of approaching tasks, even in old technologies and so on, so forth.

share|improve this answer
3  
+1: learning new technologies is often helpful, even if you never directly apply that technology: new views and perspectives that it provided can certainly be applied using "old" technology. –  Joachim Sauer Aug 16 '12 at 13:35
7  
On the other hand, jumping at every new technology can also be counter-productive, because many of them disappear as fast as they surface. –  Gordon Bell Aug 16 '12 at 14:21
    
@GordonBell - True... I can't speak for anyone else, but I don't usually test the waters with new technologies until they at least show signs or potential of becoming more 'mainstream' - which brings the benefits of plenty of documentation to help education and a userbase etc. –  Anonymous Aug 16 '12 at 14:24
    
They often arise to meet needs in academia, but not in the real world. You gotta write your thesis about something. –  dbracey Aug 16 '12 at 18:59
    
@dbracey: Right, and twenty years later some big company can find this thesis that meanwhile researchers have developed into some mature technology and start selling it as new technology. –  Giorgio Aug 16 '12 at 19:26

Although it is certainly possible to build a career on a single technology stack if you get lucky1, it is a near certainty that the technology is going to change more than once during the time when you are gainfully employed. You can (and you should) get better at what you already know, but learning new things ahead of time will help you cut down on the learning curve when the next technology shift comes to your corner of the industry.

There is a less apparent side to it, too: learning new things very often help you see the things that you already know from a different perspective, in the same way that learning a new language helps you learn more things about your current language2.

Finally, a pure entertainment value of learning new things should not be underestimated: to me, it beats watching TV hands down.


1For example, by picking COBOL over PL/I at the start of your career in 1965.

2This works for natural and programming languages alike.

share|improve this answer
1  
+1 @dasblinkenlight I love this statement: "...learning new things ahead of time will help you cut down on the learning curve when the next technology shift comes to your corner of the industry." This is why I am learning Opa now –  Anthony Aug 16 '12 at 15:07

Can't we just stick with what we know and become better with it?

You can, but it's really easy to fall into the trap of never wanting to learn anything new. Your job prospects dwindle, your teammates stop wanting to work with you because you're "that programmer who's completely out of touch".

Mostly, you need to keep a balance. Trying to learn everything new all the time is going to lead you to be poor at many things, perceived as a flighty tinkerer. Learn a few things well, and focus at least on knowing what exists, even if you can't use it effectively.

share|improve this answer
2  
Nothing infuriates me more at work, than having to be stuck on a team with a programmer who writes code like he did 10 years ago. The frameworks have evolved. The tools have evolved. Don't you want to make your job easier? You don't see carpenters using hand crank drills and handsaws all day when they have power tools now. They evolved. And like every profession new tools are invented to solve needs. Not using the new tool, and trying to hack something together the old way is usually detrimental to the quality of what is being built. Be it in code or in wood. –  CaffGeek Aug 16 '12 at 13:37
2  
"The frameworks have evolved. The tools have evolved. Don't you want to make your job easier?": There are infinite ways of solving certain problems and sometimes a new tool or language is not better but just equivalent to the old one. But you have much more experience with the old one so you can be more productive with it. We assume too often that NEW == BETTER. Instead, we should always challenge this statement. –  Giorgio Aug 16 '12 at 16:43
2  
@Giorgio - It's one thing to have healthy skepticism of 'the next big thing'. It's another to put your head into the sand as real progress passes you by. The later is way too common. –  Telastyn Aug 16 '12 at 16:59
4  
@Telastyn: I would assign 50 % to both attitudes: sometimes I have the impression that a new technology is pushed just because it is new. And it is only an alternative (not a better) way of doing things. So we have to spend months becoming proficient with the new technology and after that we are again as productive as we used to be with the old one. But of course, you are right that putting your head into the sand is also wrong and one should always watch out for new things. –  Giorgio Aug 16 '12 at 17:01
    
@Giorgio, how do you know if the new way is better or not if you don't learn about or try it? –  CaffGeek Aug 16 '12 at 18:07

Well it's probably due to the fact that you're a web developer and the technologies in that field are very volatile with languages, platforms, tools, and methodologies rising and falling in popularity. It's a field that is very VERY high level. If any of the layers beneath it are altered, that changes the position on top. And, frankly, it's new (ish). New fields have a lot of room for innovation.

Personally, I work on embedded devices, learned C, and that's worked pretty well for me.

But I'm still learning new things on a fairly regular basis. Sockets, SQL libraries, ncurses, objects in C. And methodologies are loosely coupled with technologies. Unit testing was taught horribly at my school, and I'm just now wrapping my head around it. I just heard about dependency injection the other day, and realized that's exactly how I solved my last problem with unit testing a console function.

Most programmers aren't factory workers that do the same thing every day. Those jobs can (and should) be automated away. Nobody pays for yet another bubble-sort implementation. It's been done.

share|improve this answer
    
+1: Good answer. One should learn the technologies that one needs or finds useful. New technologies are important and one should look around to know what is going on. But NEW should not be the only criterion to choose what we learn. Also, if C suits your programming need, I agree that it can be a good language to work with, even if it has been around for a long time. –  Giorgio Aug 16 '12 at 17:13
    
This also points out that new technologies are often more layers on top of existing older technologies. What's your VM implemented in? C or C++. –  dbracey Aug 16 '12 at 19:04
    
Dependency injection is just a new name for a very old idea. –  MarkJ Aug 16 '12 at 19:55

I'd say you can ignore a lot of what's out there. Much of it is hype and fad and new names for old technology. The real advances will soon be replaced by even newer ones that don't really depend on the old ones, even though the old timers say you ought to understand the old ones to understand the new. If you left the field for 10 years, when you came back you'd only be 2 years behind.

That said, spotting the real new technogy can be tricky. I'm glad I didn't miss OOP, but it sure looked like just a handful of buzz words at first. And you often need to use current technology to do a job, even if everyone will have forgotten it in 3 years.

The software technology hype and confusion multiplies the change we have to deal with day-to-day. But electronic technology actually is advancing rapidly, and pushing software along with it. There's a lot of real change out there. We're still driving the cars, flying the planes, and going into space with the same vehicles we used in 1965. But the electronic hardware from 1995 is hopelessly obsolete.

So the deep answer to your question is that the scientists and engineers working with electricity have been very busy. The software needs to evolve to take advantage of the hardware. Worse (or rather--better?), I think the software's been left way behind by the hardware. If the hardware people all retired tomorrow, software would evolve furiously for the next two decades at least.

If you need the new technology to do a job, you need to learn it. If there's a chance it's a new technology that will still be here 20 years from now, you need to keep an eye on it--and if you watch 20 techs that die for every one that lives, you're doing pretty good. And you actually can ignore everything else. Except for that one bit of obvious smoke that will underlie all the software of the 2020's.

share|improve this answer
    
+1: I agree with you regarding hype. A lot innovation is (unfortunately) hype and we should choose the new technologies we spend time on very carefully. One of the hypes of the moment is lambdas (which, BTW, I consider a very useful concept): every modern language must have them (C#, C++, Java?) otherwise it is not cool any more! But lambdas have been around for 50 years and no one cared when these languages were initially designed. Now they are being added as an afterthought just to follow the latest hype. ;-) –  Giorgio Aug 16 '12 at 16:49
    
@Giorgio: I hope not Java. Lambdas are a good example (though simpler and so less troublesome than some). I use them in C#, and I love them, but the only person who'll ever regret not knowing what they are is the person who's just been told to fix code that's full of them. –  RalphChapin Aug 16 '12 at 17:46
    
What do you mean by "I hope not Java"? That they will not be introduced? I like and use lambdas (in Scheme, Haskell): they are a pretty easy concept. But in C#, C++ and Java they seem to me a late addition that somehow does not fit with the rest of the language. I doubt that the inventors did not know any Lisp but they decided that lambdas did not belong in these languages. Now they have become a must. So, I like lambdas a lot, but in C#, C++ and Java they seem just a hype that is used to sell new compilers, books, and so on. –  Giorgio Aug 16 '12 at 18:02
1  
@Giorgio: Java is (or was) rather a minimalist language. You don't need to know a lot (lambdas, for instance) to understand what someone else has written. I like that. C# is a maximalist language. Every new line can introduce tech you've never seen before. It's a blast to write, less so to read. Neither needs lambda's, though they do help more in C# than they would in Java for syntax reasons. But they're cool and they save a couple lines of code. In other words, you're right. But that's C#, not Java. Yet. –  RalphChapin Aug 16 '12 at 18:35
1  
@iconoclast: With 20 years of experience as a programmer I do not consider myself a beginner. Yet, the fact that Java is (was) a relatively simple and clean language makes me more productive (I can develop more complex software with less effort). I think it is a misconception that a simple language is for beginners: a simple language will allow any programmer with any degree of experience to focus more on certain aspects of development (e.g. managing a complex architecture, refactoring) because they spend less time dealing with other aspects (e.g. memory management, cryptic syntax, etc). –  Giorgio Aug 24 '12 at 12:20

IMHO, you need to find a balance. That takes skill and experience.

You need to find one or two languages you specialize in, keep up to date in framework/style changes that evolve in this language, and keep your skills top-notch.

But you also have to see how this language evolves, and understand the dynamics of software development as a whole. Will Java be around in 10 years, is Phyton there to stay, is PHP going to be replaced with .NET and Mono?

These are large scale, strategic questions, answers to which will let you become highly valued professional in your field, while having some solid backup (1 or 2 languages) and knowing when to move on from your main platform.

IMHO, following all the modern languages that are being developed every day is one of the biggest problems for the whole industry. We have ton of undeveloped, dead-end languages with almost no professionals in them, and people who waste time on them are rarely real professionals in even 1 language. Mostly they write code that's mix of all languages and does nothing right. At the same time, amount of man-years that's wasted on these nonstandard languages could be spent on improving few core language frameworks and specs.

share|improve this answer

As others have pointed out, many new technologies emerge to address new needs and therefore they make it easier to solve certain problems. Therefore you should keep up to date and at least know what is going in your field and understand which new technologies are relevant for you.

On the other hand, I think that sometimes there is also a hype factor in certain innovations: Some ideas are extremely old but only in recent years they are being pushed to become mainstream. Sometimes I have the impression that a new programming language (or a new version thereof) is pushed just because "new is better" and a new technology means new books, new programming tools, new compilers, new programming courses, or in other words, revenue.

So it can happen that you have to learn a new technology without seeing any real advantage wrt the technology you had been using before, otherwise you risk to be out of the market because your skills look old fashioned. It is up to you to follow the development of new technologies and try to understand which ones can make you more productive, and which ones are just convenient to make your CV look better.

Bottom line: I think you should try to learn what you really find useful, regardless of whether it is new or old.

share|improve this answer

Because "sticking with what you know" represents a failure to "get better at it." You don't have to adopt every new practice and framework that comes along but you should at least have an informed opinion on the popular ones. In web development just asking the question would look horrible to an interviewer. Web dev is littered with the career-corpses of people who wanted to stop learning new stuff after 2000 and that's as it should be because they make more work for the rest of us. Stay away from dev if it doesn't interest you. It's a lousy $/hour ratio if the part where you learn new stuff feels like work.

share|improve this answer
    
Because "sticking with what you know" represents a failure to "get better at it.": One way to read this is that by sticking with the same technology for a longer time you get a deeper knowledge of it, whereas jumping from one technology to the next every two or three years will only allow you to have superficial knowledge, i.e. you will never be really familiar with any of them. –  Giorgio Aug 16 '12 at 18:42
    
I would not understand JavaScript as well as I do if I hadn't branched out a bit and understood it from a perspective of how other languages actually work or kept an eye out on current notions of best practice and explored what people are actually doing under the hood of their frameworks and libraries. I don't think it's really possible to improve as a developer at a career-reasonable rate without regular exposure to new ideas. –  Erik Reppen Aug 16 '12 at 20:01
    
Reppen: I totally agree with you on this. –  Giorgio Aug 16 '12 at 20:08

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