views:

385

answers:

14

I've got a warning that this question might be subjective and is likely to be closed, but I'm giving it a shot.

My question is whether you, as a programmer, really use all the newest technologies and methodologies? Be it TDD, agile, new design patterns, newest iterations of technologies (.NET, WPF, Java, etc.).

I read about them all on blogs, posts, articles and got hyped, because it's just plain cool. But in my work, the reality is different - new technologies come in very slowly. I talk with my colleagues and it seems it's the same at places they work.

Are we just "unlucky" or is this inevitable with corporations and legacy code?

[EDIT] Thanks for all the replies. I'm not the one to go crazy about every new technology I come across. But doing GUI in MFC and keeping the sources on CVS seems a "little" dated. I understand that there has to be a business value to switch to other technology, but for me it seems that some technologies should be abandoned ASAP.

+4  A: 

Honestly speaking NO

ckv
+1  A: 

I guess it's that's the usual when you work with lots of legacy code, but as Uncle Bob says (something like "The Boy Scout Rule") it's never done all at once, rather you introduce new changes, add a couple of tests here & there, moving your old, rusty code to better shape bit by bit

Shady M. Najib
+5  A: 

Yes, but it requires significant working examples to justify that a technology is worth adopting across the department or business. It takes alot to change the way that everyone works, especially if you are working in a large business where the development teams are not small. I see the adoption of new technologies occuring much quicker in smaller businesses and teams.

For things such as changes to process, like agile and test driven development, you really need the whole company to buy into it. It's not just a change to development, but a change to requirements gathering, project management, testing and release strategy too

fletcher
+4  A: 

I suppose the question is, do you really want to use the newest technologies? It's easy to get hooked on a new technology, but remember that many blogs (and the like) are there to promote a new technology, or stem from research of a new technology and doesn't necessarily tell anything about what's being used in the day to day work.

Where I work we don't necessarily use the newest technology, not because we are not allowed to, but we have a responsibility to our clients to deliver a product so that will always be our main goal. We follow what's going on and some of the new technologies will slowly be incorporated in our day to day work.

Tchami
+1  A: 

Basically our side, we just need to show the benefit of the technology. Once this has been comprehensively shown, the company will then allow it to be used for a new project. If it is good enough, it will then be brought in as a "standard" for lack of a better word.

The older stuff stays legacy however, unless the day comes for a dreaded rewrite.

Kyle Rozendo
+4  A: 

Perhaps I can illuminate this question from a slightly unusual perspective: I am a physicist working at a university. This job involves a lot of programming, but if anybody wants non-free modern tools, they are out of luck. If the tools are free, we are welcome to install them ourselves, but this will soon be over, since the university has decided to consolidate their IT services. That means that we will soon lose administrator rights on our computers, since we will be considered the same as the humanities departments who only use their computers for Word and SPSS and can't be trusted to install any software without breaking the computer and calling in the IT department. (facetious rant, not meant to be insulting.)

Let me illustrate the general attitude towards adopting the newest technology with a case study. Many physicists program in LabVIEW for automating their measurements. We use LabVIEW 8.2 here. Shortly after their respective release dates, the sysadmins bought copies of LabVIEW 8.5, 8.6, and 2009. These have been sitting in the cupboard, unused, despite our pleas - such as that the code excerpts on the LabVIEW support forums now require 8.5 - because "it's not good practice to have everybody using a different version of LabVIEW, and you can't share code anymore." Can't we all upgrade then? "No, upgrading will cause people's existing programs to break." Why do we have the new versions still in the shrink-wrap? "We'll upgrade someday."

Now on to methodologies. Physicists are, in my opinion, among the most conservative scientists in the entire profession of science. For numerical calculations, everybody still programs in Matlab, a cruft-encrusted piece of crap that has remained essentially unchanged since the Cold War. We still teach our students to use this monstrosity, but get this: we teach them to use it as if it were C. That's right, vector operations, Matlab's only redeeming feature, are replaced by for loops and more for loops. Design patterns? Forget about it.

I expect this is a much worse situation than most software development shops. So, I guess if you're frustrated about outdated technologies, be glad you're not a physicist.

ptomato
Thanks for the great reply :-)I remember myself programming in Matlab... ugh.
Stefan
I love the description of Matlab :-)
Tshepang
+9  A: 

I think, in the .NET world at least, it's not realistic for the majority of companies to keep completely up to date. Microsoft simply release new things faster than most people have time to learn them. Even code I wrote a year ago is now out of date in some respects (Linq-to-Sql for example).

fearofawhackplanet
I would vote this up more than once if I could!
haarrrgh
+1  A: 

I think the ticket here is to do as much as you can in a way that works for you. While that may seem pretty obtuse and general it is important to make the distinction between what you do for your job and what you do to do your job. As an example my day job has me doing .NET websites building DotNetNuke modules and helping the tech department make sense of their administrative tasks. To do my job requires zero Agile, zero TDD, zero new technology.

I do my job by writing Python or Ruby applications to write code generators. I use TDD while coding these generators and when writing my DNN Modules (NUnit). At the end of the day the company is a waterfall dinosaur from 25 years back, great people on the trailing edge. I involve myself in open source and events to keep the tools sharp, program for fun, and contract often so I can use many of the things I learn (the same things you are excited about) and I feel like I get better every day.

So my answer is yes, I do all the things I want to do as far as methodologies and technologies. Though most of my co-workers don't know the difference except to say that my software runs smoother, works better, comes faster, is well documented and requires less adjustment.

Gabriel
+5  A: 

I get annoyed by people jumping on things just because it is the "newest". Just say no to neophilia. Give me "faster", "more robust", "more productive", "more flexible", "easier to use", and "well documented" instead.

Apprentice Queue
Generally the newer tools ARE better though. Why would someone make a new tool that is worse than what you can already get! I'm not saying dive right in but I just dont understand people who don't move forward to the next best thing when its obviously better. My flatmate (whom I work with) still uses VS 2005 at home even though 10 is freely available to him. He says he cant be bothered to download it.... psh
rmx
Why someone makes a new tool that's worse than the existing? Very often companies set out to make a new tool that's better than existing ones. But they fail. Still they will try to sell it, so that the company will get the revenue.
kotlinski
Switching to new technologies should be done after some time, when the market proves them to be ready and they actually provide more or better something. Giving faster/productive/flexible/easier/well-docd is not always the right option. Thinking this way we'd all drive Ferraries/Porsches. They do tend to take you from A-B much faster than majority of cars.
Robert Koritnik
@Robert, LOL, Ferraris and Porsches are faster but more importantly they are definitely sexier and have higher status symbol ... just like the "newest" technology! Unfortunately they are also very expensive to maintain, they use numerous proprietary parts, and you'll never have peace of mind when you drive them on a real road.
Apprentice Queue
+5  A: 

Nobody uses every new thing that's out there, but there's value in keeping up-to-date with at least knowing what other people are thinking about. Think of reading about new stuff as a cheap option: You'll probably never use it, but there's a little chance you'll make a living off it one day.

Carlos
+1  A: 

I'd say it is the exception rather than the rule that dev teams adopt the latest technologies as soon as they come out.

I think a lot of places expect a proof of concept (and rightly so) to prove that investing time in something will have an improvement / efficiency gain / whatever.

At the end of the day businesses need to make money and this doesn't include indulging dev teams curiosities. However it is a dev teams job to help management understand why something new may be better and is worth adopting.

Lee Englestone
+1  A: 

I imagine this varies hugely depending on whether you have a boss who understands programming well. At my workplace we do adopt the newer tools and technologies very quickly.

However: this is not always a good thing. Investing in a technology only for it to fall flat on its face later on can happen. And we had some issues migrating some of our projects to VS2010 from 2008. Also issues with WiX and VS2010 but nothing we couldnt solve. So be wary of picking up new techs too quickly before they are properly supported etc...

rmx
+1  A: 

Newest iterations of established technologies are usually good, e.g. the latest apache 2.2.x, the latest postgresql 8.4.x, the latest subversion 1.6.x, the latest python 2.6.x, the latest php 5.3.x, the latest SQLAlchemy 0.6.x, and most importantly, the latest stable release of your own code base. You do push upgrades to your clients regularly, right?

Of course, MFC and CVS do not qualify as established technologies. They are obsolete.

sayap
+1  A: 

My organization has a "policy" - unwritten - of being atleast 1 version (sometimes major version sometimes minor version) behind the latest release of most softwares that we use.

The rationale being that most software in its first version is hardly ever good enough for production rigour!! :-) A lot of people might not agree with that but coming from a MS + Oracle background, i would say that there is a lot of justification for that rationale.

Having said that, as most people observed before, in the end, if the new technology is not providing tangible benefits, ROI (much maligned term but valid if used properly) - then we will not make that effort to move to that technology.

But if i was still using MFC (which even its most ardent supporter will agree was quite a pain), thats a bit much!! I can but sympathize!!

InSane