Dit artikel, How to cut 70 percent of your IT budget in one year, geeft een mooi voorbeeld van wat voor een impact SAAS kan hebben op een (IT) organisatie. Helaas staan er niet veel details in het verhaal, zodat het niet te controleren is of het allemaal klopt. Volgens de schrijver heeft zijn bedrijf 70% bespaard door software grotendeels als service via het internet te gebruiken. Lees Verder →
Het belangrijkste voordeel van zowel Cloud als Agile als Open Source is volgens mij hetzelfde: Snelheid en time-to-market.
Cloud biedt je de mogelijkheid om zonder langdurige commitment, slechts af te nemen wat je nu nodig hebt. Lange termijn investeringen zijn overbodig. Dit betekent dat de investerings beslissingen die je neemt over veel minder geld gaan. Dit betekent meestal korte besluitvormingstrajecten, en minder bemoeienis van allerlei mensen in de organisatie.
Agile biedt dezelfde korte termijn commitment. Je financiele commitment heeft een scope van een iteratie. Als een iteratie niet oplevert wat je ervan verwacht had, kun je als management (product owner) besluiten om het project te stoppen of om de functionaliteit aan te passen. Het financiele risico wat je loopt als bedrijf is niet veel groter dan de investering van 1 of maximaal een paar iteraties. Tegelijkertijd heb je ook veel sneller werkende software waarmee je gebruikers aan de slag kunnen.
Open Source is veelal gratis. Je kunt de software testen en indien het geschikt is kun je het snel inzetten. Een langdurig koop traject, inclusief prijsonderhandelingen is vaak overbodig. Minder mensen zijn betrokken bij de besluitvorming rondom de aanschaf. Samenwerking met de afdeling inkoop is vaak niet eens nodig. Dit biedt bedrijven weer de mogelijkheid om sneller te handelen.
Door Cloud, Agile en Open Source te combineren kunnen bedrijven veel sneller handelen.
Een project leider is verantwoordelijk voor de succesvolle uitvoering van een project. Hierbij is succes meestal gedefinieerd als op tijd, binnen budget, en met alle van te voren afgesproken eigenschappen.
Een Scrum Product Owner is ook verantwoordelijk voor de succesvolle uitvoering van een project. Hij stuurt een team aan, bepaalt de benodigde eigenschappen van het eindproduct, bepaalt de volgorde waarin wensen gerealiseerd worden, en hij bepaalt wanneer en hoeveel wensen er opgeleverd worden.
Het verschil tussen een product owner en project manager is de manier waarop hij het project managed.
Uitgangspunt van scrum is dat er bij ieder project veel zaken onbekend of onvoorspelbaar zijn. Wensen kunnen onbekend zijn, productiviteit van het team is onzeker, technische uitdagingen kunnen onbekend zijn. Door deze onzekerheid is het onmogelijk om van te voren een plan te maken wat een nauwkeurige voorspelling doet over tijd, budget en opgeleverde eigenschappen.
Een product owner managed een project door zich te verdiepen in de wensen van de gebruikers. Wat hebben de gebruikers nodig? Hij zorgt ervoor dat de belangrijkste aspecten het eerst gerealiseerd worden. Als niet precies bekend is wat gebruikers nodig hebben, of hoe lang het duurt op dit te realiseren is het zaak om te prioriteren.
“Heeft een scrum project een project leider nodig?”
Ja, een scrum project heeft een project leider. De product owner is de project leider.
Originele post: A Product Owner is a Project Manager.
Ron Roozendaal heeft deze stelling bij de keynote van het LAC 2011 gepositioneerd. Als voorbeeld noemde hij dat IT architecten minder serieus in organisaties worden ontvangen dan bijvoorbeeld een consultant of adviseur. Ook ik krijg dit terug in mijn gesprekken met de interne klant (afdelingen zoals P&O, Communicatie, Financiën en uitvoerende afdelingen). In de uitvoering van mijn rollen, deze variëren van Business Architect, Business Analist, Proces Analist, e.d., probeer ik veel aansluiting te hebben bij de interne klant. Juist door mijzelf niet als architect te positioneren geven de medewerkers van deze organisatieonderdelen terug dat zij architecten als belerend, weerbarstig en vervelend ervaren. Mijn mening wordt gedeeld door mijn collega Tim Pinchetti. Hij heeft in augustus 2011, vanuit een ander perspectief, een blog ‘What’s in a name anyway’ opgesteld.
Er zijn hiervoor een aantal redenen te bedenken:
- Door principes, uitgangspunten en consequenties te beschrijven wordt een kader geboden waarmee het strategisch, tactisch en operationeel management de organisatie kan besturen en te richten
- Complexe vraagstukken worden geanalyseerd en vereenvoudigd. Wij brengen relaties in onderdelen aan en creëren hiermee een overzicht en generieke componenten
- Wij zijn bruggenbouwers tussen een techniekgedreven afdeling (IT) en de interne/externe klant
- De titel Architect is wettelijk beschermd.
Door het opstellen van principes, uitgangspunten en consequenties wordt er een kader gemaakt waarmee het management tot wel overwogen beslissingen kan komen. Dit kader wordt logischerwijs ook met het management doorgesproken, vastgesteld en desgewenst aangepast. Er wordt hiermee een overduidelijke adviesrol vervuld.
Leon de Caluwé heeft, gezamenlijk met Elsbeth Reitsma, een onderzoek gepleegd naar de competenties van adviseurs. Hierin zijn een aantal basiscompetenties naar voren gekomen. Deze zijn:
- Veerkracht tonen: flexibel zijn
- Analyseren: analytisch, conceptueel denken, lerende oriëntatie en creativiteit
- Beschouwen: oordeelsvorming, omgevingsbewustzijn en visie ontwikkelen
- Faciliteren: luisteren en sensitiviteit
- Beïnvloeden: communiceren, optreden en overtuigingskracht
- Vertrouwen wekken: integriteit, betrouwbaarheid, loyaliteit en gunstige sfeer creëren.
Deze competenties zijn van toepassing op onszelf (Business -, IT -, Solution Architecten).
Dit maakt de stelling van architect naar adviseur sterker. In ons takenpakket vervullen wij zeer veel adviestaken. Wij luisteren nadrukkelijk naar de vraagstukken bij onze interne/externe klant. Deze vraagstukken richten zich veelal op hoe automatisering kan ondersteunen in de bedrijfsvoering van de organisatie. Hierin geven wij aan onze klant een advies, gestoeld vanuit het kader aan principes en uitgangspunten.
De bescherming van de titel van architect is wettelijk bepaald. Wet op de architectentitel voorziet hierin. Deze is sinds 1987 actief en op 25 maart 2010 is deze wet wel aangepast waardoor er middels de toevoeging van Business en/of IT wel door informatici gebruik gemaakt kan worden van de titel van Business Architect, IT Architect en Solution Architect. We zullen echter wel in al onze gesprekken expliciet deze toevoeging moeten gebruiken. Indien wij onzelf alleen architect benoemen dan is dat in strijd met de wet en kan daar een boete tegenover staan.
Als Business Architect beschikken wij over dezelfde basiscompetenties die een adviseur heeft. Wij ondersteunen het management om vanuit architectuur perspectief de organisatie te richten en te besturen waarbij automatisering zo optimaal en toekomstvast als mogelijk wordt ingezet. Daarnaast worden we niet geconfronteerd met boetes die wettelijk opgelegd kunnen worden omdat ik door onoplettendheid verkeerd gebruik heb gemaakt van de titel architect.
Deze argumentatie zorgt ervoor dat de voorkeur gegeven wordt aan een titel van adviseur, desgewenst IT adviseur. Dit is ook voor anderen makkelijk, eenvoudig en duidelijk.
The next web linked to a really interesting presentation by Amazon’s CTO: Amazon’s CTO: “Amazon is a technology company. We just happen to do retail”.
Lots of interesting information here:
- Scrum & Agile – small teams, fast innovation, all teams are customer focussed. How to scale.
- Architecture – what’s important when architecting large scale applications. Ideas behind doing SOA
- Cloud – impact of cloud on enterprise software development
- Business – lots of companies are transforming into IT companies, even if they don’t see this yet. This causes problems because they should put the best possible people on their most important assets: software
- Operations – No separate operations department. You build it, you run it.
Werner Vogels: Amazon and the Lean Cloud from HackFwd on Vimeo.
Original post: Werner Vogels on Amazon Cloud.
Over-dependence on them notwithstanding, standards are generally a good thing. Industry standards maybe even more so, considering how they will provide a better fit for your organization. So with the never-ending pressure on governments to ‘do more with less’, it is a good thing that there is such a thing as NORA, the reference architecture for Dutch government.
Of course, standards, reference architectures not excluded, need to move with the times. Lees Verder →
A while ago I wrote a bit about business alignment and strategy. I got quite a few reactions on that one, in comments or through other media. Of course, I didn’t exactly moderate my statements, so I suppose I was asking for it. But I felt I needed to write a more thorough reply to all those comments than what I cooked up so far.
The gist of the previous post was supposed to be this: ideally, all parts of an organization should strive to achieve the same goals, the same strategy. Any part of an organization has a … well, a part to play in that strategy, and also has no goals other than playing this part (remember, ideally). Sure, there’s some wiggle room in how you fill in this role. Allowing for more than this bit of wiggle room implies that there’s room for other parts to play. And that’s exactly what ‘business alignment’ implies – that any part of an organization has its own separate direction which needs to be ‘aligned’ with that of an organization.
Of course, as I was rightly called out for, my little sketch of an ideal world was just that – an ideal. In reality, there are often many ‘strategies’ in any organization. The way strategy is often portrayed in organizations doesn’t really help. At my work at IT-eye, we often encounter what we tend to call ‘the smiley’: an organization with a bunch of long-term goals, a lot of short-term goals, but fairly little to link the two. These short-term goals often include pet projects, well-intentioned improvement efforts, ideas for which there was no room in the previous year’s budget. Mostly, goals that are on there not because they fit the strategy, but because they fit the preconception of the people drafting these plans.
So when you start an alignment effort by somehow taking that department or business unit-level ‘strategy’ and trying to ‘force’ it in the right direction (f.e. by executing those strategies ‘under an architecture’), you’ve pretty much already lost. An architecture can’t ‘align’ what is inherently ‘unaligned’ (incidentally, that’s why at IT-eye we developed our STAP methodology – it ensures that this kind of thing doesn’t happen).
The solution to this isn’t in forming up some sort of process that should guarantee business alignment – not, at least, in a form of architecture. It is in looking at the process of how these ‘strategies’ – year plans, most likely – are drafted. In essence – we prefer to prevent, rather than cure.
In an Agile environment we try to creat “just enough documentation” and “just enough architecture”. To achieve this we need our source code to become a part of the documentation.
At this point most developers will jump in the air and all others will go “oooh NO”. The reason why we have such reactions is because developers think they don’t need to do anything and all others think the code is not readable. I must say that in the past the last argument was pretty much true, but all of this has changed or it needs to change fast.
Developers need to start creating more clean and readable code. The first reason why they need to do this is because the code gets better and is easier to maintain. The second reason is Developers need to be aware that the source code is part of the documentation, because they are not the only ones that need to be able to read it. But it’s not only the Developers that need to change, others in the project need to accept that the source code is a part of the documentation as well.
There are enough books, tips and principles to achieve this clean and readable code, some examples SOLID principles, Clean Code, Boy scout rule. To show what I mean here is an example.
Bad example, we can all conclude that this peace of code is not easy to read.
@Override
public void onCreate(Bundle savedInstanceState)
{
context = getApplicationContext();
// TODO: check for incoming intent?
intentValue = null;
checkForIntent(getIntent());
super.onCreate(savedInstanceState);
properties = PreferenceManager.getDefaultSharedPreferences(Beta_SMS.this);
// Check if the account is valid, if not open the wizard (should happen only the first time you open the app
if (!Utils.checkForValidAccount(properties))
{
startActivity(new Intent(this, Wizard.class));
}
// Set the view
Log.d(Const.TAG_MAIN, "Creating the view and the rest of the GUI.");
super.onCreate(savedInstanceState);
//allow custom title
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.betasms);
//set custom title
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
txtTitleSaldoValue = (TextView) findViewById(R.id.txtTitleSaldoValue);
txtTitleSaldo = (TextView) findViewById(R.id.txtTitleSaldo);
//show providers
providers = getResources().getStringArray(R.array.providers);
//get the rest of the ui components
to = (AutoCompleteTextView) findViewById(R.id.txtTo);
txtTextCount = (TextView) findViewById(R.id.txtTextCount);
txtSmsText = (EditText) findViewById(R.id.txtSmsText);
send = (Button) findViewById(R.id.btnSend);
contact = (Button) findViewById(R.id.btnContact);
// get the balance
showBalance();
txtSmsText.addTextChangedListener(new SmsTextCounter(txtTextCount));
if (intentValue != null)
{
to.setText(intentValue);
}
// auto complete contacts, show all phones
phoneHandler = new PhonesHandler();
to.setAdapter(phoneHandler.getContactsPhonesListAdapter(getContentResolver(), this));
// Set the intent for selecting the contact
intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
// When taped it will fire up an intent for showing Contacts,
// when a contact is selected it will return and fire up
// onActivityResult function
contact.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Log.d(Const.TAG_MAIN, "Double taped, show contacts");
startActivityForResult(intent, Const.PICK_CONTACT);
}
});
// when send clicked
send.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
onSend();
}
});
// set focus on the sms text field
txtSmsText.requestFocus();
}
Good example, I hope we all agree when I say that this code is easy to read and to follow.
@Override
public void onCreate(Bundle savedInstanceState)
{
Log.d(Const.TAG_MAIN, "Starting the application");
// set context to a helper class
ApplicationContextHelper.setContext(getApplicationContext());
super.onCreate(savedInstanceState);
setBroadcastReceiver();
loadProperties();
validateAcount();
setView();
assignUiComponentsToVariables();
showBalance();
checkIntent(getIntent());
setListeners();
// set focus on the sms text field
txtSmsText.requestFocus();
}
Both the first and the second example do exactly the same but the second one can be understood in seconds where the first one first needs to be interpreted. In the second example I left the “detailed” code out on purpose because it is not about the detailed code. When we talk about documentation we want to know more about the flow and the relations not the details. If done correctly the details should already be tested and can be reviewed by looking at the test cases.
The Future of Agile. … agile methods are more popular than ever. But what’s next? How do we get agile past having a few Scrum teams within an organisation? These are some of the questions asked in the invition to Agile Open Holland.
How do you scale Agile?
Amazon seems to have the answer. Yesterday I linked to a presentation of Werner Vogels talking about the reason Amazon does cloud. In this presentation he mentions that Amazon has hundreds of small teams working on services. All these teams deliver customer value. They are end-customer focussed.
It looks like Amazon has figured out how to scale Agile. The key ingredient here is architecture. They’ve split up all their functionality into services that can be created, maintained, and managed pretty independently. You need a good architecture that will tell you how to divide your system into smaller parts that can be created by small independent teams.
Architecture is the key to scaling Agile.
Original post: Architecture – the key to scaling Agile.
In my experience the Product Owner is the most underestimated rol in Scrum. I think it’s also the root cause of many problematic Scrum implementations.
Every Scrum implementation should start with the Product Owner. You should be very clear about the responsibility of the Product Owner:
- The product owner is responsible for the success of the product.
- The product owner is responsible for the long term vision of a product.
- The product owner is responsible for the release planning.
- The product owner is responsible for enabling a scrum team to implement the product.
This means that a product owner is much more than a user story writer. Most Product Owners i’ve met so far are requirements analysts with a new title. They are not empowered to sort the backlog, they are not empowered to learn from feedback and improve user stories.
If you are about to start with Scrum, start with the product owner. This will be hard enough, as many companies do not have a rol or person responsible for the succes of their products.
Original post: Scrum – It all starts with the Product Owner.