I finally got all the project files for the Transparent Framework uploaded to sourceforge.net and have prepared my first formal release of the Transparent Framework.
When downloading the Transparent Framework be sure to take a look at the release notes icon for instructions on how to get started.
So you can go get it now :)
To summarize my last post, what is happening in the software industry as a whole is that software is beginning to write itself. The tools are becoming more and more sophisticated that "programmers" are no longer needed to any level of degree than they once were. Combine that with the massive levels of outsourcing and you can see pretty quickly that your value as a "programmer" is limited at best - someone else can already do it cheaper than you can AND pretty soon machines will be doing it (I give it less than 10 years at the most).
So where do you fit in then - if cheaper is the yardstick of measure as corporations have a LEGAL mandate to make profits for their shareholders (they don't have a LEGAL mandate to do anything else)?
A wise person I once worked with is a QA genius, he once told me that our salaries are overly inflated if we are just providing a "tool" for people to get a job done and now you need to be a "multi-use tool".
By understanding that:
1. The LEGAL mandate for a corporation is to make profits for shareholders - click on The Corporation link on the right side of the page.
2.
The World is Flat - click on the Charlie Rose interview with Thomas Friedman on the right side of the page to view this link.
3. Corporations, based on #2, MUST find the lowest cost.
4.
The lowest cost is MDA, Framework based code OR a platform that does everything disguised as a product (because many corporations cannot even afford to pay people to write quality code anymore - and STILL make profits for Shareholders - when was the last time you heard that we have X deadline and therefore quality is the first thing to go right out the window?)
5.
We are right now in a pre-MDA time (i.e. code is not writing itself yet but Business Analysts can draw pretty UML pictures and get code generated for them)
...you are now in a position to do something about it.
In actuality this is a tremendous opportunity for you, but you have to see it. The cheese has moved. Open Source Frameworks and Open Source Solutions are increasing - not decreasing. We recently saw a whole language, Java, get released to the Open Source community. Ruby and the Scaffolding concept quite literally came out of nowhere, RSS came FROM bloggers and pushed up into businesses.
Personally, I got into Microsoft.Net because it was going to be the LAST language I thought I would need to learn. I wanted to invest heavily up front and spend time reaping the rewards spending quality time with my friends and family. That's why I've specialized in it since 2001. That however, was a naive assumption. I did not understand the big economic picture. You cannot stop the flow of change and you need to know where change is coming from - and it isn't technology.
Technology does not change because one technology is better than another. I made my assumption based on the fact that .Net was inclusive of so much and with generics and delegates it became inclusive of so much more - but that is naive.
Technology changes because corporations can build a widget for 10 cents less then they could a year ago and there is a flurry of activity for everyone to learn that new "thing" that lets them build the widgets cheaper than their competitor. That's how jobs are created - flurrying from one technology to the next - or at least that's how jobs WERE created.
That model does not account for two things:
1. Open Source
- a lot of people freely contributing to the creation of software just for the recognition of their peers (which if done for a corporation, that software creation recognition is non-transferable) and the desire to use QUALITY as a measure and NOT cost per unit - which undoubtedly produces higher quality software (because a corporation generally CANNOT produce high quality software, documentation, support and the like and still MAKE PROFITS FOR ITS SHAREHOLDERS - corners need to be cut). As a side note, if you try to hold quality as a measure then you will probably be fired UNLESS you work for a software company or some company that has a core competency where QUALITY actually lowers the unit cost (or raises the number of units sold somehow).
2. The evolution of our tools
- As I said before, our tools have evolved so far that they are now preparing to make specialization itself obsolete. You can't make decent money as just a programmer (look at the web sites that specialize in "hired gun" coders who are building whole systems for under $100 US - that's a lot of money in some countries), - you need a lot more tricks in you bag (i.e. DB Architect, Software Architect, Business Analyst, QA Analyst, Administrator, Modeler, etc.). Cephas Consulting even goes so far to say that you need new titles (to adopt MDA), like "DB/Software Architect Business Analyst Modeler". SharePoint is a tool so is the TransparentFramework - I am not saying they are anywhere near on the same level, what I am saying is that ANY TOOL if it lowers unit cost MUST be used - by the way, YOU are part of unit cost.
As our tools evolve and more Open Source projects become available AND the standards bodies such as the W3C, OASIS, etc. - figure out how to make everything more inter operable - we get closer every day to MDA and that is the true goal.
So IBM, Microsoft, Oracle, Sun and Novell and just about any other technology corporation out there are just blips on the radar, who in their moves to seek profits for THEIR shareholders in the short term, actually fragment the simplicity of us getting to that MDA space (but this is not uncommon in this country as infrastructure investments need to be paid for and that is why the 3rd world is moving into solar power instead of building power plants - and why we just recently started rolling out fiber networks here in the US when they have been available for some time in other countries).
...and we are subject to learn as fast as we can whatever competing technologies that they these companies create. What happened prior to .Net was that Microsoft was holding on to its core VB developers and trying like mad to maintain backwards compatibility (so THEIR customers shareholders could make a profit by not needing to re-architect their environments that worked fine the way they were currently designed every year). What they rudely awoke to was that the Open Source Linux community adopted Java and the Java community was where the bulk of the people lived who were pursuing Design Patterns in pursuit of MDA, and in doing so the quality of their software shot up to engineering standards AND the Open Source community for FREE started creating software that was in some cases a lot better than a corporation like Microsoft could produce AND STILL MAKE PROFITS FOR ITS SHAREHOLDERS.
Once Microsoft's competitors figured this out they heavily funded Open Source - AS A BUSINESS STRATEGY FOR THEIR SHAREHOLDERS - not because they really cared about producing QUALITY software. It was a business decision. As a side note, in my exposure to Microsoft as a Level 3 Support Engineer, I experienced the best job environment I have ever been in - Microsoft really does an outstanding job at taking care of its people and its contractors - but I fear that the LEGAL mandate of making profits for its shareholders, as times change, will transform that organization from the internally open culture it is to one that is more and more concerned about the bottom line and the metrics based approach - less focused on collaboration and more on competition - even though the ideas in The Cathedral and the Bazaar - the philosophy of the Open Source movement - indicate that real productivity comes from doing what they have been doing (I am just not sure how to make this work IN a corporation). It's a different world and it's going to get stranger and more unrecognizable.
So where do YOU fit into all of this?
Well, right now the place to be is in the Open Source community creating or helping create frameworks or projects that will lower the unit cost of systems built using those frameworks - so you and your work has some longevity outside a single corporation AND you can produce high quality software if that is what you want to do (corporations are not the place for this - you want to stick to realities there, what is needed NOW and make sure that you adopt, not create unless you have the backing to do so, an infrastructure of some kind to handle capabilities - providing extension points for what you can do LATER so you don't get pinned in and don't end up swimming in a sea of badly written code so you can hit your deadlines).
A Framework in a lot of circles is no longer thought of as a "competitive advantage" - it's a necessity that far too many organizations don't pay attention to and this hurts them on the extensibility, debugging, company image and maintenance front once their product releases either internally or externally.
Alternatively, right now the place to be is into using tools - or writing tools like SharePoint, where you have a product but that product HAS a sophisticated framework that allows you to use that product as a PLATFORM so you can lower your unit costs to build an application by LEVERAGING as much as you can out of that Product/Platform that DOES all of the things you need to do AND provides room for capabilities and extension points. Unfortunately some of the licensing models do not support this approach unless you are a large corporation and can afford it.
There are a LOT of completely open non-proprietary technologies out there such as JSON (object oriented JavaScript), XFORMS, XQUERY, XPATH, XSL, XML, etc. - but even using these technologies is not really a hedge against needing to apply a business process to yet another technology and that hedge for you is MDA (unless you like re-inventing the wheel every year).
In MDA you have a CIM (Computer Independent Model), PIM (Platform Independent Model) and a PSM (Platform Specific Model) - and this is THE way to build your applications as the PSM (where the WCF, WF, WPF, InfoPath, XAML etc. lives), is actually generated from the PIM. It does not matter if you want Java, Ruby, C#, PHP, C++, DDL for Sql Server, DDL for Oracle, etc. - So on one hand, you have community frameworks emerging and on the other, you have Products that "can do everything" that are really Platforms in disguise (and the best way to hook into a technology stack like .NET 3.5).
MDA offers a different approach as each model is used to build the subsequent one (CIM->PIM-CSM), and the "frameworks" are just plugged in at the PSM level - the final product being not a platform disguised as a product, but a single product to serve a very specific business need that that can be regenerated as needed from the model. If the business process changes, make the change to the model and regenerate the product. The latter approach is to "just build a platform disguised as a platform" or use a "framework" to account for 90% of your scenarios - it is more inefficient but it is where we are today as MDA has yet to mature - but keep an eye on it.
I think the most important thing here is that you start looking for new cheese (read - Who Moved My Cheese), preparing to deal with the changes ahead and a good start for you is downloading the Transparent Framework to tweak your thinking a bit from a technical perspective on what a general purpose framework should provide. You are going to want to have a number of these "frameworks" in your back pocket and you might even want to get some public recognition by contributing to it :)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment