CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Raymond Lewallen

Framework Design, Agile Coach, President Oklahoma City Developers Group, Microsoft MVP C#, TDD, Continuous Integration, Patterns and Practices, Domain Driven Design, Speaker, VB.Net, C# and Sql Server

Why do some programmers hate the thought of using a managed framework?

I have this discussion with various .Net non-believers, and maybe its just me, but I can’t imagine why they just don’t understand what I’m telling them.  The arguments against moving to a managed framework mostly come from the hardcore C and C++ developers I talk to.

Writing software is about delivering business value.  Period.  The person who signs your paycheck doesn’t care near as much about what language or framework you are using as much as they care about the fact that you are hitting deliverable deadlines within budget on a constant basis.  Being a good software developer lies in part in being a value to the business.

The main argument I hear is “I like to be in total control over everthing that’s going on”.  "I don’t trust the managed framework".  "I don’t like how it works".  In reality, they don’t understand it.  They don’t want to understand it.  They think the managed framework can’t do a better job than they can when it comes to memory management and resource management.  This is total BS in my opinion.

The managed framework does a damned fine job of handling memory and resources, and the only way you can out-do it, is to spend 3 times the amount of hours and money to accomplish the same task that a managed framework developer is going to do.  Even then, you’ll just *barely*, if at all, outperform the managed framework in the majority of these special cases.  Even so, in rare cases where you do need to do some resource management or some memory management on your own, the managed framework allows for this to a certain degree, which in most cases is all the control you need.

So if you are continuously costing your company 3 times as much (probably more, as C++ developers demand more money) to produce the same value as a managed framework developer, with negligable or no noticable performance difference, how does that reflect back to the customer?  Badly is the answer.

After explaining that your customer doesn’t care how you do it, your customer cares about value, I had one guy give me this argument: “Well, I want to do my own consulting and write my own software someday, so I want to know how all of that stuff works and do it myself.”  OMG.  Now he’s given me an even better example for him to move to a managed framework.  Now this person wants to manage their own business, which is going to suck up a lot of time that could be spent writing software.  Moving over to a managed framework has become even more imperative to him at this point so that he can focus on the logic and design of the application without spending the tedious time on finding memory leaks and manually managing resources.

Am I saying that all C++ programmers should switch completely to a managed framework?  Certainly not!  We must have these machine level programmers.  They have been and will continue to be a vital and necessary skill set in the world of software development.  Should you be writing your customers inventory management system in C++?  Probably not.  You are too easily replaced with a managed code programmer, who can deliver the product faster, with less cost, and most likely with less bugs.

Take a look at your development and business environment.  You can tell whether you should be using a managed framework or not.  It the vast majority of cases, a managed framework is your solution to saving time and money for your customer, which is the goal of any good developer.



Comments

Raymond Lewallen said:

"It's not the correct angle."  Its is abosolutely the correct angle.  You said it yourself, a developer writes products or solutions.  Those products or solutions deliver value to the customer.  They're not paying you to write something they'll never use just because they have no other place to spend their money.  I also never said that using a managed framework is the solution to all software development.  It is however, a solution that helps provide better business value when wanting to get more out of your developers for less cost, and it applies to the majority of developed applications.

"And you are perfectly wrong semantically speaking, if you talk about .NET versus C++. C++ is only a  language. .NET is a set of classes."  Everybody else understands what I was talking about, but thanks for picking at it for the sake of trying to make an argument.  I am also not comparing languages, I am comparing the ideals and opinions of a .Net developer versus a few C++ developers I have had conversations with when it comes to the best way to approach software development for maximum benefit to the bottom line - money.

"I could go on for a long time telling why this discussion is useless..."  Perhaps you should continue, as if you are attempting to make the argument against what I am saying, you haven't made an argument for your side.  I would love to hear more dicussion on why using a managed framework doesn't supply better business value when developing business applications.
# May 26, 2006 11:13 AM

Eric Wise said:

Amen.

When you need cross platform or have to squeeze every last drop of performance out of an app then the closer you get to the machine code the better off you are.

It basically goes to the comp-sci concept of low level versus high level languages.  High level languages are excellent at addressing a series of problem domains, to ignore that and code in a low level language anyway is a huge waste of time and money.
# May 26, 2006 11:22 AM

johnwood said:

Spot on. This is exactly why I became a consultant. I felt guilty but desperately needed to satisfy my need to produce a framework to solve business problems. It doesn't make sense for my employer to pay me to develop a framework. But it does make sense for me, as a consultant, to sell solutions using my framework. There are too many developers in companies who think they're bill gates and that they should be building a miniature software empire in their department. And this really doesn't align with what is required of them. The bottom line is that a lot of the apps they produce as vastly complex in-house frameworks, written using reams of C# and unit tests... this stuff could have been done in Access or a third party managed framework, delivering the exact same user experience (if not better) in a fraction of the time and for a fraction of the cost. But the programmer just wouldn't have enjoyed creating it. Boohoo for them. Become a consultant or go work for a software house coz you're in the wrong job in that case.

John
# May 26, 2006 12:47 PM

Cos said:

Ditto.

Mike's employer should read this to get an idea of how much money he is wasting. On of the problems we face as programmers is that we are often looked at as "mystics". Those that hire us understand that the need us, but don't really understand what we DO. As a result, some developers (actually at both ends of the spectrum) get away with what they aught not, just because empolyeers don't know the difference and they get told "This is 'Better'".
Developers (Like Mike) who continually spend time (and time IS money) RE-WRITING the same functionality that is in that "collection of classes" he referred to, just so that they can [unnecessarily] micromanage resources are wasting time that could be applied to actually solving NEW problems.
# May 26, 2006 12:57 PM

Mike said:


Cos,

If I am writing a solution, I want to ship it as fast as possible. I don't care the language, framework, etc. Whatever gets me done.

If a product is getting developed however, none of that applies anymore. If you are going to write a product that is supposed to process billions of table records in a short time, then your string class had better scale. If you are a consumer of a string class from a framework and can't control the behavior at run-time, then you've painted yourself into a corner.

As for re-writing everything everytime, I don't think I have implied that.

# May 26, 2006 5:02 PM

Simon Says said:

Totally agreed with Mike. Some framework classes are efficient to handle certain tasks, but it doesn't mean we should be totally rely on managed framework.
# May 29, 2006 1:46 AM

Cos said:

Mike,
What you are implying is that you can "ship" something faster in C/C++ than say VB/C# or even Java. I think what those of us in support of managed code/frameworks are saying is that we can ship (fully scalable, enterprise quality) applications faster BECAUSE of the managed framework that we use. That this allows us to NOT have to re-write all of the resource management "layer" each time we start a project. More importantly, because these managed frameworks are "common" (.NET & JVM) and certainly should not be thought of as “third party” products (Microsoft is not a third party to its operating system, nor Sun for Java etc.) programming talent is relatively "transportable", "replaceable" and even "scalable" and that too has business value.
# May 29, 2006 12:11 PM

Cos said:

You were right in your original post that C++ is a language where as .NET (and the JVM) are simple a collection of classes, (which, btw, have LANGUAGES, like VB/C# & Java that are optimized to take advantage of these frameworks) and in being right you make the case FOR a managed framework. These frameworks create a common reference point from which to build. More over, I believe it was rather implied in your original post that you would rather build that functionality than use someone elses. Going back to Ray's original point, this is a waste of time and precious programming resources. (if you want to access SQL Data, the File system, the network, etc you either must use a provider (framework classes...) or build a provider (ala the very C/C++ programmers the Raymond was talking about in the first place...). Within a given enterprise you are simply building that which has already been built by others, even if what you build becomes your own "mini/customized framework" that is "optimized" for your given mission, unless you are coding "fly by wire" or "surgical instruments" the advantage that you gain is negligible, compared to the additional time spent in development and maintenance.

And Simon…Nobody is saying you should “totally” rely on a managed framework, doing so would be more like working MS Access (and that is NOT ‘programming’). A managed framework is a foundation upon which we build, not an end point.
# May 29, 2006 12:11 PM

TobinTitus said:

I have to agree with Raymond here.  He made the caviat in his statement that lower-level languages are still a neccessity, and those that badger him without actually paying attention to what he wrote are just proving his point. All too often, people skip reading the important details and skip right to their opinion.  This is evident in the replies as well as in the industry.  Our eternally-damned-for-C++ collegues refuse to even try to find the benefit in anything differing from their idea of a solution.  They often summarize their viewpoint as "the right language for the right job" but often this 'translates' into "I'll use C++ until someone won't let me -- and even then, I'll pretend to use their language until I can convince them that C++ is the right tool."  Personally, I'm a managed-code-theist.  I will flat out tell you that my solutions WILL be managed code unless you can convince me that the solution requires otherwise.  Unless you are running on a device, there are not an unusually high-number of projects that require "tight", and highly-specialized-performant code.  It is rather naive and ignorant to make a blanket statement that .NET code is "slow" and unfit for scalable solutions -- I highly recommend you actually read "CLR via C#" by Jeffrey Richter if you feel otherwise. However, if you fall into the category where highly-specialized-performance is neccessary, you fall into the minority of projects.  I talked to someone before who spoke rather elloquently about his needs for floating point values and why .NET didn't fit his needs. I had to applaud him because he looked at .NET from a practical approach rather than looking for an excuse not to use it.  In those instances, sure, take .NET out of your solution, but don't leave it out by default based on uneducated decisions about the framework itself.  
# May 30, 2006 8:56 PM

Krishnan said:

Software Development for me is not just getting the final output. For  me it's not doing something the obvious way like everybody else. And also it's not about just working for paychecks...

If I am given a requirement, I like to achieve it in a manner which will at the very least make me devise a solution over which I have the control or have an idea how it's going to work. After all man is driven by his eternal quest for knowledge. For me using managed code inhibits my options to "play" with the code. If I am going write the same kind of code over and over again, I sure would get bored the very second time.

Of course, I am talking in the context of software projects that have code running into billions of lines... For smaller projects, may be managed code is an economical option, but not for the kind of projects I am taking about. In the projects I have been working on, stability, efficiency, and speed are major factors, which I don't think .NET offers. For me .NET is a technology which is primarily aimed for applications traditionally developed in VB, ASP, HTML, etc.

Plus, when you are talking about technology coming from MS, you know how big a risk you are taking!!!
# May 31, 2006 12:42 AM

AnIdealBoy said:

Hey Raymond!!
Krishnan proved your point :)

"managed code inhibits my options to "play" with the code"

"when you are talking about technology coming from MS, you know how big a risk you are taking"

"stability, efficiency, and speed are major factors, which I don't think .NET offers"

"me it's not doing something the obvious way like everybody else"

"software projects that have code running into billions of lines"

I love software engineers playing with billions of lines of stable, efficient non-microsoft code and quenching their thurst for knowledge.
# May 31, 2006 2:52 AM

stephen said:

Yeah, I agree.  Engineers evading the fact that we are talking about business applications are lots of fun.  Great, feed your head!  
# May 31, 2006 4:58 PM

Jimmy Ipock said:

Let me speak to this from the customers point of view..
Soon you will all be just another commodity like toilet paper that project managers (like me) purchase in bulk and dispose of as soon as we're done with you. Programmers are important people (although I suspect most programmers think they're far far more important than they really are). Programmers (even pretty good ones) are all over the place. As a project manager I don't care really how you do the app, but I do care about how easy it is for someone cheap to take over and manage after you're done. The way I see it Microsoft has a master plan which is in the works and the framework is just the latest phase.
Step 1. Come of with some kind of GUI and create a layer of obsecurity from the underlaying technology.
Step 2. Create a programming environment where MS provides all of the           internal software and you have to interface it.
Step 3. Create another layer on top of that......

I spent 25 years programming everyting from assembly code to cobol ad I can tell you..you're not programming computers any more, you're progamming MS windows. I'm not saying there is something wrong with that but for me it took the fun of programming out of it. I liked interfacing the CPU directly and managing the registers..

Jimmy Ipock, MCSE, PMP

# June 6, 2006 2:48 PM

Raymond Lewallen said:

Jimmy,

"Soon you will all be just another commodity like toilet paper that project managers (like me) purchase in bulk and dispose of as soon as we're done with you. Programmers are important people (although I suspect most programmers think they're far far more important than they really are). Programmers (even pretty good ones) are all over the place."

This has been the case for many, many years.  Programmers should expect to be easily disposable, therefore we must maximize our efforts to provide as much business value as possible to the customer.  This is better achieved via a managed framework for business applications.

"As a project manager I don't care really how you do the app, but I do care about how easy it is for someone cheap to take over and manage after you're done."

Exactly.  That's why using a managed framework is more advantageous to the customer.  There is less code to have to understand, and more focus can be applied to the domain knowledge instead of the technical constructs.

"you're not programming computers any more, you're progamming MS windows."

Again, you're proving my point.  Business customers don't want us to program computers, they want us to build their applications.  This is better achieved with better benefit using a managed framework.

"I liked interfacing the CPU directly and managing the registers.. "

Nobody says you have to stop.  You just aren't a viable commodity to a business customer who wants a business application built when pitted against the cost efficiency of a managed framework developer.  Low-level languages and applications built with low-level languages are still an absolute necessity.

"for me it took the fun of programming out of it"

If programming in low-level languages is more fun for you, then by all means, continue to do it.  Again, there is certainly a demand and necessity for low-level language developers, but that demand does not come from the majority of the business world where business applications are being developed, which is also where the majority of software development takes place.
# June 6, 2006 3:15 PM

Jimmy Ipock said:

I can't believe you programmers actually charge for your services...
Programming is an art form and artist should starve to prove their love of the art!
Actually Ray, I just heard there was some kind of dispute going on so I thought I would try and throw some gasoline on the fire.
BTW, the site's really nice. I just stumbled onto it, you should make it more well known to the local programmers. I don't really have any major problems with the framework, it's pretty cool. I do miss the days though that every byte counted and you could write a pretty damn nice app in 16K of ram and I think I hold a bit of a grudge against microsoft for making it go away. One day we will drag and drop applications into existence and we won't need programmers, then what are your plans? The framework is just a small step towards your own obsolescence and your the cheerleader of your own demise!!!!! Muhaaaha Muhahaha..
Seeya Man...
# June 6, 2006 3:33 PM

Raymond Lewallen said:

"The framework is just a small step towards your own obsolescence and your the cheerleader of your own demise!!!!! "

One word:  management.  or retirement.  either way.
# June 6, 2006 3:39 PM

Jimmy Ipock said:

ok, I'm done trying to throw gas on the fire. In reality, I think I have to agree with Ray for the most part. If you look at programming simply as a function of business then you can't really look down too much on the managed framework (unless you're in the business of OS, Kernel, or embedded development). The primary purpose of programmers in the world is to develop applications that support business. Sure, a lot of programmers like to feel like they're a diety of some kind but I don't think the business people view them that way unless they're just dumbasses. Programming is a profession, it's not a miracle. I would really like to see some statistics concerning how many linux/unix developers jumped ship so they could program on the framework. I doubt many developers left MS so they could not work within the framework. ANyways.. Good job on the site Ray...
# June 6, 2006 3:51 PM

Tim Frakes said:

Okay, i have to get into this thing now, since I am part of the inspiration for this article.

I agree that the framework has a place in the development of business applications but it is not the best thing since sliced bread!

Microsofts track record with continuity in their development software leaves a lot to be desired. What version of Visual Studio are we on now? VS2005, how many difernet dev environments have the business customers had to buy at $500-$1000. Where is the business value in that.

Where is the business value in writting a program that will have to be re-written in a few years when Microsoft creates a brand new WYSIWYG language? There are thousands of web pages written in classic asp but MS decided to create the framework. Now companies have to spend their money rewriting their asp apps and even their 1.0/1.1 Framework apps for the new 2.0 framework, where will it end. They also have buy state-of-the-art hardware to run the new framework. I will argue over performance issues later.
# June 6, 2006 5:06 PM

Raymond Lewallen said:

Tim,

Your argument lends support to a theory that upgrading with technology negatively impacts business value, and that we should all still be using punch-cards because then the businesses wouldn't have had to pay to upgrade their technology, thus saving money.
# June 6, 2006 5:21 PM

Raymond Lewallen said:

Jimmy,

Its hard to argue against what I've placed on the table here, but I appreciate you playing devil's advocate for awhile. :)
# June 6, 2006 5:22 PM

Cos said:

Tim,
First, you do not HAVE to re-write code just because a newer IDE or Framework has come out. My company still has several VB6 and even a few VB5 applications in production, if they aren't broke, don't fix them. If they need "enhancements" we evaluate whether or not it will be more or less cost effective to bring them forward to the current framework or not. (minor fixes, no, major rewrites yes... others fall somewhere in the middle).

Second, You do not HAVE to buy the new IDE just because the new framework has been released. Developers are free to work in Visual Notepad 1.0 and the freely available csc or vbc. Now I know what you are probably thinking, and you are probably smart enough to know you just answered your own question... the VALUE in using the new IDE's is that they make a developer increadably more productive than Notepad, and thus the business value. (I will also assert that there is "more value" in the MSDN subscription which includes the IDE ++!!)

OK, sliced bread is pretty good, especially if its fresh out of the oven, but I think the managed frameworks do pretty well, especially since my oven won't process 10,000 insurance claims in an hour...

At Microsoft.com, many (I can't quantify it, sorry, but "A LOT") of pages are still classic ASP, because THEY STILL WORK.
# June 6, 2006 5:27 PM

Raymond Lewallen said:

I don't know guys.  I've had sliced bread.  And I've used managed framework.  Mmmmmmm... managed fraaaammmeeewwwoooorrrkkkk.

Cos is absolutely correct.  Nobody is forcing upgrades upon us when there is little or no business value.  Assessment is all part of the process.  Just because you can doesn't mean you should.  But then again, using a managed framework is one of those leaps that most business who create business applications will be taking over the course of the next 5-8 years or so.  Look at how many java and .Net based applications already exist.  Its only going to increase.  Change is inevitable.  Resistance is futile!  Woohoo my lame line of the day!
# June 6, 2006 5:47 PM

Binarykid said:

I agree with rlewallen some and i agree with others too I believe that every tool that a programmer has is useful at some point and that no tool is useless just as there is no such thing as useless knowledge. The key is just knowing when to use a particular tool and when its time to choose another. For example on the most basic level the .NET framework or a framework (others)  is good when you have alot or a set  of redundant tasks that the framework provides functions and classes that can either solve or help solve in a way that is acceptable in both performance and maintenance. There will be times when you will as a programmer be called upon to write a more specialized solution or a number of more specialized solutions that the framework doesnt provide whether it be a portability issue (cross platform development) or native thats when you will have to write some of your own" WELL COMMENTED!" code in conjunction with or apart from the framework to get the desired result or results. One of the rules of thumb for programming is dont reinvent the wheel unless its absolutely necessary because as programmers time is our most precious resource and you dont want to use more of it than is absolutely necessary on any one task. I think rlewallen and everybody is right in their own way except comments suggesting throwing away any one tool with the presumption that its useless. Frameworks can help programmers write manageable code faster that is a fact ,and if speciality is required and cant be avoided you can mix framework code with special functions that you the programmer can create to fit your particular needs in the end they are all just tools. Part of being a programmer arguably one of the most important parts is knowing when to use a particular tool and when not too whether the tool is a framework, language , part of a language or a combination of all of the above. One thing that programmers have to be careful of is becoming like a tree with our roots planted too firmly in the ground in short being inflexible and close minded, programmers should instead aspire to be like the great Bruce Lee when he philosophically said "be like water my friend" adaptive to whatever container (situation) you put it in for programmers that means learning new things and being open to new ideas and concepts even if we personally dont agree with them that is the key to not becoming obsolete in a ever evolving and changing career field and even world.

# September 19, 2006 6:36 PM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Raymond Lewallen

Working primarily in the public sector during his career, Raymond has designed and built several high profile enterprise level applications for all levels of the government. Raymond now works as a solutions architect for EMC. Raymond is an agile coach, Microsoft MVP C# and also president of the Oklahoma City Developers Group and Oklahoma Agile Developers Group. Raymond spends a lot of his time learning and teaching such things as Test Driven Development, Domain Driven Design, Design Patterns and Extreme Programming practices and principles, to name a few. Raymond is also an advocate of Alt.Net. Raymond is primarily a framework guy, so don't ask him anything about UI :) Check out Devlicio.us!