<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	
	<channel>
		<title>The Enterprise Architect</title>
		<link>http://www.theenterprisearchitect.eu</link>
                
		<description>building an agile enterprise</description>
		<language>en</language>
		<managingEditor>jdenhaan@gmail.com (Johan den Haan)</managingEditor>
                <copyright>Copyright 2013</copyright>
		<generator>Pivot Pivot - 1.40.4: 'Dreadwind'</generator>
		<pubDate>Wed, 27 Feb 2013 20:50:30 +0100</pubDate>
		<ttl>60</ttl>
		
		
		
		
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheEnterpriseArchitect" /><feedburner:info uri="theenterprisearchitect" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TheEnterpriseArchitect</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
			<title>Designing the next programming language? Understand how people learn!</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/AkxpQwpfNSw/designing-the-next-programming-language-understand-how-people-learn</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2013/02/14/designing-the-next-programming-language-understand-how-people-learn#comm</comments>
                        <description>Somehow it is a recurring theme in computer science: create a &amp;ldquo;programming&amp;rdquo; system that is easier to use and learn than the existing programming approaches. I am not just talking about better tools, like &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;IDEs&lt;/a&gt;, but also new languages. It seems as if each self-respecting programmer creates his/her own language or tool-set nowadays, right?
&lt;p&gt;
Okay, I have to admit that not all efforts are focused on making things easier, often the focus is on productivity. However, if we, for example, look at the &amp;quot;programming&amp;quot; languages created in the&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/08/05/a-metaphor-for-model-driven-engineering"&gt;Model-Driven Development&lt;/a&gt;&amp;nbsp;there, we see quite some focus on involving domain experts in development by creating higher level, domain-specific, or sometimes even visual languages. Although there are much more &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development"&gt;reasons to do Model-Driven Development&lt;/a&gt;, it is the ease of use and the lower entry barrier that captures the imagination.
&lt;/p&gt;
&lt;p&gt;
There is a fundamental flaw in our thinking around these approaches, though...&lt;/p&gt;&lt;h3&gt;Language fundamentals&lt;/h3&gt;
&lt;p&gt;
Let&amp;rsquo;s look at the fundamentals of a language before we dive into the details. A language specification consists of three main elements:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;Concrete syntax&lt;/em&gt;:&amp;nbsp;the concrete syntax defines the physical appearance of language. For a textual language this means that it defines how to form sentences. For a graphical language this means that it defines the graphical appearance of the language concepts and how they may be combined into a model. Multiple concrete syntaxes can be defined for the same language. You could, for example, define both a textual and a graphical concrete syntax.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Abstract syntax&lt;/em&gt;:&amp;nbsp;the abstract syntax defines the concepts of a language and their relationship to each other.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Semantics&lt;/em&gt;:&amp;nbsp;the semantics describe the meaning of a sentence or model specified in some language. In the context of programming this means that the semantics of a language describe what the effect is of executing the statements of that language.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
All these elements play an important role in how easy it is to learn a language.
&lt;/p&gt;
&lt;h3&gt;How do we learn a new programming language?&lt;/h3&gt;
&lt;p&gt;
In general we learn in a number of different ways. Up to 10 different learning styles have been defined, but I think they can boil down to 3 main styles:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;Listen&lt;/em&gt;: let someone educate you.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;See&lt;/em&gt;: read stuff, watch someone else do it.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Experience&lt;/em&gt;: just start and try it yourself, experiment, trial and error.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Most people combine multiple styles when they learn something new. 
&lt;/p&gt;
&lt;p&gt;
Let&amp;rsquo;s go one step further: when do people understand how something works (we are not talking about factual knowledge here)? If they hear, see, or experience &lt;em&gt;cause and effect&lt;/em&gt;. That&amp;rsquo;s when we connect the dots. If you hit a play button and the music starts to play you understand the function of that button, and if you hit different kinds of buttons on different systems that all lead to &amp;ldquo;the music starts playing&amp;rdquo; you will probably understand that the triangle icon means &amp;ldquo;play&amp;rdquo;.
&lt;/p&gt;
&lt;p&gt;
When we learn how a system works or more specifically when we learn a new programming language, we can have different learning styles, but in the end it is about relating cause and effect. Whether you hear someone explain it, see someone do it, or experience it yourself.
&lt;/p&gt;
&lt;p&gt;
The difference between simple and complicated, and thus easy or difficult to learn, is due to the &amp;ldquo;distance&amp;rdquo; between cause and effect. If there are many steps between cause and effect it can be difficult to connect the two. If a &amp;ldquo;system&amp;rdquo; is a black-box with multiple inputs and outputs, with a complex relation among inputs and outputs it is difficult to determine cause and effect and hence it is difficult to understand the system.
&lt;/p&gt;
&lt;p&gt;
If we want to create a new programming language that has &amp;ldquo;easy to learn and use&amp;rdquo; as a core design principle, we should aim our efforts on an easy-to-understand cause-effect relationship between language concepts and the actual semantics of the language.
&lt;/p&gt;
&lt;p&gt;
Let&amp;rsquo;s see how approaching a language from this angle influences concrete syntax, abstract syntax, and semantics.
&lt;/p&gt;
&lt;h3&gt;On concrete syntax: how does it convey meaning?&lt;/h3&gt;
&lt;p&gt;
Most discussions (and/or flame wars) around languages are focused on concrete syntax (sometimes combined with discussion about abstract syntax because there is a close relation between abstract and concrete syntax in most languages). Syntactic sugar like white-space and symbols as well as how concise the language is, are hugely interesting discussion topics
&lt;/p&gt;
&lt;p&gt;
Our main question around concrete syntax, however, should be: how does the language convey meaning? If we read the language, do we know what the words mean? Do we understand the meaning of the data (inputs, variables)? Can we easily follow the flow? These are the things that matter!
&lt;/p&gt;
&lt;p&gt;
You want examples you say? Well, &lt;a target="_blank" href="http://www.muppetlabs.com/~breadbox/bf/"&gt;this&lt;/a&gt;&amp;nbsp;may be the worst readable language of all, that&amp;rsquo;s the goal at least. The &lt;a target="_blank" href="http://www.mendix.com/application-platform-as-a-service/features/microflows/"&gt;microflow language&lt;/a&gt;&amp;nbsp;we use in our platform is a bit easier to read and understand and hence conveys the meaning of the program much better (and it even leads to &lt;a target="_blank" href="https://mxforum.mendix.com/questions/463/What-is-the-most-beautiful-and-valid-microflow-you-ever-drawn"&gt;art&lt;/a&gt;).
&lt;/p&gt;
&lt;h3&gt;On abstract syntax: being declarative is not the holy grail&lt;/h3&gt;
&lt;p&gt;
In the world of Model-Driven Development and &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/05/06/dsl-development-7-recommendations-for-domain-specific-language-design-based-on-domain-driven-design"&gt;Domain-Specific Languages&lt;/a&gt;&amp;nbsp;the focus tends to be more on the abstract syntax. The core tenets of Model Driven Development, or Model Driven Engineering if you will, are abstraction and automation. Normally if you want to create a language that is easy-to-use by domain experts (often non-programmers) you focus on creating an abstract syntax that leaves out technical details and is as declarative as possible, right? Do not focus on technical details (abstract them away) and specify the &amp;ldquo;what&amp;rdquo;, not the &amp;ldquo;how&amp;rdquo; (declare the program).
&lt;/p&gt;
&lt;p&gt;
However, abstracting away technical details does not automatically make a language easier to understand. It all depends on what the relation is between the language concepts and the actual behaviour of the application you see (remember: cause and effect). A low-level language creates too much of a distance between cause and effect as, for example, machine-level instructions are not easy to relate to application behaviour. On the opposite side we have language that are too high-level and thereby create a difficult relation between cause and effect too. If one line of code (or a single activity in your process diagram) leads to the execution of a range of actions that can result in a plethora of results, it can be hard to grasp the impact of changing something.
&lt;/p&gt;
&lt;p&gt;
This leads us to the subject of declarative languages. Declarative languages can be very powerful as you just declare the result, not how to get it. Example languages are SQL (well-known, more declarative than procedural), Prolog (if you studied computer science you probably know it), or the languages used by most business rule engines. The nice thing about declarative language is that you abstract away all the &amp;ldquo;how&amp;rdquo;, you avoid implementation details. What these languages promise is that programs created with them are easier to understand and maintain, and sometimes that&amp;rsquo;s completely true.
&lt;/p&gt;
&lt;p&gt;
However, what always bugged me is that users of our &lt;a target="_blank" href="http://www.mendix.com/application-platform-as-a-service/how-it-works/"&gt;App Platform&lt;/a&gt;&amp;nbsp;learn to use our procedural DSLs quicker than the more declarative ones. In hindsight that&amp;rsquo;s maybe not that difficult to explain. It&amp;rsquo;s probably best understood if you imagine a large system that consists of 1000 rules (or predicates) that are automatically woven into a working system. Do you think a &amp;ldquo;programmer&amp;rdquo; can easily connect cause and effect when changing a rule? The lesson: being declarative shouldn&amp;rsquo;t be a goal on its own, it can even make things more difficult if not applied well. Please note that I focus on the learnability of the language; productivity, conciseness, etc. are different considerations that may influence your choice for declarative languages.
&lt;/p&gt;
&lt;p&gt;
In the end, the abstract syntax of a language should help to reason about the problem you are solving using the concepts of the language. It should be a proper abstraction of the resulting application, this abstraction can be as high-level as possible as long as this abstraction decreases the &amp;ldquo;distance&amp;rdquo; between cause and effect. The abstract syntax, the concepts of the language, should also help to decompose a problem in manageable pieces and glue them back together as a complete solution.
&lt;/p&gt;
&lt;h3&gt;On semantics: live programming helps to understand cause and effect&lt;/h3&gt;
&lt;p&gt;
The semantics are the most important aspect for people to learn and understand a language. Semantics connect cause (a certain language construction) and effect (the result of executing that language). As explained in the previous sections the choice for concrete and abstract syntax is important as it defines the &amp;ldquo;distance&amp;rdquo; between cause and effect and hence how easy to understand the semantics of the language are. In addition to the language itself, the tools are of the same importance in conveying the semantics of a language.
&lt;/p&gt;
&lt;p&gt;
The environment you use can, for example, greatly enhance the readability of a language by providing mouse-overs, integrated documentation, highlighting, etc. But an environment should do more. It should help you to sculpt your program. It should provide refactoring options that help you to start concrete and refactor to more abstract code when needed. It should provide ways to step forward (and backward!) through the program while inspecting state and behaviour. 
&lt;/p&gt;
&lt;p&gt;
A great debugger can really help you to learn and understand the cause-effect relationship of your language and the actual execution. A nice example is the &lt;a target="_blank" href="http://www.mendix.com/tech-blog/the-ultimate-debugger/"&gt;visual debugger&lt;/a&gt;&amp;nbsp;we feature in our platform, and you maybe also know the Eclipse Java debugger (or even the Smalltalk debugger) that allows you to change code during a debugging session (within some limits).
&lt;/p&gt;
&lt;p&gt;
Changing code and directly seeing the effects of it (dubbed &amp;ldquo;live programming&amp;rdquo; sometimes) is the ultimate way to closely connect cause and effect. If you combine that with stepping forward and backward through the execution (and thus modify state and code at the same time) you have a powerful environment that really helps a user to relate cause and effect and hence understand the language.
&lt;/p&gt;
&lt;p&gt;
Warning: live programming really helps in understanding the language, but not on its own. Please do not forget the things I previously mentioned about concrete and abstract syntax. Cause and effect can be clearly connected, but if you cannot understand that connection when you read&amp;nbsp;the language it will still be hard to understand the language.
&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
If you want to design the next programming language that is easy to learn and use, you should first understand how people learn. The relation between cause and effect plays an important role in the learnability of a language. If you want to clarify the cause-effect relationship you should focus on both the language design and the tools.
&lt;/p&gt;
&lt;p&gt;
If you like this subject you should definitely read &lt;a target="_blank" href="http://worrydream.com/LearnableProgramming/"&gt;this excellent essay&lt;/a&gt;&amp;nbsp;(not written by me, you can safely click the link and will not regret it ;) ) that goes into great lengths to explain how we can let people understand programming.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=AkxpQwpfNSw:0wPoGRF6_Cw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=AkxpQwpfNSw:0wPoGRF6_Cw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=AkxpQwpfNSw:0wPoGRF6_Cw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=AkxpQwpfNSw:0wPoGRF6_Cw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/AkxpQwpfNSw" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">134@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Thu, 14 Feb 2013 12:01:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2013/02/14/designing-the-next-programming-language-understand-how-people-learn</feedburner:origLink></item>
		
		
		
		<item>
			<title>A tale of a 7 year journey in developing software for the enterprise</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/xjJF3q1DS_Q/a-tale-of-a-7-year-journey-in-developing-software-for-the-enterprise</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2013/01/05/a-tale-of-a-7-year-journey-in-developing-software-for-the-enterprise#comm</comments>
                        <description>Much is written about lean startups, agile software development, continuous integration or even continuous deployment. All with the goal to help us understand the dynamics of successful software companies and their development teams. I am inspired by these stories, they show me what the ideal situation is like, they challenge me to improve our current way of working. 
&lt;p&gt;
Today I want to give something back. I want to share with you our tale of developing software for the enterprise over the last 7 years at&amp;nbsp;&lt;a href="http://www.mendix.com/" target="_blank" title="Mendix - The App Platform for the Enterprise"&gt;Mendix&lt;/a&gt;. Not to show you the &amp;quot;ideal situation&amp;quot;, but to share with you the challenges we encountered in scaling our teams and in getting customers that depend their business on our&amp;nbsp;&lt;a href="http://www.mendix.com/application-platform-as-a-service/how-it-works/" target="_blank" title="Mendix App Platform"&gt;App Platform&lt;/a&gt;. We experienced exponential growth ever since we started and much of the phases we went through are not specific for our situation, so I hope you enjoy the story and perhaps learn something from it.&lt;/p&gt;&lt;h3&gt;Start up: what to build?
&lt;/h3&gt;
&lt;p&gt;
I never forget that moment, more than 7 years ago when I first entered the &amp;quot;office&amp;quot;. Just a few people in one room starting a business. It felt exciting and I couldn't wait to be part of it. One day later I was sitting at a desk with code in front of me (and two other people constantly using the phone for &amp;quot;sales&amp;quot;).
&lt;/p&gt;
&lt;p&gt;
Did we know what to build? Did we know what our product would look like, even in a month's time? No. We did have a clear vision, though. A vision that, we believed, would change the world. Our one and only goal in these early months was to create features as quickly as we could. To make our vision tangible and share it with potential customers. To say it in other words: we quickly iterated with the &amp;quot;market&amp;quot;.
&lt;/p&gt;
&lt;h3&gt;
The first customers: we need this feature, it blocks this important deal
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
And then it became even more exciting: the first customers started using our software! However, there was often an accompanying message to the development team: we really need these new features otherwise we cannot deliver what we promised. The situation for our development team in principle stayed the same: cranking out new features as fast as possible. Only we did it for real customer cases this time, instead of for &amp;quot;just&amp;quot; our own vision.
&lt;/p&gt;
&lt;p&gt;
I think every developer recognizes this situation where sales people &amp;quot;demand&amp;quot; new features to be able to close a deal. In this phase of your company you should welcome this (within certain boundaries of course) as your main goal is to search for the right market. The main challenge often is to make sure you do not keep doing it this way, to determine the right moment to switch to a more structured approach.
&lt;/p&gt;
&lt;p&gt;
In the first year we mainly flip-flopped between the customer- and vision-driven method of operation. How long you iterate between these two modi depends much on the stability of your vision and how well it fits with the actual market you find.
&lt;/p&gt;
&lt;h3&gt;
Stabilizing: not all customers want to &amp;quot;live on the edge&amp;quot;
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Luckily we found a market that was waiting for a product like ours. There was a lot of pain we could take away with our product. So, we stabilized our product focus and our user base grew quickly. This doesn't mean our messaging and positioning has been the same since then. We continuously change and improve those, but the core vision of our product is the same today.
&lt;/p&gt;
&lt;p&gt;
A growing customer and user base also introduced new challenges. No longer was our focus just on cranking out new features as quickly as possible. There are these customers, you know, that value stability over new features. Whether they do depends on the &amp;quot;maturity&amp;quot; of your customer, but even if they do not value stability, they will quickly learn to. It goes like this: the first time you tell the customer &amp;quot;we fixed the issues you reported and we also added this cool new feature&amp;quot; they will be very happy. But, after learning that every tiny change in software also brings new risks they will start asking for releases without these &amp;quot;cool new features&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
I know, your quality assurance should be so good that users of your product trust every change you release. However, no quality assurance approach can match the &amp;quot;quality increase&amp;quot; a piece of software goes through when it is hardened in production. So, when developing mission-critical software you will end up with different types of releases. In our case we just followed the best practice of having major, minor, and patch releases with the accompanying 3-part versioning scheme (x.y.z).
&lt;/p&gt;
&lt;p&gt;
The additional challenge this brings is how to plan these releases. Ideally, as a development team using an&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Agile_software_development" target="_blank" title="Agile Software Development"&gt;agile software development method&lt;/a&gt;, you have a single backlog and you work on a single sprint. Just work with different branches in your version control system to make sure you can release features separate from bug fixes. However, we did experience two difficulties with this approach. First, it is becoming a full-time job to discuss the importance of incoming issues with the caller. They quickly learn that the resolve time of their issue depends on how well they explain the severity of their issue. Second, it is difficult to keep focus if you mix issues that address any part of your product with the tasks that cover the specific major feature you are working on.
&lt;/p&gt;
&lt;p&gt;
We ended up with a process we still happily use today. We divide our work in chunks of 8 weeks. Each 8 week period contains the following elements:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;5 weeks of uninterrupted &amp;quot;roadmap&amp;quot; work. We can really focus on difficult problems, be creative, be innovative, bring our product to the next level. These 5 weeks are divided in multiple sprints and each sprint results in a working piece of software. One or more of these 5 week periods result in a major release.&lt;/li&gt;
	&lt;li&gt;3 weeks of &amp;quot;maintenance&amp;quot; work. This period results in a minor release and is focused on processing defects. We include minor features too, but only if the use case is very clear and the risks are low. The changes we do in these minor releases are always merged back to the main line and will thus be included in any future release.&lt;/li&gt;
	&lt;li&gt;2 &amp;quot;FedEx&amp;quot; days. A monthly day during which developers build a new feature they like, research a new technology, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Organizing our work in this way gives us the following advantages:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Our users know that we do a low-impact minor release every 8 weeks. Only if a defect is so severe a user cannot wait we have a discussion about a patch release. In general our users really like the clarity of the release scheme and issue deadline before each release.&lt;/li&gt;
	&lt;li&gt;It makes product management easier. It is very difficult to decide on the priority of small(er) feedback items versus strategic product changes. Now we always dedicate time for the smaller feedback items and we know the amount of time we have for &amp;quot;roadmap&amp;quot; work.&lt;/li&gt;
	&lt;li&gt;It ensures time and focus for innovation, for bold new ideas. It is so easy to just be busy with maintaining the current status quo. You will keep your current users happy, but risk becoming irrelevant in no time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
So, business is coming in, users are happy, development is structured, enough said right? Well, that could have been the case, but when going through these changes we didn't see the dark clouds gathering on the horizon...
&lt;/p&gt;
&lt;h3&gt;
The 2nd system effect: let's do it all over again, but better (we thought)
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
When you develop a product like ours, you make choices, lots of choices, everyday. Especially when under pressure to deliver, you need to make choices about leaving out features or implementing a feature less elegantly than you would have done in an ideal situation. Combine that with all the new insights you get when your product is used by more and more customers and slowly you get the feeling some fundamental elements need to change to keep up with the growth and the new usage you see (and didn't predict before you started). At least, that happened to us. We clearly identified a new vision for our product, one that extended the initial vision we had. We were not afraid to aim high, to have ambition. It truly was a so-called&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Big_Hairy_Audacious_Goal" target="_blank" title="BHAC"&gt;Big Hairy Audacious Goal&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So far, so good. We had this great vision and we used our roadmap time to start with the implementation. During the maintenance periods we maintained the current version of our product. The first problems arose when we were in the middle of refactoring each and every element of the core of our system when an important, bigger feature was needed by our users. What to do? We only had one option: build it in the current stable line and just keep working on the new major stuff in a separate line. Guess what happened? A couple of months later almost the complete team was working on the &amp;quot;stable&amp;quot; line and the new amazing upcoming major release parts were gathering dust somewhere in a corner of our version control system. Finally, more than half a year after we started, we decided to kill the development of the new major release. In hindsight that was one of the best decisions we ever made, and I can tell you that it took a lot of courage.
&lt;/p&gt;
&lt;p&gt;
What did we learn from this experience? First, these kind of &amp;quot;big mistakes&amp;quot; quickly become some sort of a legend that is told to every new team member that joins our company. Second, we realized we had fallen victim to the so-called&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Second-system_effect" target="_blank" title="Second System Effect"&gt;second-system effect&lt;/a&gt;. This effect refers to the tendency of small, elegant systems to have big, feature-creeped systems as their successors (luckily we never released the successor we had in mind). You try to compensate for all the stuff you didn't get to do in the first version of the system. We thought it was heroic to take the time to re-think everything and to dare to re-implement big parts of our product. We were partly right, it wasn't the re-thinking that was the problem, it did go wrong in the way we defined &amp;quot;working software&amp;quot;, in the way we defined the slices of work for each sprint.
&lt;/p&gt;
&lt;p&gt;
We still worked in sprints and did sprint demo meetings with stakeholders involved, but we focused too much on horizontal slices. Slicing a system horizontally means implementing a system one layer after another, e.g. first build the database layer, followed by the business logic layer, and finally the UI layer (or any other layers you have in your system). Using this approach you cannot show a real end-user feature until you finish almost all layers. Slicing a system vertically means developing just the parts of each layer that are needed for a specific feature, followed by the parts that are needed for the next feature, etc. Vertical slicing enables to deliver working functionality as soon as possible. It also helps to focus the development of the underlying technical layers, i.e. only build what you need.
&lt;/p&gt;
&lt;p&gt;
By focusing on horizontal slices we moved into a modus of brainstorming and speculating about everything that was needed in a certain layer. This results in discussions and ideas that lead to an endless increase of the scope. In fact, years later we can still refer to this version we were trying to build. When we start to build a new feature we often realize: &amp;quot;this was also part of our big master plan years ago, right?&amp;quot;. The amount of times this happens is truly astonishing (&amp;quot;did we really think we could include all this in a single major release?&amp;quot;). 
&lt;/p&gt;
&lt;p&gt;
So, we changed some things, or better formulated, we emphasized some parts of our working process. First, the 3 week maintenance period is for minor stuff, if it doesn't fit in the 3 weeks, it should be part of our roadmap time. Second, during roadmap time we focus on vertical slices and work in sprints with a maximum of 2 weeks that always result in working software. 
&lt;/p&gt;
&lt;p&gt;
Sounds trivial right? Why is it then that so much people can relate to a story like this? I think because doing it right takes a lot of continuous discipline. As developers we tend to think about the horizontal slices when we plan the implementation of new features. Furthermore, a focus on vertical slices tends to create waste. You have to build stuff that you know you will throw away if you implement one of the next features, or you already know what other things you need in a certain layer, better create it directly, right?
&lt;/p&gt;
&lt;p&gt;
We had this experience in the past, but it is an ongoing challenge to keep our focus. From time to time we need to &amp;quot;reset&amp;quot; ourselves and make sure we focus on having a big vision, but operate in small steps. What we truly experience: complexity is easy, simplicity is difficult. And this tendency to the &amp;quot;complex&amp;quot; isn't the only challenge we had in keeping our focus...
&lt;/p&gt;
&lt;h3&gt;
Ramping up: introducing &amp;quot;departments&amp;quot;
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Focus is more than &amp;quot;not doing everything at once&amp;quot;. It also means uninterrupted time to really focus on doing highly-skilled work. Our 8-week rhythm is helping with that, but as you can imagine we cannot close the doors for 5 weeks if we are in our roadmap period. However, we also know that a developer that operates in &amp;quot;&lt;a href="http://en.wikipedia.org/wiki/Flow_(psychology)" target="_blank" title="The Zone - Flow"&gt;the zone&lt;/a&gt;&amp;quot; is exponentially more productive than one that is interrupted multiple times per hour. If your company grows this becomes quite a challenge.
&lt;/p&gt;
&lt;p&gt;
What we did over the years was introducing departments around product development. There is no definite guide that tells you when to introduce a &amp;quot;department&amp;quot; and how, but these are my main observations:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;As long as your company has less than 20 employees you won't need formal departments. You probably do not even have team leads or &amp;quot;managers&amp;quot; except for the founders of the company.&lt;/li&gt;
	&lt;li&gt;Once you grow bigger than, let's say, 20 employees you will probably need to introduce team leads and departments as the founders cannot manage everything themselves anymore.&lt;/li&gt;
	&lt;li&gt;There will be a point in time when the team lead(s) of your product development team(s) are completely occupied with &amp;quot;operational stuff&amp;quot;. That's a dangerous situation and you have to detect the early signals and make sure you start to &amp;quot;outsource&amp;quot; part of the work to other (probably new) departments.&lt;/li&gt;
	&lt;li&gt;From a development team perspective one of the first things you will need are people that connect new customers, and in our case to actually implement a solution for customers using our product. As a company you have to do that yourself to make sure you have the right &amp;quot;lighthouse customers&amp;quot; that help you attract new customers (customers and users of your product need examples to be convinced to start using your product). The dynamics of this type of work are completely different from product development, hence you do want to split that to keep your focus.&lt;/li&gt;
	&lt;li&gt;Another type of work with completely different dynamics is &amp;quot;support&amp;quot;. You do want dedicated attention for that as early as possible. Embedding a good support process in your organization that ensures knowledge sharing is a key element to scaling your organization. No proper support means that you become victim of your own success: more customers means more developer &amp;quot;distraction&amp;quot;. There are of course multiple ways to solve this, but in the end you want a team with dedicated attention for users, creating FAQs, handles incoming issues, etc. And, do not forget we are talking about enterprise software, hence we have some SLAs we need to comply with.&lt;/li&gt;
	&lt;li&gt;Tech sales is also something you want to formalize quite early. Selling software to enterprises means answering a lot of questions. And not just an explanation of how your product works, that's something that needs to be explained and written down by developers that build the features in my opinion. But, think about the positioning of your product compared to other types of products, compared to competitors, creating and giving demo's, convincing customer architects, etc. Again, there are smart ways to do this, but someone needs to do it.&lt;/li&gt;
	&lt;li&gt;What you should NOT just split out of the product development department is &amp;quot;operations&amp;quot; (i.e. everything that is needed to run your software - we're talking &amp;quot;as-a-Service&amp;quot; here). I strongly believe in cross-functional development teams that are responsible for running their own parts of the products (you built it, you run it). This creates a culture of responsibility, developers will think about the consequences of their changes thoroughly. It also ensures that a vertical slice for a feature incorporates the operational aspects, meaning that finishing such a vertical slice really results in working, releasable software. You can (and probably should) of course create a separate team that supports the other teams in the way they deploy new versions of their software, monitor it, etc. by automating it and providing the developers with the right tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
In gradually moving to a situation with more &amp;quot;departments&amp;quot; we were able to return to more focused development and enough time for innovation. Every change creates a new challenge, though. Let me tell you a story... after a short intermezzo...
&lt;/p&gt;
&lt;h3&gt;
Knowledge transfer: how to keep other departments and users up-to-date?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Outsourcing part of the work to other departments (other than your product development teams) leads to more &amp;quot;distraction&amp;quot; instead of less in the short time. The main reason: knowledge transfer. Support and pre-sales for example need to know everything about the product, new releases, etc. We have seen two things that really help with this. 
&lt;/p&gt;
&lt;p&gt;
First, you need developers with writing skills. I do not mean &amp;quot;writing code&amp;quot; but rather documenting new features in a reference guide, explaining how to use new features in a how-to, and explaining the rationale behind new features in technical blog posts. 
&lt;/p&gt;
&lt;p&gt;
Second, we have a &amp;quot;tech-of-the-day&amp;quot;. That's one of the developers who is available for answering questions from other departments. We rotate this role every day. This approach makes sure that other departments can always approach someone with in-depth product knowledge and at the same time it ensures focus for all other developers. It also ensures that each developer is exposed to user feedback and discussions about how to use or sell our product.
&lt;/p&gt;
&lt;h3&gt;
The ivory tower: how to keep the feedback loop connected?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Let's go to the story I promised you. So, we released this cool new feature. We, as a development team, were enjoying the moment. You have to celebrate your milestones! However, within 5 minutes someone from our &amp;quot;professional services&amp;quot; department stood at my desk with a less joyful face. He had just glanced at our new release and then ran to my desk to explain to me: &amp;quot;this feature you just released is completely useless&amp;quot;. That's fun, right? What wasn't so funny was the fact he was right.
&lt;/p&gt;
&lt;p&gt;
How is it possible that we were crafting a new feature for weeks and thought it was the best thing since sliced bread, while one of our users could see the flaws in 5 minutes? Shielding the product development team as much as possible from external &amp;quot;distractions&amp;quot; brings some serious issues with it. Isn't one of the core principles of agile software development to value &amp;quot;customer collaboration&amp;quot;? That's for a reason. Without the collaboration with your users and stakeholders you are building stuff you think is valuable, but the better and longer the shield works, the more you are moving away from reality. Product development slowly turns into an Ivory Tower. How to find the right balance between focus and collaboration?
&lt;/p&gt;
&lt;p&gt;
To start with: these two things, focus and collaboration, are not mutually exclusive. However, we have experienced first hand that finding the right balance is a challenging, continuous process. Especially in a fast growing company. Let's look at some things we introduced over the years (some more recent than others) to fight the creation of an&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Ivory_Tower" target="_blank" title="Ivory Tower"&gt;Ivory Tower&lt;/a&gt;:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;The most logical moment to involve users in the development process is the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)#Sprint_review_meeting.5B17.5D" target="_blank" title="Sprint review meeting"&gt;sprint review meeting&lt;/a&gt;. This meeting is meant to demo the completed work to the stakeholders. We always try to involve a user in this meetings. This is often quite challenging as these users have a busy schedule. If it really isn't possible to have a user in these meetings regularly the Product Owner should put more effort in aligning with users (at more flexible times) and being the &amp;quot;voice of the user&amp;quot; during the meetings.&lt;/li&gt;
	&lt;li&gt;We start new projects with an &amp;quot;inception&amp;quot; phase that is used to identify the vision and story for the release, bring stakeholders to agreement, and create an initial idea of the user experience. We literally start with writing the press release for the release, present it to stakeholders and write down all the questions that arise (and their answers) in an initial FAQ. This really helps in guiding and scoping development and involves users as early as possible. What we essentially do is to start with the customer and work backwards until we get to the minimum set of technology requirements that satisfy what we try to achieve. Using such a continuous, explicit customer focus we aim to drive simplicity throughout the process. But again, we continuously need to remind ourselves: have a big vision, operate in small steps.&lt;/li&gt;
	&lt;li&gt;All of our products include a feedback mechanism that makes giving feedback really effortless. This increases the chance that a user shares his thoughts, frustrations, and awesome ideas with us. This of course also brings an additional challenge: processing all this feedback in such a way users feel their feedback is valued and taken seriously.&lt;/li&gt;
	&lt;li&gt;We sometimes invite users of our products to present at one of our Friday-afternoon-beer-sessions. In our case this means we have users from partner companies that present the enterprise apps they have build for their customers using our&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="PaaS - Platform-as-a-Service"&gt;PaaS&lt;/a&gt;. This really helps to broaden the perspective of our development teams. Additionally these users are always asked to share with us what they like and dislike. In our experience users are always happy to share their work (and opinion) with us, and they are rewarded: almost every time they present something that really annoys them (or a hint for something they really would like) we can just include that in the next minor release.&lt;/li&gt;
	&lt;li&gt;Product management should not purely be based on user feedback. Product management should be based on multiple influences, amongst them: your own product vision, market trends, marketing, sales, research and development, user feedback, etc. That being said, product management is a tough job. Most of the time you should be able to value different inputs and say &amp;quot;no&amp;quot; to a lot of them. If you want to please everyone, don't become a product manager, you will create awful, feature-laden products. However, you shouldn't become arrogant too. Using just your own vision as input will not lead to the best product.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
This list is by no means complete. We feel we still need a lot of improvement in this area and it has our continuous focus to improve this.
&lt;/p&gt;
&lt;h3&gt;
Entering the real enterprise world: when you thought functional requirements are the only things that interest customers
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
We talked a couple of times about developing &amp;quot;enterprise software&amp;quot;. What do we mean by that? Actually, that changed over time. We did not start with a fortune 100 company as customer. What we first saw as a big company is small compared to the current customers we have. And in delivering software to the real big companies we also encountered additional requirements. If you ever built enterprise software this shouldn't be a surprise.
&lt;/p&gt;
&lt;p&gt;
First, the product or service you deliver should be covered by a&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Service-level_agreement" target="_blank" title="SLA - Service Level Agreement"&gt;Service-Level Agreement (SLA)&lt;/a&gt;. I am not a legal expert, so I won't go into the details. Just one piece of advice: make sure you carefully read and understand the SLAs of the services your product depends on. If you for example build software that runs in &amp;quot;the cloud&amp;quot; like we do, you need to understand the details of the SLAs of the Infrastructure-as-a-Service (IaaS) providers (hint:&amp;nbsp;&lt;a href="http://cloudpundit.com/2012/12/05/cloud-iaas-slas-can-be-meaningless/" target="_blank" title="Cloud SLAs can be meaningless"&gt;they can be meaningless&lt;/a&gt;). Your own SLA is limited by the SLAs of your providers, if it isn't you probably want to contact an insurance company.
&lt;/p&gt;
&lt;p&gt;
For us as a product development team the nice thing is that these kind of agreements with customers lead to higher uptime requirements. Hence, more time on the roadmap for things like high-availability, horizontal scalability, failover mechanisms, etc. Which is interesting stuff, right?
&lt;/p&gt;
&lt;p&gt;
Another requirement some of our customers (especially in the financial and healthcare industries) have is that we as a company are audited every year. These customers are under a lot of regulations and are only allowed to do business with companies that comply to a number of standards. Examples are the&amp;nbsp;&lt;a href="http://sas70.com/FAQRetrieve.aspx?ID=33300" target="_blank" title="Auditing standards"&gt;ISAE 3402 and SSAE 16&lt;/a&gt;&amp;nbsp;standards. So, what do auditors look for in your product development processes? In my experience these are the main elements:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;A traceable software development lifecycle: have a look at the current version of your product that runs in production. You have to be able to show who approved the release and when, what the test report was, the source code for that release including the commit history, and the requirements and design decisions for the new features in that release. This maybe sounds bureaucratic, but with the proper tooling it is fairly easy without much overhead. We use a version control system connected to a Scrum tool (part of our own platform) containing the user stories (including related discussions), the results of our test runs (connected to builds) are saved, and we have a lightweight approval process for releases (just me giving a written approval as response to a request by one of the development teams that contains build number / revision and test report).&lt;/li&gt;
	&lt;li&gt;Disaster recovery: you have to have a disaster recovery plan (and not just for audit purposes). You have to test the plan at least once a year and document that. Again not just for audit purposes, an untested backup (or failover environment) equals no backup.&lt;/li&gt;
	&lt;li&gt;Maintenance processes: you have to have change management processes in place that make sure that changes on environments are properly scheduled, approved, and traceable. Furthermore, you have to establish processes that make sure that (security) patches of the third-party software you use are noticed and applied as soon as possible.&lt;/li&gt;
	&lt;li&gt;Documentation of procedures: most people I know aren't fans of audits because of the focus on documentation and I have to admit that was my point of view, too. Documentation is, of course, the only way an auditor can verify your processes, however, in my experience most are quite pragmatic and do not ask for multi-page process descriptions. You can keep it short and to the point. In a growing organization with a growing product you inevitably need more documentation. Not everybody will automatically know and understand everything (as opposed to the early days) and new employees need to learn a lot. Early-day employees often don't realize how complex the current organization is for new employees as these early-day employees never had to learn everything at once, they have just grown into it.&lt;/li&gt;
	&lt;li&gt;Staff training: for me this is probably the most &amp;quot;difficult&amp;quot; part of the audit. You need to show that your employees are capable and know their stuff (especially with regard to security). That's difficult to show if you have a team of A-players that are autodidactic and use blogs and social media to keep their knowledge up-to-date. We hire people with such skills, we do not look at certifications. So, we do not organize formal trainings. However, organizing an in-house training day (read: a hacking contest - learn a lot about security by hacking example systems in an increasing order of difficulty) with an attendee list and short description of the day can often do the job too.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
The main challenge? Fighting the obvious: becoming a bureaucratic, inert organization. So, keep it lightweight and be pragmatic. Focus on the reasons behind these questions and controls, in the end it is all about quality and continuity of service, which are good things to focus on.
&lt;/p&gt;
&lt;p&gt;
SLAs and audits are just two examples of so-called non-functional requirements for enterprise software. In all this, it is again about finding the right balance: non-functionals need more attention than in the early years, but do not stop the innovation from a functional perspective.
&lt;/p&gt;
&lt;h3&gt;
Scaling the team: how to keep the &amp;quot;startup&amp;quot; vibe?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
If you are still with me, you probably sensed the growth we had over the last years. That growth also influenced the size of our product development team. We started with just a few people, the company was one team. As explained, over time &amp;quot;departments&amp;quot; were introduced and thus a product development &amp;quot;department&amp;quot; was created. Currently, a couple of years later, our product development department consists of 5 teams and within a couple of months team 6 and 7 will be created as teams that grow bigger will be split.
&lt;/p&gt;
&lt;p&gt;
In product development we didn't grow very fast. If you grow too fast, teams are more busy with getting new people up-to-speed than with new versions of the product. Furthermore, it is important to not only get people up-to-speed with the technical work, they should also become part of the culture, they should breathe it. We call that: painting them Mendix-blue. Your culture is a competitive advantage that cannot be copied, foster it! Part of a focus on &amp;quot;culture&amp;quot; is the way we evaluate if someone fits in the team. We do not just look at skills, we let them talk with some team members and see if they add up to something more than the sum of the individual people. It is about passion, enthusiasm, and thereby pushing each other to excel. 
&lt;/p&gt;
&lt;p&gt;
So, culture is important, but how to stay focused, aligned, and flexible while also growing the product development team? Here are some of the things we do to prevent ourselves from becoming the next big inert organization:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;We keep the teams small (8 people at maximum) and autonomous.&lt;/li&gt;
	&lt;li&gt;Teams are cross-functional. A team is responsible for a product, part of product (a service), or a certain feature. This responsibility includes everything from design and implementation to releasing and running it.&lt;/li&gt;
	&lt;li&gt;Each team has a&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)#Core_roles" target="_blank" title="Scrum master"&gt;Scrum master&lt;/a&gt;&amp;nbsp;who is part of the team. In principle a Scrum master is a developer with an additional role. With the small teams we have that's working successfully.&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;Everybody is a &amp;quot;maker&amp;quot;. Everybody creates stuff, whether it is code, tests, infrastructure automation, or designs. We do not have multiple layers of &amp;quot;management&amp;quot;.&lt;/li&gt;
	&lt;li&gt;We have weekly&amp;nbsp;&lt;a href="http://www.scrumalliance.org/articles/46-advice-on-conducting-the-scrum-of-scrums-meeting" target="_blank" title="Scrum-of-Scrums"&gt;Scrum-of-Scrums&lt;/a&gt;&amp;nbsp;meetings to align the teams. Each team writes down the &amp;quot;what did we do&amp;quot; and &amp;quot;what are we going to do&amp;quot; stuff on beforehand. During the meeting (which is attended by a team member from each team) we discuss impediments and resolve issues that affect multiple teams. Everything we share and discuss is posted on our internal &amp;quot;social network&amp;quot; so that each team member always knows what's going on within the other teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Much more can be written about the subject of growing a product development team. For now, just a final observation: system architecture tends to follow team structure, even if communication among teams is well-organized. Keep that in mind when you think about your team structure.
&lt;/p&gt;
&lt;h3&gt;
Moving on
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Well, this piece became a bit longer than initially planned, but I hope you enjoyed it. Please share your experiences, comments, or questions in the comments!
&lt;/p&gt;
&lt;p&gt;
We will continue our journey and continuously improve our way of working. Because it's fun, but also because it's necessary. We need to stay innovative, we need to challenge ourselves, to be able to stay successful. 
&lt;/p&gt;
&lt;p&gt;
Let me finish with a meta-observation: the word &amp;quot;focus&amp;quot; is mentioned quite a lot of times in this story (30 times actually). That surely aligns with my experience: nothing beats a motivated, highly focused team of professionals with a clear goal!
&lt;/p&gt;
&lt;p&gt;
By the way: we are hiring for multiple development positions including a&amp;nbsp;&lt;a href="http://www.mendix.com/company/join-our-team/netherlands/#softwareDevelopmentManager" target="_blank" title="Software Development Manager Mendix"&gt;software development manager / agile coach&lt;/a&gt;. So, if you enjoyed this article and want to join (and impact) our process of continuous improvement you should check out&amp;nbsp;&lt;a href="http://www.mendix.com/company/join-our-team/netherlands/" target="_blank" title="Mendix vacancies"&gt;our open positions&lt;/a&gt;.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;You can also discuss this article on&amp;nbsp;&lt;a href="http://news.ycombinator.com/item?id=5020638" target="_blank" title="Hacker New discussion thread"&gt;Hacker News&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=xjJF3q1DS_Q:Mz1QnuKPmIs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=xjJF3q1DS_Q:Mz1QnuKPmIs:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=xjJF3q1DS_Q:Mz1QnuKPmIs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=xjJF3q1DS_Q:Mz1QnuKPmIs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/xjJF3q1DS_Q" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">133@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Sat, 05 Jan 2013 16:07:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2013/01/05/a-tale-of-a-7-year-journey-in-developing-software-for-the-enterprise</feedburner:origLink></item>
		
		
		
		<item>
			<title>3 steps to free your business from the IT stranglehold (and vice versa)</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/JbZUgdHsuAU/3-steps-to-free-your-business-from-the-it-stranglehold-and-vice-versa</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/11/27/3-steps-to-free-your-business-from-the-it-stranglehold-and-vice-versa#comm</comments>
                        <description>It's not just IT that slows down the business. In a recent study 20% of companies reported they have NO innovation strategy and more than 50% of companies reported that their innovation strategy was mis-aligned with their business strategy and that their culture poorly supported it [1]. However, if we look at the IT side of an organization we often see the same kind of figures: 70% - 80% of IT budget is used just to run and maintain existing apps [2]. Maybe that's even explainable since starting a new IT initiative is often a bumpy road: 68% of all new software projects are NOT successful [3].
&lt;p&gt;
These numbers aren't new. Why do we all know them and, yet, they seem to stay the same? The interesting thing is that business nor IT is denying the current state-of-affairs. IT and business are equally frustrated about the current situation in most companies. When asked &amp;quot;&lt;em&gt;are you happy with how IT is proactively engaging with Business Leaders to drive innovation?&lt;/em&gt;&amp;quot;, 74% of the non-IT execs state they are unhappy and 70% of the IT execs [4].
&lt;/p&gt;
&lt;p&gt;
It seems like it is time for change...
&lt;/p&gt;
&lt;p&gt;
I think the next 3 steps will provide a way to really change these numbers...&lt;/p&gt;&lt;h3&gt;Step 1: start to believe in an agile enterprise&lt;/h3&gt;
&lt;p&gt;
It wouldn't be strange if you accepted the status quo: change is difficult, change is slow, especially in a big company. However, that's not how it ought to be.
&lt;/p&gt;
&lt;p&gt;
I believe that successful Enterprises:&lt;br /&gt;
Are agile.&lt;br /&gt;
Can respond quickly to changes in the market.&lt;br /&gt;
Because all departments are fully integrated in the&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/08/10/enterprise-agile-extending-the-agile-process-outside-development" title="Enterprise Agile"&gt;overall value stream&lt;/a&gt;.&lt;br /&gt;
They have a big vision, but operate in small steps.&lt;br /&gt;
And gather feedback continuously and early-on.&lt;br /&gt;
They always work back from the customer and let customer-value drive new initiatives.&lt;br /&gt;
They focus on eliminating everything that's not contributing to the value stream.
&lt;/p&gt;
&lt;p&gt;
I believe that such Enterprises need Apps:&lt;br /&gt;
Flexible and focused apps.&lt;br /&gt;
That perfectly fit the business.&lt;br /&gt;
They are easy to find.&lt;br /&gt;
And easy to access, from any device.&lt;br /&gt;
They have an integrated user experience.&lt;br /&gt;
Their lifecycle is agile.&lt;br /&gt;
They change along with the business.&lt;br /&gt;
Users are engaged and their feedback is processed fast.&lt;br /&gt;
New apps are build in a collaborative process involving all stakeholders.&lt;br /&gt;
And they are easily delivered to the selected user base.&lt;br /&gt;
They align with enterprise needs around security, integration, and governance.&lt;br /&gt;
Instead of slowing the business down, they drive business innovation.
&lt;/p&gt;
&lt;p&gt;
Utopia? &lt;br /&gt;
&amp;quot;&lt;em&gt;Live your beliefs and you can turn the world around.&lt;/em&gt;&amp;quot; (Henry David Thoreau)
&lt;/p&gt;
&lt;h3&gt;Step 2: add a &amp;lsquo;new productivity platform' to your enterprise architecture&lt;/h3&gt;
&lt;p&gt;
If we really want to change the way IT supports the business, we need to change the way we build new apps and manage the lifecycle of apps. Most IT teams are struggling with the amount of work they have, often resulting in a &amp;quot;no&amp;quot; to the business if they demand new business functions provided in software. And let's just not talk about the constant change of business processes and policies that need to be reflected in existing software.
&lt;/p&gt;
&lt;p&gt;
According to Forrester analyst John Rymer, Java and .NET are often no longer the best choices for the fast delivery of new business applications. Instead, we need, what he calls, new productivity platforms, to speed-up initial application delivery and ongoing updates. He defines &amp;quot;new productivity platforms&amp;quot; as [5]:
&lt;/p&gt;
&lt;blockquote style="margin: 0px 0px 0px 40px; border: medium none; padding: 0px"&gt;
	&lt;p&gt;
	&lt;em&gt;
	Platforms that speed application delivery and ongoing evolution through: visual tools, hot deployment and continuous innovation, built-in administration and management, and active participation of business experts in application delivery.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
In my view these platforms are a special breed within the Platform-as-a-Service (PaaS) category. I'd like to call this sub-category&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion" title="Application Delivery PaaS"&gt;Application Delivery PaaS&lt;/a&gt;&amp;nbsp;to emphasize the focus on the complete application delivery lifecycle and not just deployment (as unfortunately a lot of PaaS platforms do). 
&lt;/p&gt;
&lt;p style="text-align: center" style="text-align:center;"&gt;&lt;img src="http://static.tridesign.nl/images/app-delivery-lifecycle-1.png" style="border:0px solid" title="The App Delivery Lifecycle" alt="The App Delivery Lifecycle" class="pivot-image" /&gt;&lt;/p&gt;

&lt;p style="text-align: center"&gt;
&lt;em&gt;
Figure 1 - The App Delivery Lifecycle (&lt;a target="_blank" href="http://www.infoq.com/articles/app_delivery_as_a_service" title="App Delivery as-a-Service"&gt;source&lt;/a&gt;)
&lt;/em&gt;
&lt;/p&gt;
&lt;p style="text-align: left"&gt;
Figure 1 shows the four important phases in the application delivery lifecycle. The phase at the top is about requirements capturing as a collaborative process among all stakeholders. This collaboration is continued in the next phase when the new ideas and requirements are converted into models (or existing model templates are selected to fulfil the wishes of the stakeholders). In this phase the focus is on&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="highly productive visual modeling"&gt;highly productive, collaborative development using visual models&lt;/a&gt;. These models are 1-click deployed to a runtime environment where they are executed and become real apps (I dubbed this&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/02/11/why-model-driven-software-development-isnt-fast-enough-and-how-to-fix-it" title="Model-Execution-as-a-Service"&gt;Model-Execution-as-a-Service&lt;/a&gt;&amp;nbsp;in the past). The key in successful app delivery is to continue to the next phase and engage with users, listen to their feedback, and use that feedback to come up with new requirements, thereby continuing the next cycle.
&lt;/p&gt;
&lt;p&gt;
The phases are not numbered on purpose. The only way to really improve app delivery is to create shorter feedback cycles to increase collaboration with all stakeholders within an app delivery project. Where you start doesn't matter, the app delivery lifecycle is a continuous process in which each cycle is as short as possible. And yes, this process should fit in an overall agile process to be able to function in the way described above. Or, in other words: the agile process needs to be extended outside development, we could call this '&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/08/10/enterprise-agile-extending-the-agile-process-outside-development" title="Enterprise Agile"&gt;enterprise agile&lt;/a&gt;'.
&lt;/p&gt;
&lt;p&gt;
In my opinion you should start to use an Application Delivery PaaS. The &amp;lsquo;agile enterprise' as described in step 1 will become much more within reach. 
&lt;/p&gt;
&lt;h3&gt;Step 3: know what's agile and what's not&lt;/h3&gt;
&lt;p&gt;
If you are an enthusiastic user of one of these &amp;quot;new productivity platforms&amp;quot; (an Application Delivery PaaS) you may think this is the way to go for all application development. Something along the lines of &amp;quot;if all you have is a hammer, everything looks like a nail&amp;quot; [6]. Don't go that way.
&lt;/p&gt;
&lt;p&gt;
These platforms aren't good for everything. Their real value shines when used for applications that need to be agile, that change on a weekly or even daily basis. You probably don't want to build your bookkeeping software from scratch using such a platform. You should look at your processes and applications and distinguish different categories. Gartner distinguishes between commoditized processes supported by commoditized applications (e.g. bookkeeping software in most organizations) and differentiating processes supported by differentiating apps. Differentiating processes are the processes of your organization that really distinguish you from your competition. These processes will probably change frequently and time-to-market is important.
&lt;/p&gt;
&lt;p&gt;
Ron Tolido (CTO at Capgemini) describes it way more colorful in his whitepaper about the five different application lifecycles that address different IT dynamics in organizations [7]. He uses a transport metaphor to identify these five different application types:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;Trains&lt;/em&gt;: stable, robust, standardized, no customizations, lots of users.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Buses&lt;/em&gt;: also relatively stable, but more flexible. Some organizations may choose to own or hire their own buses.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Cars&lt;/em&gt;: much more agile, individualized means of transport. Owners will adapt and configure them.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Scooters&lt;/em&gt;: lightweight, extremely flexible and individual method of transport. They can bring you anywhere and you can even rent them for just a day or so.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;The hub&lt;/em&gt;: connecting the above.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
You need to address each of these application types in a different way. In short: buy standardized solutions for trains and buses. Build apps using an Application Delivery PaaS if you need cars and scooters.
&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
To summarize: 
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;start to believe in an agile enterprise,&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;add a &amp;lsquo;new productivity platform' (an Application Delivery PaaS) to your enterprise architecture,&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;and know what's agile and what's not.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
If you do so, I'm sure the numbers mentioned in the introduction will really start to change!
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
-------------------------------
&lt;/p&gt;
&lt;p&gt;
[1] Booz &amp;amp; Company - 2011 Global Innovation 1000 Study
&lt;/p&gt;
&lt;p&gt;
[2] &amp;quot;In IBM's experience, the 70-80 percent figure is roughly correct; little funding is left for innovation&amp;quot;&amp;nbsp;&lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/invisiblethread/entry/enabling_smarter_decisions?lang=en" target="_blank"&gt;https://www.ibm.com/developerworks/mydeveloperworks/blogs/invisiblethread/entry/enabling_smarter_decisions?lang=en&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
[3] Chaos Report 2010 by the Standish Group
&lt;/p&gt;
&lt;p&gt;
[4] McKinsey Quarterly Dec 2011
&lt;/p&gt;
&lt;p&gt;
[5] John R. Rymer, The New Productivity Platforms: Your Solution To The AD&amp;amp;D Crunch. November 1, 2011. 
&lt;/p&gt;
&lt;p&gt;
[6] Abraham H. Maslow, The Psychology of Science, p. 15, 1966.
&lt;/p&gt;
&lt;p&gt;
[7] Ron Tolido, From Train to Scooter - Five Application Lifecycles That Address Differing IT Dynamics Within Your Organization, 2011.&amp;nbsp;&lt;a target="_blank" href="http://www.capgemini.com/insights-and-resources/by-publication/from-train-to-scooter/" title="From Train to Scooter"&gt;http://www.capgemini.com/insights-and-resources/by-publication/from-train-to-scooter/&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=JbZUgdHsuAU:i8BbizI6Gh0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=JbZUgdHsuAU:i8BbizI6Gh0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=JbZUgdHsuAU:i8BbizI6Gh0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=JbZUgdHsuAU:i8BbizI6Gh0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/JbZUgdHsuAU" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">132@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Enterprise architecture</category>
			<pubDate>Tue, 27 Nov 2012 09:28:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/11/27/3-steps-to-free-your-business-from-the-it-stranglehold-and-vice-versa</feedburner:origLink></item>
		
		
		
		<item>
			<title>The Evolution of PaaS in the Enterprise</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/vgTX_H58fq4/the-evolution-of-paas-in-the-enterprise</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/10/17/the-evolution-of-paas-in-the-enterprise#comm</comments>
                        <description>This morning I was part of a panel at the GigaOM Structure:Europe 2012 conference in Amsterdam., titled: The Evolution of Private PaaS solutions. The abstract:
&lt;blockquote style="margin: 0px 0px 0px 40px; border: medium none; padding: 0px"&gt;
	&lt;p&gt;
	&lt;em&gt;Enterprises are starting to take interest in running PaaS solutions virtually, as app developers want to focus on building apps rather than dealing with infrastructure issues. Enterprises that use PaaS solutions almost always go down the private route. In this session we focus on private PaaS offerings and look at the considerations and what will happen if one day enterprises want to use PaaS solutions in the public cloud.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
The idea was to discuss private vs. public PaaS and, as it was a theme throughout the conference, the differences in adoption rates in the US vs. Europe.&lt;/p&gt;&lt;p align="center"&gt;
You can&amp;nbsp;&lt;a href="http://gigaom.com/cloud/paas-adoption-is-the-same-everywhere-at-least-in-the-u-s-and-europe/" target="_blank" title="Panel about private and public PaaS"&gt;view the full video coverage of the panel at the GigaOM website&lt;/a&gt;. 
&lt;/p&gt;
&lt;p align="center" style="text-align:center;"&gt;&lt;img src="http://static.tridesign.nl/images/gigaom_paas_panel.jpg" style="border:0px solid" title="GigaOM Structure 2012 - PaaS Panel" alt="GigaOM Structure 2012 - PaaS Panel" class="pivot-image" /&gt;&lt;/p&gt;

&lt;p&gt;
Here is &lt;strong&gt;an overview of some statements made during the panel&lt;/strong&gt; to 
highlight some of the discussions (in my own words, so could be biased, 
but you can watch the video to make up your own mind ;) ): 
&lt;/p&gt;
&lt;h3&gt;
Public vs. Private PaaS
&lt;/h3&gt;
Enterprises want PaaS within their own environment, behind their firewall, i.e. Private PaaS.
&lt;p&gt;
Public PaaS is focused on the lowest common denominator, limited to certain framework, database, etc. Private PaaS adapts (can/should adapt) to everything used in the enterprise, any language, framework, database, etc.
&lt;/p&gt;
&lt;p&gt;
In our customer base we roughly see a 50%-50% split between applications deployed on our Public PaaS vs applications deployed on our Private PaaS. It mainly depends on data, integrations, and policies.
&lt;/p&gt;
&lt;p&gt;
Mobile is actually helping public PaaS adoption. It is a new subject, and within such a new space enterprise seem to be more open to new ideas.
&lt;/p&gt;
&lt;h3&gt;PaaS and productivity&lt;/h3&gt;PaaS is a huge enabler for Cloud Computing. PaaS is &amp;quot;clicky-clicky&amp;quot;: development and deployment that took months brought down to minutes.
&lt;/p&gt;
&lt;p&gt;
PaaS is more driven by productivity gains than the need to move to &amp;quot;the cloud&amp;quot;. The business wants a solution for a business problem. Fast. Keep evolving with the changing business. PaaS should cover the complete application lifecycle.
&lt;/p&gt;
&lt;p&gt;
A PaaS covering the application lifecycle in this way requires a new way of thinking. Connected to agile, continuous integration, etc.
&lt;/p&gt;
&lt;p&gt;
PaaS can help to transfer old way of working seamlessly to cloud. It is just a small step.
&lt;/p&gt;
&lt;p&gt;
No, you need to change the way you work. Modularize applications, no application silos.&lt;br /&gt;
If you really want to speed-up. We should also stop programming, start doing MDD.
&lt;/p&gt;
&lt;p&gt;
MDD is possible now... no programming involved perse (also read:&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arent-we-all-doing-model-driven-development-yet" title="Why are we not doing MDD"&gt;Why aren't we all doing Model-Driven Development yet?&lt;/a&gt;).&lt;br /&gt;
Enterprise are adopting it.
&lt;/p&gt;
&lt;p&gt;
PaaS should add a layer of abstraction. It should add a software layer. Key is that it is just the first step. New language constructs will abstract even further.
&lt;/p&gt;
&lt;h3&gt;PaaS and the application lifecycle&lt;/h3&gt;PaaS can bring harmony between operations and development.
&lt;/p&gt;
&lt;p&gt;
The opportunity is even bigger: it can bring all stakeholders in the application delivery process together. Even end-users providing feedback, and business owners collaborating on requirements. The complete application lifecycle should be covered by PaaS. Not only covered, also speed-up.
&lt;/p&gt;
&lt;p&gt;
Even end-users doing app development and deployment?
&lt;/p&gt;
&lt;p&gt;
Back to private vs public. I believe in hybrid. Even if enterprises want to go with private PaaS, they often want to have development and test environments in the public cloud. Once they start using production data in acceptance or actual production they move the app within the premise of the company.
&lt;/p&gt;
&lt;h3&gt;Real-time updates and modularity&lt;/h3&gt;OSGi has been mentioned a couple of times, what is it?&amp;nbsp;&lt;a target="_blank" href="http://www.osgi.org/Main/HomePage" title="OSGi"&gt;A dynamic modularity system for Java&lt;/a&gt;. The only industry standard that enables modularity, currently in the Java space but will become available for different languages.
&lt;/p&gt;
&lt;p&gt;
But... enterprises are not asking for OSGi or these kinds of standards.
&lt;/p&gt;
&lt;p&gt;
No, they do not ask for OSGi specifically. But if an enterprise starts to user your PaaS you will encounter something like this: build first small app fast, in an agile way with a small team.
&lt;/p&gt;
&lt;p&gt;
If they start to build a huge app, i.e. with a lot of functional components, people will start to think about modularisation. If you want to release a new feature you do not want to redeploy the complete app. But only the changed component, and if needed the dependencies of this component. 
&lt;/p&gt;
&lt;p&gt;
Customer ask indeed about real-time updates in PaaS.
&lt;/p&gt;
&lt;p&gt;
Version/configuration management becomes important: what version of my software is running. And what versions of all the components?
&lt;/p&gt;
&lt;h3&gt;Layers&lt;/h3&gt;PaaS is about virtualising away lower layers. However, PaaS can also bring back to the table an understanding (and management of) what an application actually needs with respect to the underlying infrastructure, e.g. data needs to go over the same switch, caching is sensitive for locality, etc.
&lt;/p&gt;
&lt;p&gt;
There is no clear distinction between layers. IaaS and PaaS players are moving into each others space. Amazon started out as IaaS, but nowadays delivers a lot of higher level services that you could categorise as begin part of the platform layer. Microsoft Azure and Google are moving the other way around: from PaaS player to also delivering IaaS.
&lt;/p&gt;
&lt;h3&gt;Is there room for language specific PaaS?&lt;/h3&gt;It depends: if you only have .Net it makes sense to have a .Net specific PaaS. However, most organisations are heterogenous. So you need to support multiple languages.
&lt;/p&gt;
&lt;p&gt;
You see that because we are in a transition, people still use their current methodologies. As PaaS becomes stronger, full stack, there will become PaaSes that focus on one language. That will need a different way to build the application. Because you need advantages like auto-scaling, dealing with locality, etc.
&lt;/p&gt;
&lt;p&gt;
If you really want to change, you need to disrupt. Do not cling to your existing methodologies and languages. I truly believe there is a big opportunity for PaaSes with focused languages.
&lt;/p&gt;
&lt;p&gt;
Forrester defined space within PaaS: new productivity platform. Step to higher level languages. Different roles that build applications.
&lt;/p&gt;
&lt;p&gt;
Platform should run components defined in all kinds of languages.
&lt;/p&gt;
&lt;p&gt;
It depends on how you define PaaS. It is not just a deployment platform. It should also cover the other aspects of the application lifecycle like development and maybe even requirements/feedback management.
&lt;/p&gt;
&lt;p&gt;
If you really want to disrupt the field and make it a lot easier and faster to build applications (that's in the end what businesses are looking for), than you also need to change the way you develop applications not just the way you deploy it.
&lt;/p&gt;
&lt;h3&gt;PaaS adoption in Europe vs. North America&lt;/h3&gt;Interesting thing last 2 years: not really a difference. Everywhere businesses are looking to improve their software delivery. There is no business innovation nowadays without software delivery involved. Businesses want improvement, productivity gains. 
&lt;/p&gt;
&lt;p&gt;
Then the question is will it be a private or public PaaS. We see the same thing in US and Europe: it depends on the kind of data and the kind of company. Banks will probably go for private. But a lot of other companies will go with public PaaS, especially for their customer facing portals.
&lt;/p&gt;
&lt;p&gt;
It all depends on the usecase. Not on region.
&lt;/p&gt;
&lt;p&gt;
PaaS often starts small.
&lt;/p&gt;
&lt;p&gt;
That's an opportunity. We take a week to create a working app for new customers and they have something tangible to show within their own organization.
&lt;/p&gt;
&lt;p&gt;
No difference between Europe and US. Almost all private PaaS.
&lt;/p&gt;
&lt;p&gt;
It seems like we are saying that if you are an enterprise of course you will have private PaaS. That's not true. A lot of big companies are using public PaaS. Of course there are enterprises that go with private PaaS, but it is use case dependent. Not dependent on the size of organizations.
&lt;/p&gt;
&lt;p&gt;
Why do we see so much private PaaS? Well, it could be that if you product supports private PaaS that it is a lot easier to sell that.&lt;br /&gt;
People feel comfortable with private PaaS, that's what they are used too. If they get used to the idea of cloud and see advantages they will move.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vgTX_H58fq4:slI52tmgrus:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vgTX_H58fq4:slI52tmgrus:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vgTX_H58fq4:slI52tmgrus:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vgTX_H58fq4:slI52tmgrus:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/vgTX_H58fq4" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">131@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Wed, 17 Oct 2012 22:33:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/10/17/the-evolution-of-paas-in-the-enterprise</feedburner:origLink></item>
		
		
		
		<item>
			<title>Enterprise Agile: extending the agile process outside development</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/eluu5BUHUxE/enterprise-agile-extending-the-agile-process-outside-development</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/08/10/enterprise-agile-extending-the-agile-process-outside-development#comm</comments>
                        <description>&lt;img src="http://static.tridesign.nl/images/scale_up.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="Scale up!" alt="Scale up!" class="pivot-image" /&gt;I previously wrote about&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics" title="3 characteristics of Enterprise Agile"&gt;Enterprise Agile&lt;/a&gt;, not because I just want to put the &amp;quot;enterprise&amp;quot; moniker in front of everything, but because I think there are some fundamental challenges in moving to agile software development practices within enterprises, as opposed to startups.
&lt;p&gt;
This follow-up post is triggered by the following comment on my&amp;nbsp;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics" title="Enterprise Agile, 3 characteristics"&gt;previous article&lt;/a&gt;&amp;nbsp;about this subject:&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote style="margin: 0px 0px 0px 40px; border: medium none; padding: 0px"&gt;
	&lt;p&gt;
	&lt;em&gt;
	Where we are struggling as an organization is the whole enterprise adopting agile. Sales and marketing expect each release to have a &amp;quot;big splash&amp;quot;. Services hates the rapid iterations since they have a waterfall mindset where you accept a new release every 6 months and spent time chewing on it. I would love some pointers on resources that help move these parts of the value chain to agile. Almost everything I've read focuses on Engineering and Product management and I need to think broader&lt;/em&gt;.
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
I think this is recognizable for a lot of people. I would like to share my recent musing about this subject as I am struggling with the same kind of challenges within a fast growing company.&lt;/p&gt;&lt;h3&gt;Why &amp;quot;Enterprise&amp;quot; Agile?&lt;/h3&gt;
&lt;p&gt;
Being part of a fast growing company starting with a couple of guys in one room to being an international company of more than 125 people has taught me that there is a difference between an agile team in a start-up (or even a bigger company), working in some sort of vacuum, and an agile team operating within the broader context of a bigger company. I think you can imagine what the difference can be with a big enterprise.
&lt;/p&gt;
&lt;h3&gt;What's so different? &lt;/h3&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;Solutions need to be fit in an existing ecosystem:&lt;/em&gt; the definition of done needs to include compliance, data security, data ownership, and integration with existing systems.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Multiple teams work towards a common goal:&lt;/em&gt; there needs to be alignment with (so-called) enterprise disciplines such as portfolio management, enterprise architecture, and strategic reuse.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Agility is only possible when the whole organization adopts the mindset:&lt;/em&gt; in an agile enterprise the marketing and sales side of the organization is balanced with product development. In an agile enterprise the entire business is organized in a way that it can respond quickly to changes in the market. All departments are fully integrated with the overall value stream, there is end-to-end agility.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;
Isn't &amp;quot;Enterprise Agile&amp;quot; moving away from the core principles of Agile? 
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
You mean, does it deteriorate into following the&amp;nbsp;&lt;a href="http://www.halfarsedagilemanifesto.org/" target="_blank" title="Half Arsed Agile Manifesto"&gt;Manifesto for Half-Arsed Agile Software Development&lt;/a&gt;?	That's a fair question. It is definitely easy to end-up with something that's quite different from the core ideas of agile. However, enterprise agile as I see it is not doing that by definition. It is an awareness within development teams for the bigger picture and alignment with enterprise requirements. It is also a mindset change within the whole company as every department within a product company will be affected when product development needs to become &amp;quot;agile&amp;quot;. It is not bending the agile principles to be able to say &amp;quot;we're doing agile&amp;quot; and at the same time trying to keep all existing processes in place.
&lt;/p&gt;
&lt;h3&gt;
What does Enterprise Agile mean for development?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
If you want to extend the agile process outside the development processes, do start by looking at the development processes themselves first. Are they indeed agile? Agile development / releases are only possible with the right infrastructure in place. Think automated testing, incremental changes, agile architecture, automated deployments, focused and autonomous teams, a different (project) management approach, etc. The next step would be to connect the development value stream with &amp;quot;external&amp;quot; elements like business goals, strategy, portfolio management, architecture, training, marketing, sales, services, etc. Let's look at some of the mentioned departments to see how creating an overall agile value stream would affect them.
&lt;/p&gt;
&lt;h3&gt;
What does Enterprise Agile mean for marketing?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
The first thing to do is to make sure marketing understands the value of small, incremental releases. Frequent releases in a steady cadence make it easier for marketing to create their own cadence in messaging, but even more important, it brings value to users as soon as possible. But what if big yearly announcements or events are needed to attract the right press attendance? Well, incremental releases do not forbid that. You can still organize yearly events, issue big press releases, etc. In most cases the group of people being happy with the incremental releases (i.e. your users) are not the main group you target with your press releases.
&lt;/p&gt;
&lt;p&gt;
The second thing to do is to make sure marketing isn't seen as adding some sauce to the cool stuff engineering did come up with. Ideally software development is aimed at working on a set of marketable features. Marketing should be involved in the process even before development starts. Start the process of adding new features by writing the press release first as well as the FAQ. This really helps in defining the minimal set of technology needed to implement the feature. It also helps to integrate development and marketing in one agile process, and to make sure sending a new product release &amp;quot;through marketing&amp;quot; isn't slowing down the process, but just a step in finalizing the things that already have been started.
&lt;/p&gt;
&lt;h3&gt;
What does Enterprise Agile mean for services?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
There are of course quite some similarities with the previous section about marketing. We should again look at awareness for agile within services and involving services in the overall product development process. The comment quoted in the introduction of this article states that services hate rapid iterations. I think they often have good reasons to do so. If each new release leads to a lot of early problems and invokes a process to re-design the way-of-working and how support is done I wouldn't like frequent releases either. That's why I started above by saying that agile development is only possible with the right infrastructure in place. Agile development is not possible if a release can only be used in production after multiple patches spread over a long period. Services should have the trust and confidence to switch to new releases quickly, you have to earn that.
&lt;/p&gt;
&lt;p&gt;
Additionally, services should be involved early-on in the process too. Make sure you listen to their feedback on the product, involve them in early iteration / sprint meetings, and give them the opportunity to start acting on new releases before you actually release. If you work backwards from the press release and user experience to actually starting development (see also previous section about marketing), make sure to involve services to cover aspects like methodology (i.e. way-of-working) and support related stuff. If you issue quality releases including features valuable for your users (and thus services) I am sure services will like frequent releases as much as you do.
&lt;/p&gt;
&lt;h3&gt;
How to start?
&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Approach it in an agile way! Do not start top-down by creating policies, etc. Start with one team, as soon as you have multiple teams &amp;quot;doing&amp;quot; agile you probably need something to coordinate among teams. At this point you probably want to start with&amp;nbsp;&lt;a href="http://www.scrumalliance.org/articles/46-advice-on-conducting-the-scrum-of-scrums-meeting/" target="_blank" title="Scrum-of-Scrum meetings"&gt;Scrum of Scrums meetings&lt;/a&gt;. If your development process within your team is agile, start to widen your definition-of-done. Involve other departments one-by-one and make sure upper management is supporting the move to an overall agile value stream.
&lt;/p&gt;
&lt;h3&gt;
Share your experiences!
&lt;/h3&gt;
&lt;p&gt;
There is a lot more to say about this subject. What is the impact on other departments? What are the requirements from a management and company strategy perspective? I will maybe address these kind of questions in a future article. This article is based on my personal ramblings, not a scientifically tested approach. Please enlighten me by sharing your experiences / thoughts in the comments!
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
Photo by&amp;nbsp;&lt;a target="_blank" href="http://www.flickr.com/photos/matijagrguric/5086091009/"&gt;Matija Grguric&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=eluu5BUHUxE:u_LDL9d0vp4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=eluu5BUHUxE:u_LDL9d0vp4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=eluu5BUHUxE:u_LDL9d0vp4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=eluu5BUHUxE:u_LDL9d0vp4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/eluu5BUHUxE" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">130@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Fri, 10 Aug 2012 17:10:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/08/10/enterprise-agile-extending-the-agile-process-outside-development</feedburner:origLink></item>
		
		
		
		<item>
			<title>7 ways a Platform can fuel the App Economy</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/r1p4XTYOPbc/7-ways-a-platform-can-fuel-the-app-economy</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/06/27/7-ways-a-platform-can-fuel-the-app-economy#comm</comments>
                        <description>&lt;img src="http://static.tridesign.nl/images/fuel.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="Fuel the App Economy" alt="Fuel the App Economy" class="pivot-image" /&gt;Earlier this year a &lt;a href="http://www.technet.org/new-technet-sponsored-study-nearly-500000-app-economy-jobs-in-united-states-february-7-2012/" target="_blank" title="Technet study App Economy"&gt;Technet sponsored study&lt;/a&gt; showed that in February there were roughly 466,000 jobs in the &amp;quot;App Economy&amp;quot; in the United States. This so-called App Economy had zero jobs just 5 years ago, before the iPhone was introduced.
&lt;p&gt;
The term &amp;quot;App Economy&amp;quot; isn't formally defined but is often used to refer to the economy that has been created due to the development and delivery of software applications for smart-phones, tablets, and Facebook.
&lt;/p&gt;
&lt;p&gt;
This App Economy was created by the introduction of new, innovative platforms. I think there are 7 ways a platform can fuel this App Economy. Not just how Facebook and the iPhone did it, but also ways to further expand this economy with new innovations in a platform or Platform-as-a-Service. Although the current App Economy is consumer-oriented, &lt;a href="http://www.mendix.com/" target="_blank" title="Enterprise App Platform"&gt;platforms for enterprise apps&lt;/a&gt; can and should fuel the App Economy in the same ways.
&lt;/p&gt;
&lt;p&gt;
Let's jump into the 7 ways an App Platform can attract users and developers to use and build apps and therefore fuel the App Economy:&lt;/p&gt;&lt;h3&gt;1. A platform should make the delivery of Apps easy&lt;/h3&gt;One of the key success factors of the iPhone (and iPad) is access to great content. Developers can easily publish their apps to users, and users can easily access and &amp;quot;install&amp;quot; these apps. The App Store as a distribution mechanism has proven to be hugely successful. The concept of an App Store is becoming a key element of all successful platforms. Amazon recently introduced the &lt;a href="https://aws.amazon.com/marketplace" target="_blank" title="AWS Marketplace"&gt;AWS Marketplace&lt;/a&gt; and Facebook introduced it's &lt;a target="_blank" href="http://www.facebook.com/appcenter/category/allcategories/" title="Facebook App Center"&gt;App Center&lt;/a&gt; (also aimed at apps for other platforms).
&lt;p&gt;
A platform should make it easy for user to access content by means of an App Store (or marketplace if you like) mechanism. If a platform becomes successful one of the main challenges is to provide users with a way to find the right apps for them.
&lt;/p&gt;
&lt;p&gt;
In addition to making it easy for users to use apps, a platform should also make it easy for developers to deliver apps to users. Most platforms only make the delivery of the client-side (i.e. the user interface) easy via an App Store. I think platforms should go further and provide a way to deliver the full application, including its server-side components easily. This means a platform should also provide deployment options, you should be able to put code in and get an App (i.e. a service) out. In other words a &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion" title="Platform evolves into Platform-as-a-Service"&gt;platform should become a true Platform-as-a-Service&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;2. A platform should attract and bind users with a great user experience&lt;/h3&gt;
&lt;p&gt;
Another success factor of platforms, and again driven by Apple, is the user experience. And not only for consumer apps. The emphasis on beautifully designed consumer products and apps is also driving the, so-called, consumerization of enterprise apps. A great user experience has proven to be a way to quickly build a big user community, and not only a big one, but also a community willing to pay for apps.
&lt;/p&gt;
&lt;p&gt;
The lesson learned? An app platform should foster a great user experience by providing default layouts, guidelines, and of course by setting the baseline in it's own UI. In 2012 this also means making sure apps delivered on the platform are accessible from any device, including smart-phones and tablets (this is of course only applicable if the platform itself isn't an operating system, like iOS on the iPhone and iPad).
&lt;/p&gt;
&lt;h3&gt;3. A platform should contain end-user value itself to create a base community and let developers build on top of that&lt;/h3&gt;
&lt;p&gt;
What comes first? The chicken or the egg? Or, in the context of this article, a user community willing to buy apps, or a developer community willing to build apps?
&lt;/p&gt;
&lt;p&gt;
In case of the iPhone the &amp;quot;platform&amp;quot; contains a lot of value and out-of-the-box killer apps to make it great, even without third-party apps. Facebook was first an app and evolved into a platform for social apps and as an identity manager for virtually any modern web-app out there. Force.com is an app platform mainly for apps (or extensions) of Salesforce.com. These are all examples of platforms that took off around an existing user community.
&lt;/p&gt;
&lt;p&gt;
A platform centered around a killer-app of course also limits the applicability of the platform as the APIs and functionalities are focused on that core capability. Platforms can also be successful without a killer-app, as AWS (Amazon Web Services) and Heroku prove. These platforms are more focused on the infrastructure and deployment parts. Although you could argue that Amazon itself is the killer-app of AWS, there is not really a relation between users of Amazon and users of other apps running on AWS.
&lt;/p&gt;
&lt;p&gt;
The lesson? A killer-app can definitely solve the &amp;quot;chicken-or-egg&amp;quot; problem of platforms. However, don't forget that too much focus on the platform itself or its killer-app often also limits the applicability of the platform.
&lt;/p&gt;
&lt;h3&gt;4. A platform should provide great APIs to foster re-use of multi-tenant platform services and make development easier&lt;/h3&gt;
&lt;p&gt;
As said before, great content is key for a successful app platform. So, make it easy for developers to deliver great content! How? By providing the basic building blocks and templates to lay the foundation for a great app. Make sure developers can focus on the great ideas they have and do not loose any time on &amp;quot;infrastructural&amp;quot; stuff.
&lt;/p&gt;
&lt;p&gt;
Facebook offers for example APIs for authentication, the social graph, and game APIs like achievements and scores. Building a social game means focusing on the game itself, you do not have to develop a social graph and communication channels. iOS offers APIs for UI, media, and network, but also notifications, messaging, a game kit, and in-app puchases, to name a few.
&lt;/p&gt;
&lt;p&gt;
I think platforms can go even further by providing &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/04/27/multi-tenancy-and-model-driven-engineering-necessary-assets-of-a-platform-as-a-service" title="Multi-tenancy and Platform-as-a-Service PaaS"&gt;multi-tenant&lt;/a&gt; cloud services to developers and their Apps. A platform provider can provide these services cost-efficiently and do the difficult work of scaling these services. Examples of such services are deployment / provisioning, storage (like Apple's iCloud), identity management (Facebook being the example), messaging (and other social services), but also higher-level services specific to the type of platform. Think about CRM or HRM services for enterprise apps, or things like Apple's Game Center for game apps.
&lt;/p&gt;
&lt;p&gt;
The more business- or consumer-oriented these services become, the more they move into the direction of a killer app for the platform (as discussed in the previous section) instead of a mere building block.
&lt;/p&gt;
&lt;h3&gt;5. A platform should attract developers with great tools&lt;/h3&gt;
&lt;p&gt;
It is not just the APIs that attract developers to a platform. The tools developers need to build content are as important. These tools also define to a large extend how big the community of developers can become. Just imagine that everybody with a great app idea only had to express that idea with visuals models to make their dream come true. The potential &amp;quot;developer&amp;quot; community could be way bigger than the group of professional programmers. &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="Model-Driven Development MDD"&gt;Model-Driven Development&lt;/a&gt; helps to take a step into this direction.
&lt;/p&gt;
&lt;p&gt;
Aside from the development language, platforms can support developers by providing the right documentation, tutorials, wizards, admin tools, debuggers, analyzers, etc. In the end, developers are users too, and user experience matters.
&lt;/p&gt;
&lt;h3&gt;6. A platform should support and ease the entire application lifecycle to ensure quality and agility of Apps&lt;/h3&gt;
&lt;p&gt;
If a platform really wants to fuel the App Economy it should make sure the content created on top of the platform is valuable. Valuable content, i.e. apps, are apps that align with the needs of users. While user wishes change over time, apps need to change too. Apps need to have a short time-to-market and have to be flexible to evolve along with the changing needs of their users (or: &amp;quot;the business&amp;quot; for enterprise apps). This means the full lifecycle of such apps, from the initial idea to first deployment, and from that first deployment to long-term evolution, needs to be as agile as possible.
&lt;/p&gt;
&lt;p&gt;
In my opinion Application Lifecycle Management (ALM) is key to the success of a platform. Development is just a small part of the application lifecycle. Platforms should also support developers in collaborating with all stakeholders involved in the delivery of the app. Platforms should empower the app delivery team with the deployment and monitoring tools they need. Platforms should help the app delivery team to engage with the users of the app (i.e. feedback management), to be sure to develop the next version of the app into the direction of the user needs. Platforms should support (and ease!) the entire &lt;a target="_blank" href="http://www.infoq.com/articles/app_delivery_as_a_service" title="App delivery as-a-Service ALM PaaS"&gt;app delivery lifecycle&lt;/a&gt; to ensure quality and agility of apps.
&lt;/p&gt;
&lt;h3&gt;7. To stay successful a platform should ensure that users and developers upgrade to the latest version&lt;/h3&gt;
&lt;p&gt;
The lifecycle of the platform itself should be managed too. In the same way as an app created on-top-of the platform evolves, it is important to evolve the platform to stay aligned with the wishes of users and developers. However, how do we make sure we are not creating a fragmentation of platform versions? If we look at iOS and Android we see a huge difference in the adoption rate of new versions: &lt;a href="http://pxldot.com/post/18754186750/ios-ebb-and-flow" target="_blank" title="iOS Android adoption statistics"&gt;iOS 5 captured approximately 75% of all iOS users in the same amount of time it took Gingerbread to get 4% of all Android users&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Fragmentation of platform versions is a bad thing. Users want the most recent features and security updates. Developers want to focus on a single (or maybe a few) platform versions to minimize development, testing, and marketing efforts.
&lt;/p&gt;
&lt;p&gt;
In case of iOS and Android the users decide to upgrade or not. In case of web platforms often the developers can make this decision (i.e. what API version to use). I think we can learn from Apple how to let users upgrade as soon as possible: great marketing, shiny new features, and some gentle reminders. Web platforms should be single-instance if possible, with versioned, backwards-compatible APIs for developers. Developers will have incentives to upgrade to new API and development tools versions if these new versions make their life easier, contain much-needed development features, or contain features that users ask for.
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
In my opinion, these are 7 ways an App Platform can really fuel the App Economy. What are your thoughts? Please share them!
&lt;/p&gt;
&lt;p&gt;
Photo by &lt;a href="http://www.flickr.com/photos/cool3c/5407271418/" target="_blank" title="cool3c"&gt;cool3c&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=r1p4XTYOPbc:QYnmbgpOnac:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=r1p4XTYOPbc:QYnmbgpOnac:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=r1p4XTYOPbc:QYnmbgpOnac:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=r1p4XTYOPbc:QYnmbgpOnac:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/r1p4XTYOPbc" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">129@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Wed, 27 Jun 2012 17:19:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/06/27/7-ways-a-platform-can-fuel-the-app-economy</feedburner:origLink></item>
		
		
		
		<item>
			<title>18 lessons learned during the 6 year roller-coaster ride called Mendix</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/zNH1JqcQ7Cs/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/04/14/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix#comm</comments>
                        <description>&lt;p&gt;
Last week I gave a talk about the lessons learned during the exponential growth of our company the last six years. I was invited to to talk at the &lt;a href="http://www.meetup.com/Appsterdam/events/50712922/" target="_blank" title="Appsterdam meetup Delft"&gt;Appsterdam meetup in Delft&lt;/a&gt; about &amp;quot;growing pains&amp;quot;. In other words: what lessons did we learn when our company grew from 3 to 100 employees. I enjoyed the preparations as much as the actual talk, as it forced me to step back and think about the things we did and did not last years. 
&lt;/p&gt;
&lt;p&gt;
I covered lessons learned in four categories: company, culture, product development, and product evolution. Attempting to cover all these subject automatically means that you stay at a high level. However, I think I was able to share some valuable experiences from the trenches. It will be interesting to dive deeper in the separate categories in the future! 
&lt;/p&gt;
&lt;p&gt;
The slides:&lt;/p&gt;&lt;div style="width:425px" id="__ss_12540672"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a target="_blank" href="http://www.slideshare.net/JohanDenHaan/app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market" title="App Delivery Platform-as-a-Service - How we revolutionized the app development market"&gt;App Delivery Platform-as-a-Service - How we revolutionized the app development market&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse12540672" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2012-04appsterdam-120414133654-phpapp02&amp;stripped_title=app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market&amp;userName=JohanDenHaan" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed name="__sse12540672" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2012-04appsterdam-120414133654-phpapp02&amp;stripped_title=app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market&amp;userName=JohanDenHaan" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a target="_blank" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a target="_blank" href="http://www.slideshare.net/JohanDenHaan"&gt;Johan den Haan&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Do you recognize these lessons? What are your most important lessons learned? If you have questions, don't hesitate to ask them in the comments!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/zNH1JqcQ7Cs" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">128@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Sat, 14 Apr 2012 20:29:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/04/14/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix</feedburner:origLink></item>
		
		
		
		<item>
			<title>Will App Delivery PaaS make cloud more relevant to the business?</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/vKL63UM9wLM/will-app-delivery-paas-make-cloud-more-relevant-to-the-business</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/03/16/will-app-delivery-paas-make-cloud-more-relevant-to-the-business#comm</comments>
                        <description>&lt;p&gt;
I finished my last blog post by &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion" title="App Delivery PaaS"&gt;introducing a Platform-as-a-Service subcategory called &amp;quot;&lt;em&gt;Application Delivery Platform-as-a-Service&lt;/em&gt;&amp;quot;&lt;/a&gt; as a way to distinguish platforms that focus on improving the entire application delivery lifecycle (and not just application development or deployment). I would like to clarify my views on Application Delivery and PaaS a bit more. My first attempt has been published on InfoQ yesterday. 
&lt;/p&gt;
&lt;p&gt;
The short summary: business agility is key, so focus on improving the app delivery lifecycle for maximum business value and cloud will fit in naturally (as well as agile software development, Model-Driven Development, and social collaboration).&lt;/p&gt;&lt;h3&gt;&lt;a href="http://www.infoq.com/articles/app_delivery_as_a_service" target="_blank" title="The Need to Focus on App Delivery Lifecycle in PaaS"&gt;The Need to Focus on App Delivery Lifecycle in PaaS&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
	&lt;em&gt;Cloud is the next best thing since sliced bread, isn't 
	it? It increases responsiveness, gives a business agility, and it 
	enables new business models. Well, it seems not. Nearly three-quarters 
	(74 per cent) of UK IT managers &lt;a href="http://www.computing.co.uk/ctg/news/2123031/cloud-no-relevance-quarters-managers" target="_blank" title="cloud survey"&gt;think that cloud computing has no relevance to their business&lt;/a&gt;.
	Is it fear? Are security and privacy concerns the main barriers for 
	cloud adoption as stems from most related surveys? Or should we ask the 
	CEO instead of the CIO?&lt;/em&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Apparently there is a mismatch between expectations (or 
	promises) around cloud and how a large group of people perceive it. My 
	conclusion? We should just stop talking about cloud. It doesn't help 
	your business, cloud is irrelevant! Let's explore why.&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;a href="http://www.infoq.com/articles/app_delivery_as_a_service" target="_blank" title="App Delivery focus needed in PaaS"&gt;Read the full article&lt;/a&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/vKL63UM9wLM" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">127@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Fri, 16 Mar 2012 18:35:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/03/16/will-app-delivery-paas-make-cloud-more-relevant-to-the-business</feedburner:origLink></item>
		
		
		
		<item>
			<title>Every platform will evolve into a Platform-as-a-Service (and the resulting subcategory explosion)</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/sx2_8ew074M/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion#comm</comments>
                        <description>&lt;p&gt;
&lt;img src="http://static.tridesign.nl/images/service.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="as-a-Service" alt="as-a-Service" class="pivot-image" /&gt;Platform-as-a-Service (PaaS)... I guess you heard this term quite a bit last months. I wrote about PaaS earlier when arguing that &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/04/27/multi-tenancy-and-model-driven-engineering-necessary-assets-of-a-platform-as-a-service" title="Model Driven Engineering and Platform-as-a-Service"&gt;Model-Driven Engineering is essential for the success of a PaaS&lt;/a&gt; and when &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="The Platform-as-a-Service for the Agile Enterprise"&gt;I announced the new major release of our platform&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
If you look at the industry perception of PaaS the main definition is something like: it is a public cloud platform where you put code in and get a service out. This is such a broad perception that it is no surprise that new subcategories are emerging every day. I will contribute to this movement by introducing a new one too...&lt;/p&gt;&lt;h3&gt;PaaS is a fuzzy term, some subcategories &lt;/h3&gt;
&lt;p&gt;
Let's first look at some example PaaS subcategories that have been introduced lately. Gartner, for example, sees a main dinstinction between Application Platform-as-a-Service (aPaaS) and Integration Platform-as-a-Service (iPaaS). I think you can imagine what the focus of each of them is. Gartner defines aPaaS as follows:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;&amp;quot;Highly productive, easy to learn and use development environment that delivers business applications that are customizable, changeable, capable of implementing serious business functionality and, when deployed, offered with massive scalability, high-end enterprise-class (and eyond) performance and reliability, supporting massive amounts of data, all at SMB prices.&amp;quot;&lt;/em&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
One could argue that to deliver enterprise-class applications implementing serious business functionality implies middleware and integration capabilities, but I can see the difference between delivering an application server as-a-Service and an ESB as-a-Service.
&lt;/p&gt;
&lt;p&gt;
Other, more domain-specific, species I stumbled upon recently are pPaaS and bpmPaaS. A Portal Platform-as-a-Service and a Business Process Management Platform-as-a-Service.
&lt;/p&gt;
&lt;p&gt;
I think we can agree on the fact that every type of platform can have a cloud twin and thus result in a PaaS subcategory... 
&lt;/p&gt;
&lt;h3&gt;Let's forget the public cloud as the main requirement for a PaaS &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
However, is being a public cloud platform the main differentiator between a &amp;quot;platform&amp;quot; and a &amp;quot;Platform-as-a-Service&amp;quot;? In my opinion PaaS is all about abstracting (or automating) away from underlying technology layers. You can just start using the services of the platform without bothering about the configuration and maintenance of the underlying infrastructure, operating system, middleware, and runtimes.
&lt;/p&gt;
&lt;p&gt;
It all started with public cloud providers delivering such platforms as a service, but that doesn't mean it is limited to such providers. In my opinion it doesn't matter where the infrastructure is. PaaS can be very usefull too if it runs on-premise or maybe in a hybrid infrastructure approach. Just how I think the open source Infrastructure-as-a-Service software project &lt;a href="http://openstack.org/" target="_blank" title="OpenStack"&gt;OpenStack&lt;/a&gt; will more and more be used in the near future to build private and on-premise cloud infrastructures.
&lt;/p&gt;
&lt;h3&gt;Why every platform will evolve into a PaaS&lt;/h3&gt;
&lt;p&gt;
I think PaaS is another manifestation of what we always strive for in computer science: a clean separation of concerns. Let the platform builders bother about how their platform plays well with the infrastructure, OS, and middleware. Let the users of the platform focus on delivering solutions on top of the platform. There should be a clear contract between de platform and the software running on it, which specifies the language a user can use to define the solution. As IaaS is gaining ground in private datacenters near you, I strongly believe that existing platforms will evolve into a PaaS too. 
&lt;/p&gt;
&lt;h3&gt;Introducing a new subcategory &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
I just don't want to disappoint you by stopping here. I think there are some important things missing in the current industry views on PaaS. If we want to abstract away from the lower level details and move our focus to things like application development we need to go futher than just the development level. What a business needs are apps that perfectly fit in the business. These apps need to have a short time-to-market and have to be flexible to evolve along with the business. This means the full lifecycle of such applications, from the initial idea to first deployment, and from that first deployment to long-term evolution, needs to be as agile as possible.
&lt;/p&gt;
&lt;p&gt;
I don't think we can reach this with traditional development approaches. Why not abstract away from low-level code in the same way as PaaS abstracts away from infrastructure by &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arent-we-all-doing-model-driven-development-yet" title="Why not doing Model Driven Development?"&gt;introducing visual modeling&lt;/a&gt;? And if our focus should be on apps that &lt;em&gt;fit&lt;/em&gt; the business, we need more focus on collaboration &lt;em&gt;with&lt;/em&gt; the business. Hence, we do not only need a development and deployment platform. We also need a social collaboration platform.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Ideally a Platform-as-a-Service should support the &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="PaaS with full application lifecycle support"&gt;full application lifecycle&lt;/a&gt;. It's main goal shouldn't be to support development, it's main goal should be to deliver applications that fit the business. From capturing requirements to developing and deploying apps, as well as gathering end-user feedback.
&lt;/p&gt;
&lt;p&gt;
Hence, my PaaS subcategory input: &lt;strong&gt;Application Delivery Platform-as-a-Service&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Photo by &lt;a href="http://www.flickr.com/photos/25229906@N00/5682477425/" target="_blank" title="Photo"&gt;Robby Virus&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/sx2_8ew074M" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">126@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Thu, 01 Mar 2012 09:44:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion</feedburner:origLink></item>
		
		
		
		<item>
			<title>Blog overview 2011</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/GGIYYgIHy5E/blog-overview-2011</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/01/09/blog-overview-2011#comm</comments>
                        <description>&lt;p&gt;
In good tradition hereby the blog overview of last year. A bit late this time, but for good reasons (see the overview of the month december).
&lt;/p&gt;
&lt;p&gt;
This year I expect to write a bit more. The subjects will stay the same, and as you could sense from the posts of last year my focus will be on all phases of the application lifecycle. So, Model Driven Development will still get attention, but also cloud and Platform-as-a-Service, as well as requirements capturing, social, and agile. As my first (and only) post with video material was the second popular post last year, I will try to post more video content this year.&lt;/p&gt;&lt;h3&gt;Top 10 posts&lt;/h3&gt;
&lt;p&gt;
Based on traffic, these are the top 10 posts in 2011: &amp;nbsp;
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/03/31/5-types-of-model-driven-software-development" title="5 types of Model Driven Software Development"&gt;5 types of Model Driven Software Development&lt;/a&gt; &lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Why there is no future for Model Driven Development"&gt;Why there is no future for Model Driven Development &lt;br /&gt;
	&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/05/06/dsl-development-7-recommendations-for-domain-specific-language-design-based-on-domain-driven-design" title="DSL development: 7 recommendations for Domain Specific Language design based on Domain-Driven Design"&gt;DSL development: 7 recommendations for Domain Specific Language design based on Domain-Driven Design &lt;br /&gt;
	&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/06/25/8-reasons-why-model-driven-development-is-dangerous" title="8 reasons why Model-Driven Development is dangerous"&gt;8 reasons why Model-Driven Development is dangerous&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="Why aren&amp;rsquo;t we all doing Model Driven Development yet"&gt;Why aren't we all doing Model Driven Development yet?&lt;/a&gt; &lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2007/05/15/architecture-a-definition" title="Architecture, a definition"&gt;Architecture, a definition&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="15 reasons why you should start using Model Driven Development"&gt;15 reasons why you should start using Model Driven Development&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/01/15/mde---model-driven-engineering----reference-guide" title="MDE - Model Driven Engineering - reference guide"&gt;MDE - Model Driven Engineering - reference guide&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011" title="Language Workbench Competition 2011"&gt;Language Workbench Competition 2011&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/03/11/what-every-architect-should-now-know-about-the-service-component-architecture-sca" title="What every architect should now know about the Service Component Architecture (SCA)"&gt;What every architect should now know about the Service Component Architecture (SCA)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I didn't take the time of publishing into account when looking at the statistics. So, articles posted more recently are less likely to show up in the top 10, unless they are very popular. From that perspective number 2 is notable.
&lt;/p&gt;
&lt;h3&gt;Top 10 search terms&lt;/h3&gt;
&lt;p&gt;
These are the top 10 search terms people have use when visiting my blog via a search engine:&amp;nbsp; 
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;model driven development&lt;/li&gt;
	&lt;li&gt;model driven engineering&lt;/li&gt;
	&lt;li&gt;enterprise architect&lt;/li&gt;
	&lt;li&gt;architecture vs engineering&lt;/li&gt;
	&lt;li&gt;domain specific language&lt;/li&gt;
	&lt;li&gt;soa framework&lt;/li&gt;
	&lt;li&gt;model driven software development&lt;/li&gt;
	&lt;li&gt;service component architecture&lt;/li&gt;
	&lt;li&gt;architecture definition&lt;/li&gt;
	&lt;li&gt;service identification&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Blog summary for 2011&lt;/h3&gt;
&lt;p&gt;
&lt;strong&gt;January&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/12/interview-on-pattern-based-engineering" title="Interview on Pattern Based Engineering"&gt;Interview on Pattern Based Engineering&lt;/a&gt;: Lee Ackerman, asked me a couple of questions about the use of patterns at Mendix and the relation with Model-Driven Development.&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Why there is no future for Model Driven Development"&gt;Why there is no future for Model Driven Development&lt;/a&gt;: this post was based on a talk I did in Nantes (France) and includes the slides and a full video of my talk. The main message is that we need to focus on all phases in the application lifecycle, not just development. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;February&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/02/22/the-quest-for-business-agility-emergent-architectures" title="The quest for Business Agility: Emergent Architectures"&gt;The quest for Business Agility: Emergent Architectures&lt;/a&gt;: a long article which clearly describes my views on designing, modeling, and building an agile enterprise with help of emergent architectures. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;March&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/03/23/code-generation-2011" title="Code Generation 2011"&gt;Code Generation 2011&lt;/a&gt;: just an announcement of the fishbowl session I organized at the Code Generation conference. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;April&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="Why aren&amp;rsquo;t we all doing Model Driven Development yet"&gt;Why aren't we all doing Model Driven Development yet?&lt;/a&gt; An analysis of the main concerns which prevent people to use MDD. Initiated an interesting discussion. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;May&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011" title="Language Workbench Competition 2011"&gt;Language Workbench Competition 2011&lt;/a&gt;: A lot of new initiatives in the field of language workbenches are arising to facilitate the creation of Domain Specific Languages (DSLs) and their accompanied code generators and IDEs. They all have their own strengths and weaknesses, so a competition to learn about them sound like a great idea back in 2010... and it was! This article describes all tools presented at LWC2011 as well as the opinions of the attendees. A nice overview of DSL tool space! &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;June&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/06/09/making-model-driven-software-development-live-up-to-its-promises" title="Making Model-Driven Software Development live up to its promises"&gt;Making Model-Driven Software Development live up to its promises&lt;/a&gt;: the &amp;quot;sound bites&amp;quot; of the fishbowl discussion I hosted at Code Generation 2011. It was a good discussion on the future of MDD in four sections: marketing, alignment with programming, focus on problem domain, and education.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;July&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="The Platform-as-a-Service for the Agile Enterprise"&gt;The Platform-as-a-Service for the Agile Enterprise&lt;/a&gt;: I shared a bit more about my work this time by describing the new major release of our products. This article perfectly fits in the subjects I normally cover like Model-Driven Development, app development, agile, and cloud. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;August&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/08/24/managing-your-application-landscape-engineered-or-emergent" title="Managing your application landscape: engineered or emergent"&gt;Managing your application landscape: engineered or emergent&lt;/a&gt;: this article was triggered by the Application Landscape Report of Capgemini and defines two different approaches to manage an application landscape. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;September, October&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Well... moving to a new house doesn't leave you with a lot of time...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;November&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics" title="Enterprise Agile: 3 characteristics"&gt;Enterprise Agile: 3 characteristics&lt;/a&gt;: there is a difference between an agile team in a start-up (or enterprise!), working in some sort of vacuum, and an agile team operating within the broader context of an enterprise. This article looks at some characteristics to make the difference more clear. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;December&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="https://twitter.com/#!/JohanDenHaan/status/146324411123900416" title="my first"&gt;My first...&lt;/a&gt; :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Blog overviews of previous years:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/12/27/blog-overview-2010" title="blog overview 2010"&gt;Blog overview 2010&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/12/29/blog-overview-2009" title="blog overview 2009"&gt;Blog overview 2009&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2008/12/29/blog-overview-2008" title="blog overview 2008"&gt;Blog overview 2008 &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/GGIYYgIHy5E" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">125@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Mon, 09 Jan 2012 16:56:00 +0100</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/01/09/blog-overview-2011</feedburner:origLink></item>
		
		
		
	</channel>
</rss>
