Harrumph!



  • The never-ending saga to find one qualified and competent candidate continues...

    The other day we bring in this older gentleman and sit him down for an interview. On first appearances, his resume seems impressive. He's been doing web-related stuff since the early days. Things were going well until we mentioned .NET 3.0.

    We mentioned that we were moving all of our older .NET apps to the latest .NET platform. Most were created in .NET 1.1 with a couple coded in .NET 2.0.

    Out of the blue, the guy says, "No use changing what works! There is absolutely no reason to go from 1.1 to 3.0. As I always say, if it ain't broke..."

    We then ask him if he realizes the benefits of moving to 3.0...and that there are benefits.

    Apparently this really upset him because he lets out a loud "Harrumph!" and shuffles the papers in front of him in a huff. "Well!" he exclaims, almost as if to say he's done with that conversation.

    We just look at him for a few moments. I stand up and extend my hand. "Thank you for your time. We'll be in touch."

    The search continues...



  • I'm going to say Harrumph! more often now.

    Preferrably whenever someone has this new idea.
     



  • @CPound said:

    We mentioned that we were moving all of our older .NET apps to the latest .NET platform. Most were created in .NET 1.1 with a couple coded in .NET 2.0.

    Out of the blue, the guy says, "No use changing what works! There is absolutely no reason to go from 1.1 to 3.0. As I always say, if it ain't broke..."

    We then ask him if he realizes the benefits of moving to 3.0...and that there are benefits.

    I'm not much into .net coding, so would you care to explain the benefits of that move for existing projects? 



  • @ammoQ said:

    @CPound said:

    We mentioned that we were moving all of our older .NET apps to the latest .NET platform. Most were created in .NET 1.1 with a couple coded in .NET 2.0.

    Out of the blue, the guy says, "No use changing what works! There is absolutely no reason to go from 1.1 to 3.0. As I always say, if it ain't broke..."

    We then ask him if he realizes the benefits of moving to 3.0...and that there are benefits.

    I'm not much into .net coding, so would you care to explain the benefits of that move for existing projects? 

    Well, depending on the domain / application, at least moving from 1.1 to 2.0 would allow you to retire any wonky collections / collection operations with generics.  If you're building web sites, the move to master pages and theme support is enough to get you away from whatever homegrown solution might be in place. If you're moving to AJAX and want AJAX ASP.NET as a supporting framework then I think you need 2.0

    Heck, System.Transactions is enough to get any sane person to want to run from 1.1 to 2.0.

    3.0 gives you LINQ, which would be useful if you're doing any intensive search work with collections.

    Depending on how much you spend on maintenance, it can definately be worth an upgrade. Even if the system "works", the cost in development for new features, issue management, and QA could argue for refactoring the system. And, if you're going to go through that trouble, then you might as well look to any new framework features to see if you can drastically shrink your code base as well. On the websites where I work, I would estimate that we could easily shave 20% of our code base with a move to 3.0.



  • .NET 3.0 gives you a bunch of high-level libraries:

    • Windows Communications Foundation (WCF/previously 'Indigo') - Support for service oriented systems
    • Windows Presentation Foundation (WPF/previously 'Avalon') - new display technology (and with WPF/E -- E for everywhere -- it gets extended to the web)
    • Windows Workspace Foundation - For defining multi-step processes
    • CardSpace - For controlling digitial identity.

    I've done some work in WPF and it's pretty slick, and the demos I've seen of WPF/E are pretty incredible.   One of my devs investigated WCF and came back with a very favorable impression, I'm looking forward to playing with it.  Cardspace seems kind of wanky to me, but we'll see -- I haven't really looked at it yet.  Workflow seems pretty useful if you've got a mix of software & real-people processes that need to sync up. 

    -cw



  • @webzter said:

    3.0 gives you LINQ, which would be useful if you're doing any intensive search work with collections.

    Hmm, isn't LINQ actually scheduled for 3.5 shipping with Orcas?

    -cw



  • @CodeWhisperer said:

    @webzter said:

    3.0 gives you LINQ, which would be useful if you're doing any intensive search work with collections.

    Hmm, isn't LINQ actually scheduled for 3.5 shipping with Orcas?

    -cw

    I'm sure you're right.



  • Hmmm... unless the project is still work in progress and requires a lot of maintenance, I fail to see the business case for that transition. Or how would you explain to the customer what he actually pays for?



  • @CPound said:

    Out of the blue, the guy says, "No use changing what works! There is absolutely no reason to go from 1.1 to 3.0. As I always say, if it ain't broke..."

    We then ask him if he realizes the benefits of moving to 3.0...and that there are benefits.



    What would you have done had the candidate said, ".NET 3.0 is pretty fresh and I haven't yet reviewed it. In general though I would look to update/refactor software when...." or had more elegantly phrased his response?

    I ask because I'm a few months into my first "real job" and was chatting with my boss over lunch. He told me that a lot of what drove my hiring as well as most of our technical people is not what they know but how they cope when they don't. We're hired not on specific knowledge but our ability to figure things out and solve problems. Does this matter more or less as one advances in a career?



  • I think the important point here is that the company would be looking for someone willing to try New Things; If he answered with the benefits, he would already have investigated the New Thing; if he answered as you suggest, he hasn't yet.



  • @Rotary Jihad said:

    What would you have done had the candidate said, ".NET 3.0 is pretty fresh and I haven't yet reviewed it. In general though I would look to update/refactor software when...." or had more elegantly phrased his response?

    If he would have phrased it like that, then sure, we would have continued the interview process. But the fact that he basically folded his arms with his "Well!" comment led us to believe that he was set in his ways. We don't have time to coerce a new employee to learn new concepts. You're either on board with the team and its goals or you're not.

     



  • @webzter said:

    3.0 gives you LINQ, which would be useful if you're doing any intensive search work with collections.

    • C# 3.0 gives you real, type-safe lambda expressions (anonymous functions with closure). Not as nice as Haskell's, but...
    • C# 3.0 finally bring (local, but that's already something) type-inference to a "mainstream" language
    • C# 3.0 brings Extension Methods, which has potential
    • C# 3.0 brings Anonymous Types, which can serve as replacements for tuples/records in a wordier way
    • C# 3.0 brings Expression Trees, which -- as far as I understood it -- is basically a hook right into the .net interpreter.

    Most people seem to focus on LINQ, but I don't quite see it as the most innovative part of C# 3.0.



  • @masklinn said:

    @webzter said:

    3.0 gives you LINQ, which would be useful if you're doing any intensive search work with collections.

    • C# 3.0 gives you real, type-safe lambda expressions (anonymous functions with closure). Not as nice as Haskell's, but...
    • C# 3.0 finally bring (local, but that's already something) type-inference to a "mainstream" language
    • C# 3.0 brings Extension Methods, which has potential
    • C# 3.0 brings Anonymous Types, which can serve as replacements for tuples/records in a wordier way
    • C# 3.0 brings Expression Trees, which -- as far as I understood it -- is basically a hook right into the .net interpreter.

    Most people seem to focus on LINQ, but I don't quite see it as the most innovative part of C# 3.0.

    But the discussion was about new features of the .net framework, some of those are C# specific, like anon types, right?



  • @ammoQ said:

    Hmmm... unless the project is still work in progress and requires a lot of maintenance, I fail to see the business case for that transition. Or how would you explain to the customer what he actually pays for?

    Well, no one was discussing if the new features alone were worth upgrading an existing project. However, you were asking what the new features of the framework were, not, in CPound's exact case, if it justified the upgrade.

    Having never actually had the luxury of working on a project that was "done", I guess I don't know what it's like to never have to worry about the fastest / cheapest / best way to implement new features for my customers. You can bet your clamshells that I'd be at least evaluating WWF if I was asked to implement a new workflow-heavy feature.



  • @webzter said:

    @ammoQ said:

    Hmmm... unless the project is still work in progress and requires a lot of maintenance, I fail to see the business case for that transition. Or how would you explain to the customer what he actually pays for?

    Well, no one was discussing if the new features alone were worth upgrading an existing project. However, you were asking what the new features of the framework were, not, in CPound's exact case, if it justified the upgrade.

     

    To be accurate, my original question was:  "I'm not much into .net coding, so would you care to explain the benefits of that move for existing projects? "
    New features of the framework are fine if one has to write new code. That said, I would not refactor a well-running program just because new features are available. There must be a ROI that justifies the effort and the risk.

     

    Having never actually had the luxury of working on a project that was "done", I guess I don't know what it's like to never have to worry about the fastest / cheapest / best way to implement new features for my customers. You can bet your clamshells that I'd be at least evaluating WWF if I was asked to implement a new workflow-heavy feature.

    For me, it's always a tradeoff. E.g. there is a Java Swing application, about 6000 lines of code, that I've originally written 3 years ago and which is used by many customers. It uses the features of Java 1.42. Since it uses a lot of collections, the generics of Java 1.5 would make the code more beautiful in many places. But doing that change would take some work and those customers still using Java 1.42 would be forced to upgrade, for no obvious improvement. If I used generics just for new parts, the result would be even worse - a jumble of two different stypes, which probably makes maintenance more difficult. And the customers still would have to upgrade...
    For that reason, this application will technically stay on the Level of Java 1.42. Of course it is tested and works well in newer versions of Java; in fact, some Swing bugs vanished in Java 1.5; we highly recommend that our customers install the latest version of Java. I do not like it at all when a program forces its users to have an old version of something else installed. "This application requires Office 2000 and IE6" - definitely a no-go.
     



  • @webzter said:

    But the discussion was about new features of the .net framework, some of those are C# specific, like anon types, right?

    And C#3.0 doesn't ship until the Orcas release of Visual Studio along with .NET 3.5.   .NET 3.0 is available now.

    -cw


Log in to reply