Neal Ford keynote @ codemash

I’m not going to write a whole lot about this, but Neal Ford’s main takeaway point was that the future of programming is dynamically typed languages running on virtual machines – things like JRuby running on the JVM or IronPython on .NET.  I’m putting those examples in his mouth, so to speak – he didn’t use those specific examples, but that’s what I took away.  Dynamic languages are big for Neal, working at Thoughtworks, a big Ruby shop.  I’ve mostly been in the ‘dynamic language’ world anyway, so it doesn’t seem like that big of a shift to me.  Moving from PHP in to Groovy is sort of a no brainer, in a way, because the dynamic goodness is still there, but you get some of the ecosystem benefits of the Java world.

One other quote (he was quoting someone else) is that in 10 years (was it 10 years?), compiling a program will just be seen as a weak form of unit testing.  Interesting thought, though perhaps it’s a bit too far?  I dunno.

Any thoughts from any of you on the future of the programming?

I'm currently working on a book for web freelancers, covering everything you need to know to get started or just get better. Want to stay updated? Sign up for my mailing list to get updates when the book is ready to be released!

Web Developer Freelancing Handbook

Share and Enjoy:
  • DZone
  • Facebook
  • Reddit
  • StumbleUpon
  • Digg
  • Simpy
  • Technorati

{ 3 comments to read ... please submit one more! }

  1. > compiling a program will just be seen as a weak form of unit testing.

    At my current job, we’re already there, in a sense. We’re using python and as part of our build process we’re thinking about compiling all the code and putting only the resulting .pyc files into the build. Also we’re looking at adding a pre-commit hook to our SVN server to prevent people from committing any code that doesn’t compile.

    I guess that’s not really “unit testing” though. What do you suppose Neal really meant with this comment?

  2. I thought of you and your recent issue when I was writing that post. :)

    I think he really meant that the compilation step is just one form of testing, and that it will be considered a subset of ‘all’ testing, of which ‘unit’ testing is king.

  3. I rather doubt that dynamic languages will simply sweep the world, just like that. If it was going to happen, it would have done so already with smalltalk 15 years ago. I’m a strong proponent of Ruby and my opinion is that dynamic languages rule for small, focussed, highly disciplined teams of developers. Once you get into code bases of reasonable complexity (> 500 classes), sound development approaches like good design, TDD, continuous integration and so on become critical to the success of projects, far more so than they would be in Java and C#. Most simple CRUD Rails apps these days have less than 25 classes – the areas they deal with simply aren’t very complex, though by the amount of publicity they garner you’d never know it.

    You must remember, an extremely powerful and flexible language like Ruby is simply begging a sloppy developer to compensate for poor design by putting in hacks – and when you can change code at runtime, this can lead to code base which is very very unpredictable, hard to test and hard to modify.

    The advent of JRuby does indeed herald the entry of dynamic languages into the stodgy enterprise world, but not for the 80% of simple process automation tools organisations build. They will however hugely benefit the 20% of applications which are mission critical and which are directly responsible for the generation of revenue, because in these cases it makes financial sense to invest in a top-notch, highly productive group of developers to develop and maintain such applications.

{ 0 Pingbacks/Trackbacks }

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">