The Magpie Developer

Jeff. I was an intern at Microsoft not too long ago. They’re churning a lot of new tools and forced employees to use the beta version. It’s very painful. One example was the new version of ADO.NET. The other being PowerShell (or Monad, whatever).

ADO.NET vNext was something. I can’t even differentiate between ADO.NET vNext (or EDM?), LINQ, DLINQ, what else there? who knew?

They can advertise me how powerful PowerShell is but Python can do a lot of things in Linux/Unix/Windows.

Fast forward to the present:

  • I decided to dump .NET
  • I decided to pick up JEE 5 (JSF, EJB3, GlassFish)
  • Say NO to Hibernate, Spring, Struts, whatever the fad
  • I decided to learn Zope/Plone
  • I decided to learn PHP (I know syntaxes, but haven’t written anything)

I have some basic knowledge of Python and I decided to pursue it further.

A little bit of fact-checking:

  • Zope: not pretty, but works well and rock solid since '97
  • Plone: quirky, no Drupal-blingie, but Govt, NGO, Univs love it
  • Python: Silicon Valley’s best kept secret

Microsoft with its .NET always come up with something new every 2-3 years.

  • It was MFC - WinForms - WPF
  • It was Biztalk - WCF + WF
  • It was Web Service, .NET Remoting, whatever-else - WCF
  • It was ASP - ASP.NET 1.0/1.1 - ASP.NET 2.0 - ASP.NET 3.5
  • Windows 2003 - 2008 - 7
  • Active Directory: every new release is a big release
  • SharePoint: same as AD

In between, as you know it, they’ll have CTPs and a big marketing around it to gather early adopters. I’m just too tired.

People can say “just because it’s there, it doesn’t mean you have to use it”. Well dude, if your manager told you so (for street-creds during MS expo), YOU’RE THE ONE TO IMPLEMENT IT.

People can say “just use whatever you need”. How am I suppose to know what I need when those tutorials and books are covering every single corner of the latest technology using BETA PREVIEW (this is a common practice for MS Press books). It’s like finding a needle in a haystack.

At the end of the day, those books are just eliminating more trees and end up being obsolete in a matter of months. What a waste.

nuff said.

What a refreshing (again) post. I am finally starting to hear more of these comments from the programming community. Having been coding since LOGO, learning Apple Assembler just to have to relearn it for 8086 , learning Basic just to switch to QBasic, then QuickBasic, learning UCSD Pascal, jsut to have to fall back to BSD Pascal, learning c just to learn c+ , and c++, learing classic ASP, just to switch to .NET, I’ve about hadmy fill. I’m perfectly happy with php at this point, some AJAX seeing as I was using it well before it was branded as the second coming of Jesus and was called Javascript just like it is, and keeping interfaces clean and uncluttered. Every new fad is NOT the greatest thing since sliced butter, it may add a gem or two but along with that gem there is usually a crapload of junk filler that could be done a lot faster using traditional methods. If you think I’m wrong, just look at Bubble Sort as opposed to all the other “better” algorithms out there. If you needed to write a sort from hand right now in code on a pad of paper guaranteed to work in any memory size, on any system, what method would YOU use.

Unfortunately the customers also like shiny new things as my marketing person told me when I explained the package he wanted me to use couldn’t meet the legal requirements of the job! The customer got something that looked great but under the hood lacked substance.

Another writer covered this topic from a completely different point of view several years ago… of course I cannot remember who that person is; I do remember the thesis; quakers have it right.

Quakers (and adjacent religions) have a process of evaluation for new technology. Many people think that to the quaint Quaker a new technology might be say, basic electricity. Believe it or not, the Quaker ideal of evaluation was does this technology take away from out community - now feel free to read into that but - as far as stringent policies go - they are pretty rough. Quakers allow the use of phones for example - but pay phones.

If only we hackers did the same thing. I personally think of myself as a very conservative hacker and programmer - I do not need much but by the same token - my software does not do much - it is designed for people like me - not the masses. So I can certainly say - yes- I do not fall victim to shiny ad syndrome - but I can see why other people do. The issue is largely systemic but it is beyond softwares.

The irony of this article is that you (Jeff) are actually keying in upon a social problem - not a programming one.

After 20+ years in the business one does get a little jaded about the ‘next great thing’. Here is my take on it:

http://successfulsoftware.net/2007/04/20/programming-in-flares/

I think the biggest problem with ‘magpie’ developers is that they pick up shiny and new without having the clue as to why they’re picking it up. I try to pick up only the shiny and new that are going to net me productivity gain and or bottom line improvements. For example: LINQ’s drag and drop ORM with sql05/08 is handy for a 2tier quick/dirty app. Enterprise library is great to save some bottom line on creating custom cross cutting concern libraries (logging, security, interception/injection aka PIAB). WCF enables you to spend more time focusing on business value rather than plumbing code.

Before you pick up something new, try asking yourself “Why am i trying this out”. If the reason is just “because it’s new”… it’s probably not worth your time.

In regards to getting in contact with someone.

Ever hear about filters?
For years I’ve been saying to folk, please don’t call, I hate my phone.
Email me.
And they Do.
And I have filters set up.
You know, to direct mail into folders ?

Asking people to Pwnce you, or leave a note on your wall, or leave a comment on your LJ. Whatever, Its only going to get turned into email anyway!!
Cut out the bloody middleman!

foam at the mouth

I’ve also lately come to the conclusion that the new and the shiny is…well…new and Shiny, but its also, 9 times out of 10, completely useless for my purposes.
I like sticking with a machine that does the job. Why upgrade until you have to ?

I really like the magpie metaphore :wink: and indeed we steal a lot…

I think there are 2 major trends one good developers should follow:

  1. in my opinion, good developers love change. they need it to keep learning and get better
  2. I don’t care which language to use (known or yet to learn) because the important thing is to deliver an adequate and working product. So the developer should adapt his tools to the job and not the contrary.

The only drawback is when you keep jumping from one shiny framework to the next hype language without really get things done ever.

What I find most interesting is the never ending pattern of “I have an issue with my current framework/platform/etc., and I can make one better from scratch.”

If only the same glory could be had from making an existing mediocre platform into something superb, as can be had from make another mediocre platform, albeit shiny and new, from scratch.

Nature of the beast, I suppose.

The hard part is striking that balance between trying to build a website in assembly with a line editor, and spending all your time playing with shiny things and not getting any ‘real’ work done. Even if your job is to evaluate shiny new things, it’s hard to evaluate their use if you lose track of what they’re used for.

Personally, I invested enough time in learning vi that I’m unlikely to ever give it up.

Shiny new toys should not come as the plain expense of the programmers’ and designers’ efficiency. There are ways to reduce the impact by reducing the learning and implementation curve.

Also its true that not every shiny new thing is a jewel. And you don’t need to migrate if you would get only a small benefit out of the new gadget, if the benefit is smaller than the reduced efficiency. Of course somebody has to test the gadget first. But when you do get new gadgets into production, it should happen under total control at every level.

How typical that most of the responses take the form of:

  1. “You’re wrong. The shiny things are really important and useful new features that boost productivity 1200%.”

  2. “You’re right. Good thing I don’t fit into THAT category! Now let me tell you how great my last Ruby/Scala app turned out…”

  3. “You’re right. That’s why I only use VI/Emacs and Common Lisp.”

Congratulations on missing the point, folks. Remember, you can write FORTRAN in any language.

“Don’t let the pursuit of new, shiny things accidentally become your goal.” Good advice.

I always like to let developers have a couple breaks between projects every year to pursue whatever development related activity they’d like – whether reading a book, trying out a new tool/language, or experimenting with some programming techniques. It allows a person time to have a look at some “shiny, new things” and not feel like the programming world is passing you by, but without it becoming a all-consuming activity.

Aaron G, flip a coin…

Change for the sake of change is usually the fastest way to move backwards.

There are very few innovations over the last couple of decades that have radically changed programming.

I think the discovery of unit testing and object orientation are perhaps the only two real technologies that have changed programming for the masses.

I had an epiphany recently that your computer is just a machine. It’s a complicated tool but it is still a tool. It’s an enabler to get a job done. That’s it.

If the code you write works, is fast enough, maintainable enough and your customer is happy then your job is done.

It does not matter if your program miss-implements that factory pattern one time or a hundred. It does not matter if the object model is badly factored. Even the horrible code most of us would turn our nose up at, is not fundamentally flawed. It does work, if elegant.

I heard a woman on Dotnet Rocks say that people think of software as “disposable.” She said that in five year, most of the code you’ve written will have disappeared.

That’s a horribly depressing thought.

How can we possibly move forward when we spend the vast majority of our time moving from one latest and greatest technology to the next?

If we’re to move this industry forward, we need to start actually using the tools we have now, correctly.

Simon

I get MSDN Mag and many (not all) articles are about shiny new stuff for Microsoft, LINQ, .Net 3.5, WPF, etc. Some of the stuff I’ll never use but at least reading about the shiny new stuff I can see how it could fit into any future programming and upgrade as needed.

Coming from Windows Forms, WPF would be major investment in time for me. For someone new, not a big deal, but I’ve already spent a lot of time learning all the windows controls and how to set the correct properties for them and how to use them. Now you can use something like Expression Blend to make the app without a single line of code. You still need the guts of the application, but things do change, so eventually I’ll have to spend some time relearning how to make a Windows based application using XAML.

My Windows Forms knowledge will probably probably be obsolete in about 2 to 5 years depending on the adoption of WPF. I know how to make a Windows application, but to stay up to date I have to re-learn how to do it with WPF and XAML.

For someone new, WPF and XAML is probably the next best thing besides sliced bread. But, for someone who has learned it the older way, it is frustrating.

So, after some time, I get no return on my investment. This I do not care for.

Here is cardboard box
Here is a new shiny box
Here is a new shiny box with a ribbon

But in the end it is still a box.

We need more box improvements and less new boxes.

So, what you’re saying is, the new shiny toy is no new shiny toys?

It is interesting to relate your post with Chad Fowler’s “Watch the Market” chapter on “My Job Went to India”. Fowler actually recommends us to become alpha geeks, as our current languages and tools may apocaliptically fade into disgrace, whereas the shiny and new ones may be the next big thing (that may yield lots of money for those who took the risk, of course). Fowler compares the investment in a technology with a common financial investment: you may find security in an ordinary savings account, but why not try a higher return investment?

Corollary #1: why not //speculate// with technologies? It’s all about the money you can make.

Corollary #2: forget about clients and the actual problems that these technologies solve, it’s all about the hype (and the money you make with the hype).

This is, of course, a pessimistic view, yet a possibility. Technology speculation - and not just simple curiosity - may be the drive of the Magpie developers.

What’s worse, is when the “new & shiny” is the same old thing, with a new marketing name on it.

Yes, I’d like to see Pete writing a new mobile app with COBOL, that would be pretty fun.
Or showing to the users his new black&green screen done with Natural (to give another example) instead of a web page…

TBH I agree with the article, it’s absurd to rewrite an application with another framework or language because someone says it’s better… But it’s also true that is not a bad idea to use new frameworks, language versions or even new languages to make a new product. Why not?..

Pete won’t be working in the company forever… someday he’ll retire! :slightly_smiling:

I often think of software developers as crows - highly intelligent animals with the capacity to solve difficult problems using tools that are available in the environment.