The Magpie Developer

That’s an English Magpie. I didn’t think they looked like that in America. Is that right?

That’s why I love Python, you get the best of both worlds : an ever evolving and shinier language built on top of robust and clean foundations.

I wonder what people find shiny and new in ruby, scala, java, C#, etc… they still have braces and begin/end tags ! It may look like a detail, but that’s one of the differences that make Python code so much smaller, and thus more readable. Readability being one of the most important aspects of a good program, Python made an improvement here where others failed miserably or even ignored the problem.

The debate between dynamic and compiled languages should not even exist, the optimization lies in the algorithms, not in the tiny little bits of performance you get from compilation or clever lines rearranging. When you really need to optimize to the limit, just write those ten lines of C/assembler your program spends most of its time in, and if you find yourself writing too much C then it may be time to rethink your algorithm …

Scott Hanselman list effectively seems boring, I stopped reading after Notepad2++alpha4. Really need an advanced text editor ? learn Vim or Emacs. Yes you will have to throw all the good things you learned from Notepad (?!), but in the end you will thank the 20+ years of user interface refinements that drive these programs.

I think that’s what this post shows finally. Good tools that present real improvements like Python stay in the shade because of the programmers laziness, while things that are not really new but faster to learn get all the “attention”.

I think there are too many riff-raff using C#. I’m going to switch to COBOL.NET. Seriously though, I did invest some time in learning Eiffel.NET when I wanted use something obscure to keep a project from being outsourced.

JavaScript Object Notation is shiny and new but I’ve found it is actually quite useful so I’m doing a lot with it.

Visual Studio 2008 has caused me a problem. I now have msiexec.exe bogging down my PC whenever I run Visual Studio 2005 or 2008. I think it is trying to repair something.

I think part of the issue is in how easily is it to integrate the shiny new thing into your work flow and project. Refactoring tools are easy to adopt - they dont do anything but make the source easier to manage (hopefully) and in the end the code still has to compile before it can being testing.

LINQ is a much harder proposition. I just cant see people with years of investment in stored procedures switching to LINQ because they can. And lest we forget the VB6 revolt caused by VB.NET being backward compatible.

One probably just needs to be pragmatic (as we always have) in selecting tools for use in our daily jobs. The trick is in not giving into the hype. Always remember that the demos always work, the devil is in the details of doing something not in the demo. When I evaluate a new tool if I can do some small projecct that I feel should be easy with the tool, into the crapper it goes.

Nicely said. If you follow programming.reddit.com, you get the impression that everyone is using functional languages and C disappeared back in the 1980s.

Your post makes me think of Ecclesiastes (1:8-9):

“All things are wearisome, more than one can say. The eye never has enough of seeing, nor the ear its fill of hearing. What has been will be again, what has been done will be done again; there is nothing new under the sun.”

Whenever I start a project at home I spend some time looking at language features, modules or libraries that could help me. This usually leads me to spend lots of time reading terrible documentation for their APIs. I generally end up concuding that the libraries are terrible and it would be less effort to write it all myself.

I’ve noticed this too with Microsoft APIs. They have done this with GDIPlus (it is now in maintenance mode), with WinForms (in favour of the new, shiny WPF) and countless other APIs.

Just when you’ve caught up with the new technology from Microsoft, they have moved on to something new.

Put another way…

It’s not better just because it’s written in:

  1. Ajax

  2. Ruby

  3. Python

  4. .Net

  5. Fad language of the month designed for students/academics who don’t have to make money but do have the time and leisure to play with cool new stuff while someone else is paying their rent.

It’s better because it DOES something BETTER. Clicking a link is not a significant improvement on clicking a button.

Finally!

I was surprised someone of your experience, having gone through so many technologies (I too got my start with LOGO) wasn’t sufficiently sceptical about Ruby.

I’ve seen the claims so many times, when Ruby came out, I just sighed. A good idea, yes, but it’s been tried before. A matter of time before people started adding to the technology to get it to do what it didn’t do before, and it would joing the never ending sea of frameworks out there.

I read recently, nationwide, the job percentages are 22% C++ programmers, 12% .Net programmers, 8% Java programmers. 58% are divided among the rest (Deplhi, JavaScript, ASP legacy, PHP, Cold Fusion, etc etc etc)

I found it interesting, the highest percentage belonged to the most mature of the technologies… hmmm… food for thought

I posted pretty much the exact same thing about four-and-a-half years ago:

Do Yourself a Favor and Stop Learning
http://gadgetopia.com/post/1081

I’ve never fallen victim to the obsession with new, shiny languages. As a matter of fact, I still do the vast bulk of my web programming in ASP VBScript and PHP. They both work well, they deploy quickly, and they’re easy to find help with because they are well established. I have only recently reached the limit of ASP, but PHP appears to be limitless. Unfortunately, my employer frowns upon the use of open-source languages.

Now, the fact that I’m not a Magpie doesn’t say anything great about me, it’s probably just because I’m such an isolated developer. The only other developer I work with pushes .NET, and I already hate .NET, so no pressure there, although it appears that .NET is my only option to move forward (oh Python, how I wish we could be together!). My point is, it’s only natural to compete with your peers, and in Software you do it by pushing the language edge.

"Don’t feel inadequate if you aren’t lining your nest with the shiniest, newest things possible. Who cares what technology you use, as long as it works, and both you and your users are happy with it? "

Problem is too often it doesn’t work. With so many software projects failing and so many users upset with the results of projects these days and so many critical bugs emerging after deployment, is it any wonder that people are constantly looking for something new? The issue isn’t that we have too many solutions without problems, its that we have too many problems without (good) solutions.

Brilliant, I needed to hear that. Now I can rest from always thinking I need to be actively learning everything new thing that comes along. Good to hear it from someone else.

Thanks Jeff

Nick wrote:
we have too many problems without (good) solutions.

And how has any new programming language or development process addressed this?

Great claims have been made for OOP, extreme programming, SCRUM, Agile, etc.

Software still sucks, by and large. There are small improvements, largely the result of sustained attention to detail by the development team. None has proven to be a magic bullet.

“And how has any new programming language or development process addressed this?”

They’ve certainly addressed those problems, whether or not they succeeded may well be a different story. I wouldn’t consider them all complete failures; as you say there have been improvements (even if they have been small). The fact that we still have problems just means we still have room for improvement (which means there will be more “shiny things” trying to be that improvement in the future).

On a completely different note, what is the point of that “Enter the word” test for comments? It seems to always be the same word, so if it is supposed to be a CAPTCHA test its not a very good one…

If with every new, inspired attempt to a perfect language we come a little step closer to mature software development in general, I say GO shiny new toys.

Please let all elite, senior, and regular software developers contribute to shiny new toys, at the expense even of their effectivity as software developers. By the time the next next thing is there and we jump to yet another shiny new toy, we might have learnt something from the previous shiny new toy and gotten more effective as a whole.

I agree with this post. I have a working set of systems built in Rails that didn’t take a lot of pain to develop. I don’t care about the shiny stuff. I just want to get things done quickly. I like shiny stuff and play with it in my own time. The reason there is so much awful Java out there is because it used to be shiny and was written by people who didn’t understand object orientation or even good programming techniques. Most Java code I’ve come across isn’t o-o, just the same old procedural stuff hidden behind some badly named objects (most of which are static).

That said, we use Rails because it’s quick to develop stuff and we were starting from scratch. I also find writing interfaces really easy because Ruby underlies it all and I can get something written in half a day that would have taken most of a month using the technologies I used to use.

I worked for a Java shop running J2EE for a few months (even have the Sun Java Certs) and it drove me insane. Never have so many XML config files contributes so little for so long. (Struts? Are you insane?)

I suspect that Microsoft tools win because they automate a lot of the garbage you have to deal with as a result of the alleged agnosticism of the Java platform and (pick one) the OSS tools you’ve chosen. Rails wins because it’s opinionated, as in the config is part of the conventions used by the framework - this is a good idea if you agree with the opinions, or don’t have an opinion in the first place. MS is opinionated by default, think about it.

The sad thing is that the guy who wrote Mongrel, who should have ended up with a good job or being a high-paid consultant from his efforts has thrown his toys out of the pram. I suspect that it’s because he comes across as someone who is difficult to work with (Elite developers are a self-selecting pain in the …). So he’s moved on to something else but still using Ruby. Fine. I don’t care.

Also, remember all those “stable” and “old” technologies were all “shiny new toys” at one point. Java, C++, hell even C were once new technologies, and all faced skepticism that they would help (ok, I’ll admit, I am too young to remember C++ and C coming out, and Java had just come out a few years ago when I started playing around with programming). Obviously they had some redeeming qualities as they stuck around for as long as they did.

I think your argument is short sighted. I see this argument a lot, primarily from the older developers that have been through the cycle a number of times. Frankly, getting old means you’ve already learned a lot, and learning becomes tiring after x number of iterations.

Now think back to when you were a scrapping new programmer, learning all the latest stuff. It was exhilerating, and new. And you found all kinds of cool things you didn’t really know before.

Learning is a young mans game, sad to say. Sure, there’s plenty of old geezers (like me) that still enjoy learning new stuff, but each year it becomes more and more of a chore. At some point i’ll toss in my hat and relegate myself to “legacy” technologies.

The thing us geezers forget, though, is that the shiny new thing always brings with it something new and useful. And this technology will likely eventually filter down into the mass market. Without people doing the exploration, it’s hard to tell what ideas are really worthwile. Sure, the pioneers will move on to the next new technology next year, but they will bring with them the ideas they learned with the last new technology, and those ideas will begin to filter down the chain.

Just because you no longer want to be on the cutting edge doesn’t mean the cutting edge is no longer useful. It may not be for you, but it is for the programming profession in general… it just may take some time to filter down.

I mean, where would we be if scientists just stopped trying new things? Thank god there’s always a new crop of fresh faces who aren’t tarnished and jaded by years of experimentation.