The love affair between the .NET community and business stakeholders is in an interesting phase. The business stakeholders have become far more mature in their understanding in software development while most Microsoft .NET developers have no plan to support cross-platform development. This could be a fatal blow as the domain experts now expect it due to initiatives like SOA and their is no real sense of need from the techies… Should be interesting. Here I go into more debt on the subject and why I believe it could be so damaging.
Software Engineers (especially the .NET community due to their near ubiquitous refusal to support non-Microsoft aspects of their world) are entering what I have observed to be a disastrous collision which the ‘non-technical’ domain and business stakeholders. The cat is out of the bag that limitations such as this are almost always arbitrary, destructive, and based on human refusal to change. This is completely out of sync with trends now established in this decade and will not be allowed to play the common role of the past in a dramatic lowering of overall return on investment.
It’s asking a lot but don’t think this is not already in every shop as anything more then the pain of the shift. The technology has worked for years and any market driven economy will certainly not accept 100-1000% waste lying down. When these trains collide be prepared by already mastering the items here or I believe you are putting your future at unnecessary risk. SOA and Domain-Driven Development: One more nail in the coffin of business/technology separation the first part of this decade we saw the unique focus on eliminating barriers between platforms and the views of the business experts and the technologists who must implement their vision. Both of these areas are quite disruptive and one could say key to solving the utter inability of software engineering to satisfy their stakeholder with high probability.I love that light is being shined into areas that many hide in under the excuse of ‘incompatible systems’ or ‘unreasonable expectations for both expertise in the technology AND business’. Any opportunities for professionals to be ignorant of their domain (and even not to be experts in a domain) are not diminishing and it is safe to say will soon be almost gone completely.
Reality Check
Software engineering is empowered (perhaps for the first time at this level of real value-added abstraction) to ignore what previously occupied most of our days. This is no suprise as
we are defined by layers of abstraction.To be specific it is not acceptable to deliver solutions which are constrained by com
mon factors such as database vendor, operating system, protocols, browser version, and all of the other technical reasons that often emerge and often deeply diminish the return on investment in software. After all what reason is there to resist your ability to maximize the benefits to people who use and benefit from your work? It’s your conscious decision to ignore areas where this posts make the case will potentially be fatal.
.NET professionals are just now being forced to do the common sense items that our Java compatriots understood years ago. I like both platforms and I do far more work in .NET, however let there be no doubt on the fact that compared to the Java world as a group we pale miserable on average. This is factual to the point of the reality of evolution and I am amazed at the (what always emerges) utter ignorance of the big picture by those who argue otherwise.
ALT.NET as a group is nothing more then group who collectively understands they know what is going on in our world, on what it means to be passionate and strive for amazing achievement in their work. No such group exists that I am aware of for any other platform NOR DOES IT NEED TO. Unfortunately .NET is bifurcated between the lost and the often amazing with a middle class that is growing.Although the initial shorter term rapid development benefits in .NET were great for the inexperienced managers who had no clue that pain would emerge soon, it’s now mature enough to prove the Java guys were right all along. The issue is the migrations have occured and nobody wants to eat their words.Luckily there is no need to as .NET is an amazing platform (as is the J2EE) however that pales in comparison to the handicap inherited by the available resources. No comparison,even if the platform has areas that are better any benefit is lost in the general limitation in the people. I hate this as much as anyone and spend much of my life tring to help fix this. What I have realized is all I am doing is helping to seperate the classes further.
Probably the most innovative company in software anywhere
Who else has dominated so completely in both .NET and Java at the
same time? They embody what this article is all about.
Clearly now I can see with my new glasses
In spite of decades of study, by necessity and the stated SOA and Domain wok the blinders are off and bluffs are being called everywhere I look. A real understanding of ’sustainable’ architecture’ is finally a consideration and the fact that more people will increase your failure expectation. In additi
on expectations do not allow for the inability to adapt not only in key business inflections but also most conceivable technology inflections. Don’t box yourself into an inability to deliver at the ‘business leve’ full stop. In other words, if technical limitations such as an inability to support mono on Linux will be no more acceptable then flexibility in continual requirements modifications. Consider focusing NOW your ability to deliver BUSINESS value that has limited risk of interruption due to technical issues and/or incompatibilities. I am finalizing this section of the book so expect a super set to be there, however if lucky some ideas will be developed here (and I can credit people who offer guidance in their domain).Specifically this is about strategic/transformation projects with a foundation in software product line development (including SaaS and SOA as well as innovative reinvention of what software is and how it is sold, marketed, developed, and optimized), and other forms of software where the downsides are measured in lost jobs, dreams destroyed, and even human death.
Software fails far more then it succeeds by any metric
However my point is not so much around this as ‘failure’ is arbitrary and definitions such as making budget, time, quality and scope are now laughably simple and irrelevant when software is often expected to REALLY be a meta-meta abstraction of itself, able to transform into whatever someone wants it to be. Why does this now exist in the face of continued failure and utter lack of predictability in most software development?I will raise a few here (and go deeper later) and frankly it is about time non-technical stakeholders said ‘enough is enough’ even if their alternative are incredibly limited. After all, outsourcing is a failure except for now well understood areas. That being said, software teams on average are often too busy wallowing in the ‘operational overhead’ world of ‘no respect’ deliveries then being invigorated to fix themselves (which is all about human deficiencies not real limitations more then not).If there was ever a time to wake up and transform your entire world it is now. If there was a central theme then here it is this: Life will be getting much harder for even the best groups, and again statistics would show you are likely not one of them. Therefore, your challenges if action is not taken now could be fatal for the first time as alternatives are emerging that actually work to allow a CEO to fire his entire development shop. Outsourcing? Nah they all go away as the barriers between the business experts and the tangled technical experts is well into disappearing and will be almost certainly gone soon (a good thing for those of us who see the opportunity this presents).
Recent Factors that Changed Expectations : Don’t talk to me about non-business constraints
No one can argue the effective and ubiquitous expectations using Domain focused development to minimize the barriers derived from software due to ‘pure technical constraints’. In other words nobody wants to hear that something is deeply broken due to reasons related to bits and bytes. That will not fly for much longer and frankly it almost always is due to inept and unmotivated teams refusing to make hard but common sense changes.I hear C-Level execs performing push-back and feeling emboldened to refuse to be ‘baffled by bull**it from a collection of quickly articulated acronyms).After all, enough is enough. No individual can be blamed to have reached the end of their tolerance for the nightmare most software teams inflict on all in their business stakeholders. Even amazing technical teams often fail due to an arrogant refusal to allow the business strategy to drive the solutions they develop. With the obvious exception of companies ‘in the business of software innovation.
People forget that their technical brilliance means little if it is not aligned to the ‘measure of goodness’ defined by their stakeholders in the business.
For example, Service Oriented Architecture eliminates waste in software due to eliminating the massive historic energy in system integration, high level strategic software asset reuse, full realization of return on investment in software as well as a common sense way to ‘make it work and don’t make excuses about technology I do not understand’.Another force is the acceptance and imperative around ‘domain driven’ teams, A main reason this is now a mandate?Why suffer by allowing technologists to refuse to master their domain? This is not viable for many reasons (although of course certain deep specializations will always exist).
Consider that the key areas which have transformed software are already set in stone, yet as is common only the minority leverages there utterly fundamental empowerments. Said another doing Object to Relational Mapping, leveraging the ‘Enterprise Architecture as a Commodity’ and many key areas further creates a small upper class, an almost non-existent ‘upper class’ and a ‘mass market’ lower class which wallows in the muck of the past, continuing to fail their stakeholders as regularly as ever.
It is the pioners and amazing minds in the open source movement (especially the Castle Project, NHibernate, etc.) which have TAUGHT US what is possible, and there is no going back or denying that is real, installable and fully able to handle most of the most demanding requirements in an ‘inflective’ manner (this includes but goes well beyond the elimination of code in favor of run-time configuration at the most fundamental levels).
Continuing to ignore the shift required of all of us (yes you REALLY must forget ADO.NET for the most part, and that is a good thing) will get you fired in most top technology shops as it damn well should. After all this is not even close to ‘bleeding edge’ let alone ‘cutting edge’ anymore. If you fail to adapt you are stealing from your emploter, full stop (and it is your job to educate them more then not and no, you cannot say it’s not your job). If they want to be mediocre and cause your career to flounder LEAVE AND FIND A NEW JOB.
But it’s not like I have an opinion (grin)…..
With Respect,
Damon Wilder Carr






One Comment
I think you’re making a lot of interesting points. I hope that your assessment of platform independence will push mono out of the limelight. C# is a beautiful language, its a shame that there isn’t a push in the enterprise to bring it off of win32/64.