We love SMS!
We love SMS!
We love SMS!
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
ord<br />
onfirmation<br />
rdering<br />
ord<br />
<strong>We</strong> <strong>love</strong> <strong>SMS</strong>!<br />
<strong>SMS</strong> - simply the world’s most effective communication method<br />
nfirmation<br />
Warnings<br />
Voting<br />
Donation<br />
15 years’ experience<br />
13 APIs for easy integration<br />
<strong>SMS</strong> wholesale worldwide<br />
Dispatch of about 700,000 <strong>SMS</strong> per day<br />
Online monitoring of all events worldwide 24/7<br />
Business customers in more than 100 countries<br />
Direct third-line support to our developers<br />
Single point of contact for worldwide <strong>SMS</strong> distribution<br />
Booking<br />
Voting<br />
Reminders<br />
Donation<br />
Rabekkgata 9, Moss - Norway<br />
Password<br />
sales@vianett.no l +47 69 20 69 20<br />
Verifying<br />
Love <strong>SMS</strong><br />
Verifying<br />
Reminders<br />
HLR<br />
Marketing<br />
HLR<br />
For more information:<br />
www.vianett.com<br />
<strong>SMS</strong><br />
Billing<br />
Survey<br />
Returadresse: ProgramUtvikling AS. Postboks 1, 1330 Fornebu<br />
<strong>SMS</strong><br />
Billing<br />
Marketing<br />
Password<br />
Survey<br />
Payment<br />
MMS<br />
MMS<br />
Positioning Voting<br />
Positioning Voting<br />
No 1/2013<br />
The DeveloPer<br />
Mobile<br />
marketing<br />
NEWS AND INFORMATION FOR DEVELOPERS AND LEADERS<br />
Loyalty Club<br />
SCroLLInG BotH WAyS<br />
Loyalty Club<br />
Merge<br />
<strong>SMS</strong><br />
Winrt for the ioS developer<br />
By Iris Classon<br />
Page 8<br />
Mobile<br />
marketing<br />
Merge<br />
<strong>SMS</strong><br />
coffeeScriPt<br />
By Jøran Lillesand and Eirik Lied<br />
Page 4<br />
tranSitioning<br />
SucceSSfully<br />
from the it SiDe<br />
to BuSineSS<br />
By Howard Podeswa<br />
Page 20<br />
1
The DeveloPer N o 1 2013<br />
Curiosity<br />
the forgotten motivational factor in development<br />
From the time of birth, curiosity drives a child’s learning and development. From<br />
realizing that you cannot eat stones, that a Barbie’s hair won’t grow out if cut, that<br />
tiny bits of Legos can create houses, and that things will burn if set on fi re. Oh wait,<br />
the last one maybe was just me. <strong>We</strong> were unaware of comfort zones, not yet as<br />
affected by social inertia and with dissonance reducing skills not yet drilled in.<br />
Curiosity, if allowed to, was a strong driving factor behind our development then.<br />
But at some point we decide<br />
that we are grown-ups. And for<br />
the record that is a myth – growing<br />
up – I’ve never seen any<br />
proof. And when in that fi ctive<br />
state we have decided that we<br />
know it all, and questions and<br />
curiosity is not that welcome<br />
anymore- it’s rather an annoying<br />
and childish trait. Children<br />
ask, grown-ups answer. Unfortunately, as a new developer,<br />
I see this every day. Questions are often considered<br />
as a result of lacking knowledge, and lacking knowledge<br />
as a result of being an unskilled programmer. For both<br />
sides the immediate solution to reduce those feelings of<br />
uneasiness (dissonance) would be not to ask, and not to<br />
reply. Both asking and replying ads a risk, and risks are<br />
unwelcome in comfort zones.<br />
But wait – hold on. Why should we even care?<br />
Because there is no denial that motivation is what gets<br />
us moving, and when you stop moving you die. Not a lot,<br />
but little, by little, each day. Until you’ve stood still for so<br />
long the world has forgotten you, even you. Motivation<br />
starts and stops behavior – starts and stops personal<br />
development. It’s what drives you. You might want a challenge,<br />
or control, explore, or interact with others. Or you<br />
want answers. And for development lack of motivation is<br />
the number one reason for failure for projects. Just as inner<br />
motivational factors such as curiosity are the new<br />
emerging motivational factors among developers- a<br />
sense of meaning, belonging and personal development.<br />
The motivational factor I fi nd that we ignore the most,<br />
and the one that nurtured our development as children so<br />
amazingly well, is curiosity. It has a lot to do with comfort<br />
zones and perceived risk and as a result anticipated<br />
feelings of unease.<br />
But innovators ask questions. During an interview with<br />
Time CEO of Google Eric Schmidt explained the company<br />
philosophy very well in this one sentence:<br />
“<strong>We</strong> run the company by questions, not by answers “<br />
Questions, even when poorly formulated, are still rather<br />
good indications that a person is seeking knowledge,<br />
does not make assumptions and is willingly running the<br />
risk of being unfairly judged by that action because he or<br />
she sees the benefi t of learning something new. Innovators<br />
do ask questions. And our job, by nature, is all about<br />
innovation, and all about questions, and asking the right<br />
ones.<br />
As Euripides said so wisely in one of his famous plays<br />
480-406 BC<br />
“Question everything. Learn something. Answer nothing.”<br />
now often translated to “Question everything,<br />
assume nothing”<br />
Somehow it makes sense, with all the benefi ts proven in<br />
regards to curiosity, to embrace that childish trait and let<br />
it, as it did for so many years so well, continue to drive<br />
our learning and development. You see it so well in students<br />
and new programmers, let’s never put a stop to<br />
that by shutting down a question.<br />
The number one advice I was given, and when asking<br />
thousands of developers the number one advice you all<br />
gave to new developers, was<br />
Don’t be afraid to ask<br />
The question is, are we following our own advice?<br />
Iris Classon<br />
<strong>SMS</strong> wholesale worldwide<br />
Mobile payment in Scandinavia<br />
100 % number portability<br />
Business customers in more<br />
than 100 countries<br />
Posisjonering<br />
Contents<br />
ARTICLES<br />
CoffeeScript ......................................................................................................................... p. 4<br />
Scrolling both ways ...................................................................................................... p.8<br />
Programming: from to hard to too easy .................................p. 14<br />
Social architecture for Managers ................................................... p. 16<br />
Transitioning successfully from the IT side<br />
to business ........................................................................................................................... p. 20<br />
Be a driven product owner ......................................................................... p. 26<br />
Stop declaring victory too soon ....................................................... p. 30<br />
No 3/2012<br />
The DEvElOPER<br />
jAvAZONE SPECiAl EDiTiON FOR DEVELOPERS AND LEADERS<br />
yoU’Re DoIngweb<br />
applIcaTIons wRong<br />
by bodil stokke<br />
page 14<br />
-<br />
1<br />
13 different APIs for simple integration of <strong>SMS</strong> solutions<br />
<strong>SMS</strong> with reply to mail groups<br />
Full online statistics on all <strong>SMS</strong> deliveries<br />
Merge and send personal <strong>SMS</strong> to thousands of recipients instantly<br />
In our world, lessonsit´s leaRneD about getting<br />
poRTIng woRDFeUD<br />
important To wInDows things 8to<br />
happen faster!<br />
by Jonas Follesø and gøran hansen<br />
Talk to us about <strong>SMS</strong>!<br />
page 36<br />
<strong>SMS</strong> - the world´s most effective communication method<br />
Trond arve eivind barstad<br />
For a demo account send “demo” to 1963 or send us an email: sales@vianett.com<br />
wasskog waaler<br />
15 years experience<br />
For mer informasjon:<br />
13 APIs for easy integration<br />
ViaNett AS<br />
Rabekkgata 9 1523 Moss<br />
www.vianett.no<br />
<strong>SMS</strong> wholesale worldwide<br />
Dispatch of about 700.000 <strong>SMS</strong> per day<br />
Developer_3_JavaZone_2012.indd<br />
Online monitoring of all events worldwide 24/7<br />
Business customers in more than 100 countries<br />
Timothy perrett anders karlsen brendan mcadams<br />
Posisjonering<br />
Publisher: Norwegian Developers Conference AS<br />
By Programutvikling AS and DeveloperFocus Ltd<br />
Organisation no.: 996 162 060<br />
Editor: Kjersti Sandberg<br />
Address: Martin Linges vei 17-25, 1367 Snarøya, Norway<br />
Phone: +47 67 10 65 65<br />
E-mail: info@programutvikling.no<br />
Member of Den Norske Fagpresses Forening<br />
Password<br />
Ordering<br />
Password<br />
Confirmation<br />
Confirmation<br />
Ordering<br />
Ordering<br />
Voting<br />
Ordering<br />
Voting<br />
Donation<br />
Password<br />
Donation<br />
Password<br />
Verifying<br />
Booking<br />
Verifying<br />
Booking<br />
HLR<br />
<strong>SMS</strong><br />
Billing<br />
Marketing<br />
<strong>SMS</strong><br />
Billing<br />
Marketing<br />
Rabekkgata 9, Moss - Norway For more information:<br />
sales@vianett.no l +47 69 20 69 20 www.vianett.no<br />
HLR<br />
aDapTIve<br />
web DesIgn:<br />
the key to a more flexible front end<br />
by chris mills<br />
page 40<br />
Survey<br />
Payment<br />
Survey<br />
Payment<br />
MMS<br />
MMS<br />
Positioning Voting<br />
Positioning Voting<br />
No 4/2012<br />
The DEVELOPER<br />
Mobile<br />
marketing<br />
NEWS AND INFORMATION FOR DEVELOPERS AND LEADERS<br />
Loyalty Club<br />
EXPLORING FUNCTIONAL<br />
Merge<br />
<strong>SMS</strong><br />
PROGRAMMING<br />
By Venkat Subramaniam<br />
Page 16<br />
DEMONS MAY<br />
FLY OUT OF<br />
YOUR NOSE<br />
By Olve Mauldal<br />
Mobile<br />
marketing<br />
Page 10<br />
Loyalty Club<br />
Merge<br />
<strong>SMS</strong><br />
CYNEFIN FOR<br />
DEVELOPERS<br />
By Liz Keogh<br />
Page 6<br />
WHY YOU SHOULD CARE<br />
ABOUT FUNCTIONAL PROGRAMMING<br />
By Neal Ford<br />
Page 4<br />
1<br />
Writing ambitious webapps with Ember.js ...................... p. 36<br />
Geo-spatial searches with RavenDB ........................................ p. 34<br />
COURSES<br />
Course descriptions ........................................................................................... p. 41<br />
A unique course provider! ......................................................................... p. 54<br />
Course overview Oslo ........................................................................................ p. 56<br />
Course overview London .............................................................................. p. 58<br />
Publication schedule 2013:<br />
19. April, 15. August, 15. November<br />
Cover photo: Anna Sigvardsson<br />
Uncredited photos are from Shutterstock, except portraits.<br />
Print run: 13,000<br />
Print: Merkur Trykk AS<br />
NORDIC ECOLABEL<br />
241 Printing company 672<br />
Advertise in The Developer<br />
and meet your target group!<br />
For more information about advertisement, please contact Henriette Holmen<br />
at 976 07 456 or henriette.holmen@programutvikling.no<br />
3
4<br />
By Jøran Lillesand and Eirik Lied<br />
JavaScript is gaining ever more popularity. New frameworks are<br />
popping up right and left and single page apps are emerging as a<br />
standard on the web. However, a lot of developers still struggle to<br />
do The Right Thing in JavaScript. So much so, that the book<br />
JavaScript: The Good Parts, on how to use (or more importantly how<br />
not to use) JavaScript, is regarded as a must-read for developers<br />
getting acquainted with the language.<br />
So, what happened? How did we end up with a "language of the web"<br />
which is widely regarded to be, plainly put, a rather quirky language?<br />
At the time of Javascript's creation, there was quite a lot<br />
of hype surrounding Java in the browser (really!). Java-<br />
Script's designer, Brendan Eich of Netscape, was ordered<br />
to create a scripting language adapted for the browser<br />
based on LiveScript – and to make it "Javaish." And that's<br />
how we ended up with a language intended for simple webscripting,<br />
which today is used in large mission-critical applications.<br />
It kinda looks like Java. At the same time, it is<br />
nothing like Java.<br />
Enter CoffeeScript. CoffeeScript is one of several languages<br />
to emerge the recent years that compile into<br />
JavaScript. CoffeeScript lends features and syntax from<br />
popular languages such as Python and Ruby, giving programmers<br />
the opportunity to write more concise and expressive<br />
code.<br />
WHy uSE CoffEESCrIPt?<br />
The prime benefit when choosing CoffeeScript over<br />
JavaScript is the expressive syntax. CoffeeScript provides<br />
a large collection of neat features that allows us to<br />
write code focusing on what we want to achieve, rather<br />
than how we want to achieve it. The result is code that is<br />
easier to both read and write.<br />
CoffeeScript compiles to plain old JavaScript. This means<br />
that it seamlessly works with jQuery, Backbone.js, Underscore.js,<br />
as well as the existing JavaScript code in your<br />
project. Introducing CoffeeScript to an existing JavaScript<br />
codebase is completely viable.<br />
The CoffeeScript compiler produce pretty-printed<br />
JavaScript that pass through the JavaScript lint syntax<br />
checker and validator. This means that the output produced<br />
by CoffeeScript is likely to behave identically across<br />
different browsers and browser versions. This again helps<br />
avoiding those annoying bugs caused by misplaced semicolons,<br />
array iteration, accidental global scoping and so on.<br />
WHAt'S GrEAt ABout CoffEESCrIPt?<br />
Finally, time for some code! The following sections show<br />
a few of the features CoffeeScript brings to the table.<br />
It's JavaScript<br />
Since CoffeeScript compiles down to fully readable<br />
JavaScript, calling other JavaScript code is easy. Here's<br />
an example using jQuery:<br />
readability<br />
Like Java, JavaScript is a verbose language with all its parentheses<br />
and curly braces. This tends to affect the conciseness<br />
and readability of the code. CoffeeScript uses<br />
signifi cant indentation, which removes a lot of unnecessary<br />
characters. Just look at the following JavaScript code:<br />
In CoffeeScript the same can be written as:<br />
The CoffeeScript code has less noise and makes it easier<br />
to see what's going – at least once you get used to the<br />
syntax.<br />
Automatic scoping of variables<br />
One thing that new JavaScript developers often struggle<br />
with is scoping. Consider the code below:<br />
When running the function myFunc , the variable name is<br />
modifi ed in the global scope as it was not declared using<br />
the var keyword.<br />
The CoffeeScript compiler makes sure that all your variables<br />
are properly declared within lexical scope. This way,<br />
you never have to write var yourself.<br />
5
If you want to assign variables to the global scope in<br />
CoffeeScript, you will have to do so explicitly.<br />
Suffi xable operators<br />
CoffeeScript lets you suffi x if and unless operators<br />
so that logical expressions can be read much like regular<br />
sentences.<br />
Comprehensions<br />
Looping over an array or an object's properties is fundamental<br />
in almost any language, and enhancing it really improves<br />
expressiveness. In regular JavaScript you would<br />
typically use an old fashioned for-loop. Underscore.js and<br />
jQuery offer functions that can improve the syntax quite a<br />
bit, but you still end up with parentheses and curly braces<br />
all over the place. CoffeeScript has looping with comprehensions<br />
built into the language.<br />
Consider the JavaScript code below, where we loop through<br />
an array and extract the names of cars with a high rating.<br />
This is one of the places CoffeeScript really shines. Note<br />
how the concise code allows us to focus on what we want<br />
to achieve, instead of array semantics.<br />
(Almost) everything is an expression<br />
Almost everything you write in CoffeeScript can return<br />
something. This is true for loops, if statements, switch<br />
case statements – and almost anything else. Consider, for<br />
example, the following.<br />
Block strings<br />
Most programmers who have tried putting HTML templates<br />
inside their JavaScript fi les know how tedious this<br />
can be. Block strings allow you to easily create large, multiline<br />
strings that preserve line breaks and formatting.<br />
Classes<br />
Using object orientation based on prototypes in JavaScript<br />
can be cumbersome. CoffeeScript makes it way easier. Using<br />
the class keyword we can easily create classes and<br />
inheritance.<br />
MAturIty<br />
Over the last few years, CoffeeScript has gained a strong<br />
momentum. 25% of more than 2700 respondents in the<br />
annual JavaScript Developer Survey claim to use Coffee-<br />
Script.<br />
The Ruby on Rails community has embraced CoffeeScript<br />
as the way forward for client side code, where it has been<br />
integrated as a part of the framework for over a year. Furthermore,<br />
high traffi c sites such as GitHub uses Coffee-<br />
Script for all new JavaScript development.<br />
In Norway, both of our projects in different parts of Posten<br />
Norge allow and encourage CoffeeScript as client code<br />
language.<br />
In terms of adoption and maturity, you will not be alone in<br />
using CoffeeScript for your production code. Many others<br />
also rely heavily on it!<br />
DrAWBACkS<br />
There are always some drawbacks when introducing a new<br />
language in your project.<br />
First, there is the cost of knowledge. Every time you introduce<br />
a new technology, it represents another skill your<br />
team will need to maintain over time. In this case, the cost<br />
should not be too bad. CoffeeScript is similar to JavaScript,<br />
and in any case, you have the option of compiling it<br />
to JavaScript and maintaining it as such.<br />
The use of a debugger is more diffi cult when developing<br />
with a compiled language, as you will be debugging the<br />
compiled code. There are ongoing initiatives to develop a<br />
source mapper for CoffeeScript, which will allow debugging<br />
CoffeeScripts directly, but to date, nothing has been<br />
released.<br />
Lastly, you will need to fi nd a way to fi t CoffeeScript into<br />
your build process. Depending on your platform, there are<br />
several tools available for this. For Java, this can be solved<br />
quite easily using tools such as wro4j and JAWR. For .NET<br />
SquishIt.CoffeeScript and Mindscape <strong>We</strong>b Workbench are<br />
both good choices.<br />
ConCLuSIon<br />
CoffeeScript is not a revolution. It is not a unique, groundbreaking<br />
language. Instead it adds a bunch of incremental<br />
improvements over JavaScript which, in sum, makes it more<br />
pleasant to work with. Experienced JavaScript developers<br />
should have no problems familiarizing themselves with CoffeeScript<br />
and the enhancements it offers. For new developers,<br />
it will allow them to focus on getting the job done,<br />
rather than learning the quirks and pitfalls of JavaScript.<br />
As with any new technology there are trade-offs to consider.<br />
While it can be argued that CoffeeScript is simple,<br />
it will be another tool that your developers will have to<br />
master. <strong>We</strong> feel that this is an investment that pays off<br />
over time. In the long run you will have more expressive<br />
code that will be easier to understand and maintain – and<br />
a lot of fun to write!<br />
Jøran Vagnby Lillesand is<br />
a developer and the practice<br />
lead for <strong>We</strong>b Architecture at<br />
Bekk Consulting. He has worked<br />
on large applications at Posten<br />
Norge for almost fi ve years.<br />
The last few years he has been<br />
focusing on building maintainable<br />
JavaScript for large<br />
enterprise applications.<br />
Jøran holds an MSc in<br />
communication technology<br />
from NTNU.<br />
Eirik Lied is a developer at<br />
Bekk Consulting and have<br />
worked on projects at Posten<br />
Norge the last four years. He is<br />
passionate about web development<br />
and Ruby code. In his<br />
spare time, your can fi nd Eirik<br />
in the mountain skiing or coding<br />
Rails apps. He holds an MSc in<br />
computer science from the<br />
University of Oslo.<br />
6 7
8<br />
SCroLLInG BotH WAyS<br />
Winrt for the ioS developer<br />
This is that girl in your class that<br />
just wouldn’t stop talking. She is<br />
also known as Iris Classon, a<br />
hyperactive and very passionate<br />
developer, long distance runner<br />
and mountain biker with a <strong>love</strong> for<br />
weightlifting and fi tness.<br />
Iris recently caught the attention<br />
of the developer community with<br />
her tremendous passion for<br />
programming and unique career<br />
path. She’s a licensed and<br />
registered clinical dietitian who<br />
recently discovered she <strong>love</strong>s<br />
writing software. Within her fi rst<br />
year, she earned MCPD and MCTS<br />
certifi cations and was invited to<br />
join MEET – Microsoft Extended<br />
Experts Team, in addition to<br />
landing a fulltime developer job<br />
after just six months. She’s been<br />
interviewed on Hanselminutes,<br />
the Code Project, Pluralsight and<br />
made headline news in several<br />
newspapers. Today she is a<br />
Technical Evangelist for Telerik,<br />
works as a software developer<br />
for Dotnet Mentor and is the<br />
organizer of the Swedish<br />
Pluralsight Study Group and is a<br />
frequent speaker at user groups<br />
and conferences and blogs<br />
passionately about programming.<br />
By Iris Classon<br />
With Microsoft’s strong history in the enterprise space the new<br />
Windows 8 features has gotten many developers excited, and most<br />
of them revolve around the new set of libraries called Windows<br />
runtime, or Winrt.<br />
This API collection is used for Windows Store Apps, the<br />
apps that will run on both Windows RT (Windows 8 on ARM)<br />
and Windows 8. Language projections allow the developer<br />
to code in JavaScript, C#, VB or C++ and call the same native<br />
API’s. The lock screen lets us developers have our apps<br />
display notifi cations even before the user has signed in and<br />
the live tiles are updated without apps even running, same<br />
goes for the app-specifi c popup – toast notifi cations. The<br />
charms bar search function lets the user search the computer<br />
or apps for the term entered and share allows you<br />
to share content with other apps, between those that have<br />
implemented the share contract by being a share target<br />
and/or source. Apps can be run side by side in snapped or<br />
fi lled mode allowing multitasking. The very best feature<br />
is still that it is a platform that is very easy to develop for.<br />
From start to publish, no matter what you are used with,<br />
WinRT is a developer friendly platform.<br />
tHE WInDoWS StorE<br />
This is where most of the apps will be downloaded and<br />
there are a few differences between Windows Store and<br />
the App Store. Trial period is allowed, - with limited or full<br />
functionality. Enterprise apps can be side loaded, this is<br />
not the same as In-house App deployment in iOS.<br />
As with the new iOS6 meta tags for websites directing a<br />
user to the store the Windows Store has also meta tags<br />
that can be used. Instead of displaying a banner with the<br />
app information the user can select the setup or go to the<br />
app from within the browser menu.<br />
DIffErEnCES In DESIGn<br />
A big difference between the two platforms is design, and<br />
the use of the design language now referred to as Modern<br />
UI (previously known as Metro). The design is typography<br />
based, clean and it’s all about content before chrome.<br />
The layout of an app and its content is based on a grid<br />
system with a set of recommended margins and paddings.<br />
Make sure the app always remains responsive and that<br />
animations are only used to give feedback to the user,<br />
be authentically digital and the remove all the chrome<br />
and let the content shine instead. In contrast to iOS applications<br />
there should be sharp clean corners, little if<br />
any gradients, only use images and animations if they<br />
serve a purpose, and there should be a clear content and<br />
typography hierarchy.<br />
GEttInG SEt uP / tooLInG<br />
Setting up is really easy- you just need three things and<br />
they are all free. Download an evaluation of Windows 8 and<br />
install either by running Windows 8 on your Mac natively<br />
using Boot Camp, or use VM software such as VMWare<br />
Fusion Parallels or Virtual Box. Download and install Visual<br />
Studio Express 2012 for Windows 8 (free). When you create<br />
your fi rst Windows Store App it will prompt you for a<br />
license- just create a Microsoft account (also free) and<br />
sign in.<br />
Let’s have a quick looks at the tools. The IDE you will be<br />
working in is Visual Studio, this would be the equivalent<br />
of Xcode.<br />
The interface can be created using Blend, which is equivalent<br />
to Interface Builder. But just as with Xcode and Interface<br />
Builder Blend is well integrated into the IDE,- and<br />
most interface work can be done directly from Visual Studio.<br />
A quick note here that Blend is an extremely powerful<br />
tool well worth learning, and you can literally visual states<br />
and animations in just a few seconds. As for Xcode and<br />
VS2012, they are quite similar, just fewer buttons and<br />
icons to click on, and less information to fi ll in.<br />
9
The simulator for Windows Store Apps works by remote<br />
desktop to your own computer and it is not run in an isolated<br />
environment so take care. You won’t fi nd any TV-out,<br />
shake gestures or phone call/video time as you may be<br />
familiar with in the iOS Simulator.<br />
You will be able to test the app using touch and some<br />
common gestures, mouse, simulate geolocation, test the<br />
different modes for apps have for allowing multitasking<br />
(snapped and fi lled mode). You can also change device<br />
orientation, take screenshots and change screen size and<br />
resolution (as an app must work well in all except the smallest<br />
resolution). Just as with iOS apps you have to handle<br />
the different states of the app, such as suspend, resume,<br />
suspend and shutdown as well as background tasks (tasks<br />
that run in the background when your app is suspended or<br />
not running).<br />
XAML<br />
In Windows Store Apps most of the UI work is done in a<br />
language called XAML. XAML is kind the equivalent of a<br />
XIB fi le- but then again not. The resemblance stops at what<br />
it represents and the XML-factor.<br />
Each XAML fi leis paired with a .cs fi le referred to as the<br />
code behind fi le. Two popular design patterns are used<br />
with XAML technologies, the code-behind pattern where<br />
you write code in the cs fi le that belongs to the View, or<br />
MVVM, which is a pattern that resembles MVC.<br />
XAML is very stable and easy to work with, and it allows<br />
you to do some pretty cool stuff. Basically you can have<br />
any control look and behave exactly as you want, without<br />
investing much time or energy. It is a declarative markup<br />
language that is extensible, and we’ll have a look at the<br />
extensibility part in the DataTemplates and DataBindings<br />
section.<br />
XAML is a language for building objects, and everything<br />
you do there can be done in code, but the beauty is that it<br />
allows you for perfectly separation of concerns by keeping<br />
UI related things in the UI. The syntax is similar to that of<br />
XML and HTML, and properties of an element are declared<br />
as attributes, and so are events. An element can hold a<br />
child or children, and they can basically be nested in infi nity.<br />
Why not add a grid to a button, and a textbox and an<br />
image to the grid? You now have a text and image button.<br />
ControLS<br />
Explaining each and one of the controls is outside the<br />
scope of this article. But a few points:<br />
A few controls will be missing, such as navigation controls,<br />
date and time pickers and a few more. To understand how<br />
the controls should be used have look at the guidelines for<br />
each control. Usercontrols are extremely easy to create,<br />
a user control will work as a partial but reusable view. But<br />
if that doesn’t fi t your needs you can create custom controls,<br />
this will give you full control, but you will get very far<br />
by customizing existing controls by using data templates<br />
and styles.<br />
By adding a name to a control with the x:name syntax you<br />
can access the control in the code-behind, the other way<br />
would be using MVVM is by using DataBindings.<br />
There is a great tool that helps you map, to about 80-90%<br />
iOS controls to their WinRT equivalent (also possible for<br />
Android). The site is called API mapping index and is found<br />
here: http://apimappingsite.cloudapp.net/library<br />
DAtAtEMPLAtES AnD DAtABInDInGS<br />
In XAML we have a concept called DataTemplates. These<br />
are templates written in XAML that decide how data<br />
should be presented. These can be defi ned in the control<br />
itself, or defi ned in a resource dictionary, page level or<br />
app level, and be reused. The same can be done for styles.<br />
Styles resemble amore powerful CSS. They can be defi ned<br />
to apply to all the controls of a certain type, or given a<br />
name that the control then has to bind its style property<br />
to.<br />
Here is an example also using some built in animations<br />
from WinRT:<br />
There are many ways you can defi ne a style, either you<br />
write it up manually, or you select the control in the designer<br />
and select Edit template after right clicking. This<br />
will create the full style template for that control, and<br />
you can modify everything from animations on different<br />
states (such as pressed state), to shape, form and so much<br />
more. By removing the identifi er name the style will apply<br />
to all controls of that type if the style is set at app level.<br />
Here is an example of a data template:<br />
There are different types of bindings, for example when<br />
binding to static resources such as styles you use the<br />
StaticResource binding. To bind to a property you need<br />
to set a DataContext (default code behind), which can be<br />
done in XAML or in the code behind. The runtime will propagate<br />
values from the DataContext to the View, instead of<br />
you doing a push when accessing a control directly in the<br />
code-behind. You can use converters on bindings declared<br />
in separate classes, for example converting a True False<br />
property to Visibility or color. This keeps View logic in the<br />
View.<br />
10 11
ASynCHronouS ProGrAMMInG WItH ASynC<br />
AnD AWAIt<br />
The new async API’s makes it easy to create snappy apps<br />
and you can get most things done by just using the new<br />
keywords async and await. The async modifi er is added<br />
to the method declaration and tells us that this method<br />
contains code that will run async. Await is used before a<br />
task that we expect to take more than a few milliseconds,<br />
and it basically tells the compiler that if the task is not<br />
fi nished, it should sign up for the result of the task and<br />
return to the caller only invoking continuation when it has<br />
completes. Here is an example:<br />
tILES AnD toAStS<br />
Tiles and toasts are easy to implement, here is a basic<br />
example:<br />
WEB SErvICES<br />
Working with <strong>We</strong>b Services is extremely simple, even more<br />
so than in iOS. Here is a basic example:<br />
Read string:<br />
When working with a custom type the type and it’s members<br />
need to be marked with the DataContract and Data-<br />
Member attribute like this:<br />
StorAGE<br />
You have quite a few storage options, and you might recognize<br />
some of them. While the use of databases in the<br />
app is not recommended, you can use SQLite or similar<br />
lightweight options, you can also serialize data locally (remember<br />
that the apps are sandboxed), settings can also<br />
easily be saved locally. You also can roam data. Here are<br />
some very simple examples.<br />
Writing to local fi le and folder:<br />
Saving a simple setting<br />
Saving settings using a container:<br />
You can also allow the user to use a fi le picker to save to a<br />
fi le, this can also be done without the user selecting a fi le<br />
but then you will need to declare that in the app manifest<br />
and the user will have to agree to that.<br />
PuBLISHInG<br />
It is very easy to publish to the Store. First you need to<br />
sign up for a developer account, the current cost is 49USD<br />
for individuals and 99USD for companies. After you have<br />
done that you need to run something called a Windows<br />
Application Certifi cation Kit (WACK) tool, this is a tool<br />
that will run a script and test your app. During this time<br />
the app will be started, suspended and shutdown a few<br />
times. You must pass the WACK tool to publish an app. The<br />
tool is most easily accessed through the IDE itself (but can<br />
be launched from PowerShell or the desktop). Right click<br />
on you project and select store and select publish, just<br />
follow the steps there, it should only take a few minutes.<br />
Create your app packages, sign in to your developer dash-<br />
board and fi ll out information about the app. Make sure<br />
you provide screenshots and so on, just as with iOS apps.<br />
Upload the packages and click publish. That’s it. No keys<br />
or certifi cates to handle (apart from the fi rst dev license<br />
which is a certifi cate). Just a click of the button. It should<br />
not take more than a week, often less, and all apps are<br />
manually tested and tested with the WACK tool.<br />
WHAt WE DIDn’t Go tHrouGH (But you SHouLD)<br />
• Navigation<br />
• Background tasks<br />
• More on live tiles and notifi cations<br />
• Windows Phone and Windows Store APPS<br />
• More async programming with async and await<br />
And so much more<br />
GrEAt rESourCES:<br />
Channel 9 two day event<br />
http://channel9.msdn.com/Events/Windows-Camp/Windows-Store-App-Development-for-iOS-Developers<br />
Guidelines<br />
http://www.irisclasson.com/2012/08/24/free-bookuser-experience-guidelines-for-metrowindows-8-styleapps-winrt-apps/<br />
Controls ioS => Winrt<br />
http://msdn.microsoft.com/en-us/library/windows/apps/<br />
jj729868.aspx<br />
Windows Phone and ioS side by side coding<br />
http://msdn.microsoft.com/en-us/magazine/jj658972.<br />
aspx<br />
Hands on labs<br />
General resources for ioS devs for Windows Store<br />
development<br />
http://msdn.microsoft.com/en-us/library/windows/apps/<br />
jj680134<br />
C# for obj.C devs<br />
http://windowsphone.interoperabilitybridges.com/articles/chapter-4-c-programming-introduced-to-objectivec-programmers<br />
virtual training<br />
Design assets<br />
http://msdn.microsoft.com/en-us/library/windows/apps/<br />
hh700403.aspx<br />
App samples collection<br />
http://code.msdn.microsoft.com/windowsapps/Windows-<br />
8-Modern-Style-App-Samples<br />
12 13
I can still remember<br />
how happy I was the<br />
first time my friends<br />
and I managed to<br />
program a Pong alike<br />
game on our Texas<br />
Instrument calculators.<br />
It took us weeks<br />
before figuring out the<br />
algorithm and months<br />
before being able to<br />
render something decent,<br />
almost playable,<br />
with zeros and ones on<br />
the screen.<br />
By Bertrand Besnard<br />
At that time, we had to understand<br />
low level languages that young folks<br />
can not even name today. <strong>We</strong> had no<br />
debug tool and the only way to understand<br />
why our application crashed<br />
was to try to reproduce the case… on<br />
paper.<br />
Later on, I studied in the only university<br />
in France that was teaching both<br />
Cobol and Java. Their philosophy was<br />
that however important Java was becoming<br />
(it was the beginning of the<br />
two thousands), it was still important<br />
to understand the main concepts of<br />
IT. They also forced their students to<br />
learn the language theory but that<br />
was just for the fun. In my last year<br />
there, only 6 years after programming<br />
my first pong game, we had to produce<br />
an OpenGL 3D first person<br />
shooter game. It was nothing that we<br />
would ever use later on in our lives,<br />
but understanding the key concepts<br />
of 3D and being able to use complex<br />
math was more important than filling<br />
up a CV. The whole project took us a<br />
couple of weeks.<br />
With today’s technologies, you can<br />
build up a playable level of a single<br />
game with the latest lighting and texturing<br />
technologies in just a couple of<br />
hours, thanks to the power, the diversity<br />
and the flexibility of the available<br />
tools.<br />
The same concept applies to pretty<br />
much everything that requires coding.<br />
<strong>We</strong> went from writing eighty characters<br />
per line with no objects, to defining<br />
a variable name and a method call<br />
represented by a box.<br />
Nowadays, most people learn IT the<br />
“fast way” that is, with tools that enable<br />
auto-completion, give coding<br />
advices and have integrated GUI<br />
builders based on drags and drops.<br />
Creating an application has never<br />
been that easy. A couple of clicks here<br />
and there, a Google search or two and<br />
voila!<br />
But is time sparing worth sacrificing<br />
knowledge? What is the big picture on<br />
a long term perspective? What will<br />
happen to hardcore experts?<br />
If programming is that easy, debugging<br />
becomes harder. With all that<br />
generated code and programming<br />
conventions not always being respected,<br />
if someone else than the<br />
original developer has to read and fix<br />
the code, things can become quite<br />
hard and costly. How many of us had<br />
to fix a code which contained variable<br />
names like txtBox1, txtBox2…, or<br />
even worse, ex girlfriends’ names?<br />
How many hours are spent yearly debugging<br />
simple mathematics operations<br />
because precedence rules are<br />
Programming:<br />
from too hard<br />
to too easy<br />
not respected? Those are just the<br />
easy ones, the most common and<br />
harder coding mistakes include, but<br />
are not limited to: global variables accessed<br />
and modified randomly, methods<br />
of tens of lines, exceptions being<br />
caught but discarded…<br />
There are tons of resources out there<br />
for developers to learn from and many<br />
acronyms to discover or to deeper investigate<br />
like TDD or BDD (test driven<br />
deployment), which is an often mentioned<br />
key to high quality softwares,<br />
SOLID (Single responsibility, Openclosed,<br />
Liskov substitution, Interface<br />
segregation and Dependency inversion)<br />
which describes the “first five<br />
principles” of object-oriented programming<br />
and design and so many more.<br />
Thanks to the internet, knowledge is<br />
only a click away, motivation however,<br />
has to be found somewhere else.<br />
On a long term perspective, without<br />
proper training, programmers won’t<br />
learn much more about the fundamentals<br />
and might become somewhat<br />
limited. Their errors’ becoming someone<br />
else’s to fix and their lack of<br />
knowledge becoming time consuming<br />
for others.<br />
Most companies understand that<br />
principle and have found an easy solution,<br />
encouraging through different<br />
means, their employees to develop<br />
their skills through seminars, conferences,<br />
classes and basically everything<br />
that can potentially make one<br />
become better. This tendency has<br />
started in most countries that understand<br />
that programming can be a career<br />
path and not only another step on<br />
a stair that leads to management.<br />
Unfortunately, training individuals<br />
can be costly and not everyone can<br />
afford it. That is where dedication and<br />
thrive to learn kick in, buying a book<br />
and reading it is affordable by most.<br />
The other problem implied is that as<br />
time goes by, experts will become<br />
rarer and busier, leaving new programmers<br />
to themselves, in charge of their<br />
own fixing, eventually leading to chaos<br />
and destruction of the world as we<br />
know it.<br />
Already in 1995, Niklaus Wirth stated<br />
that “software is getting slower more<br />
rapidly than hardware becomes faster”.<br />
A variant by David May is even<br />
more explicit by doing a corollary with<br />
Gordon Moore’s law: “Software efficiency<br />
halves every 18 months, compensating<br />
Moore’s law”.<br />
This proves that knowledge is the key<br />
to a good programmer and IT, as every<br />
single science, always evolves and so<br />
should the people working with it.<br />
Bertrand Besnard is a<br />
French Software Engineer<br />
who migrated to Oslo.<br />
He has since then been<br />
working on some of the<br />
biggest Norwegian<br />
projects as environment<br />
administrator such as<br />
NAV and Autosys. He is<br />
currently employed by<br />
Steria. He is interested<br />
in process analysis and<br />
human interactions and<br />
travels the world to<br />
discover different<br />
cultures, and food.<br />
All kind of food.<br />
14 15<br />
© Cmgirl / Shutterstock.com
In my work in non-governmental organizations and open source,<br />
I've learned how to build large virtual organizations using a variety<br />
of strategies that together I call "Social Architecture". By analogy<br />
with conventional architecture, this is the process, and the product,<br />
of planning, designing, and growing an online community.<br />
By Pieter Hintjens<br />
Now, I'm going to make a fairly radical<br />
proposal, which is based on two arguments.<br />
First, that open source communities<br />
represent the leading edge<br />
of project management. That is, given<br />
difficult challenges, a well organized<br />
open source project can beat any conventional<br />
project in terms of time<br />
taken, accuracy of the results, and<br />
overall cost. I based this on three decades<br />
of working in software projects<br />
of every conceivable scale and type.<br />
My second argument is that the tricks<br />
that successful open source teams<br />
have developed (by random variation<br />
combined with heavy natural selection)<br />
can also work in conventional<br />
closed-source teams.<br />
I've developed the science of Social<br />
Architecture in some detail, in my<br />
SoCIAL<br />
ArCHItECturE<br />
for Managers<br />
book in-progress "Software and Silicon",<br />
but in this article I'll give you a<br />
short set of 20 principles that will, if<br />
you can apply them, give your teams<br />
something of the competitive edge<br />
that the best open source projects<br />
enjoy:<br />
• Create very explicit, somewhat<br />
crazy missions that people respond<br />
to. Make it challenging, but also fun.<br />
Missions are the problems your group<br />
has to solve. Make the missions just<br />
impossible enough, but valuable for<br />
the organization. Keep inventing new<br />
ones when the group has solved the<br />
existing ones.<br />
• When it makes sense, define a Bad<br />
Guy. Usually I don't like emotional<br />
drivers, but anger and fear can be<br />
powerful motivators. Be careful to not<br />
take this too far, it can be exhausting.<br />
If you're in a business setting, competitors<br />
make excellent Bad Guys.<br />
• Make it clear that you are there for<br />
the work, not the money. If there are<br />
rewards for success, make sure<br />
they're shared by all. Reward successful<br />
collaboration, not individual<br />
strengths. You want to avoid people<br />
competing simply for financial reward,<br />
because you'll encourage the<br />
sociopaths and discourage the better<br />
people.<br />
• Create as much diversity as you can:<br />
ethnic, gender, education, culture,<br />
age, personality. Mix laymen with experts.<br />
It's not about political correctness<br />
but about making sure orthodoxy<br />
gets challenged. Diversity is the fire<br />
that turns raw ideas into edible prod-<br />
ucts. Big mistakes tend to happen in<br />
environments without diversity.<br />
• Encourage your people to think of<br />
themselves as free agents who<br />
choose the problems they want to<br />
work on, and who can recruit other<br />
people to help them. Try to mix in<br />
some consultants with the employees.<br />
Teach people to hunt for profitable<br />
problems rather than wait for work to<br />
be pushed their way. Use tools like issue<br />
trackers to collect problems so<br />
they're easy to find.<br />
• Invest in rules and group contracts<br />
that help people divide the work and<br />
share knowledge. For example, adapt<br />
the PC3 process spec from http://<br />
hintjens.com/blog:23. Try to reduce<br />
the need for meetings. Open source<br />
does this using clear licenses. Allow<br />
anyone to propose improvements and<br />
changes to the rules.<br />
• Enforce the rules consistently, and<br />
use your authority mainly to enforce<br />
the rules. Leadership should be about<br />
identifying the main problems, securing<br />
resources to solve them, and enforcing<br />
the rules that allow people to<br />
work together without too many assumptions.<br />
• Create competition between individuals<br />
and projects to turn conflict<br />
into healthy competition. Encourage<br />
individuals to challenge others, make<br />
this technically easy and low-risk.<br />
Open source lets anyone fork a project<br />
and then improve it.<br />
• Let people choose their own work<br />
and measure people on the value of<br />
the problems they solve. Don't allow<br />
any individual or team to own a problem,<br />
only a particular solution. Otherwise<br />
you reduce the scope for competition.<br />
Accept that some problems<br />
may end up with multiple solutions.<br />
• Don't assign people to teams. Allow<br />
teams to recruit freely, allow people<br />
to belong to as many teams as they<br />
like, start new teams, and so on. This<br />
reduces tribalism and fights over turf.<br />
Also, when team leads aren't competent,<br />
they don't do much harm, as their<br />
team just walks away.<br />
• Allow your teams to work from<br />
home, the local coffee shop, or anywhere<br />
else they want. Assume that<br />
they will do their utmost to succeed,<br />
especially if they have competition.<br />
Make the office space flexible, plas-<br />
16 17
18<br />
© Ollyy / Shutterstock.com<br />
tic, with desks that can move around,<br />
WiFi, and absolutely no cubicles.<br />
• Enforce immediate sharing of<br />
knowledge: everyone publishes their<br />
work as it develops. The rules should<br />
allow others to copy and reuse that,<br />
but under reciprocal conditions. Even<br />
internally in a company, code should<br />
be remixable to ensure that there is<br />
full competition.<br />
• Allow anyone to start a new project,<br />
at no cost and no risk. Make sure the<br />
technical infrastructure allows this.<br />
Starting a project means being responsible<br />
for it. Most projects will<br />
fail, which is fi ne if the cost of failure<br />
is very low.<br />
• Ensure that projects are structured<br />
in a clear overall architecture that can<br />
be learned quickly. Slice your architecture<br />
into two or three layers, and<br />
group projects into layers. Defi ne the<br />
contracts between layers (APIs and<br />
protocols) ruthlessly but don't try to<br />
define how particular implementations<br />
work, as long as they respect<br />
those contracts.<br />
• Defi ne good criteria for success,<br />
and apply these to projects so that it's<br />
clear which projects are winning. It<br />
could be number of downloads, number<br />
of dependent projects, etc. Make<br />
winning this a primary and fun "goal"<br />
for teams, so that it becomes more<br />
important than fi nancial reward.<br />
• Make it easy for newcomers to start<br />
contributing to projects, and make<br />
sure there are always more challenging<br />
projects they can move on to.<br />
Smart people enjoy learning, so make<br />
work a continuous learning experience.<br />
• Be prepared to drop individuals who<br />
are unable to build or join successful<br />
teams. It doesn't really matter how<br />
smart an individual is, the unit of success<br />
is a team, and it's better to have<br />
three ordinary people who work well<br />
together than one super-smart guy<br />
who can't work with anyone.<br />
• Enjoy yourself at work, and infect<br />
your staff with the same sense of enjoyment.<br />
Laugh at yourself often, it<br />
makes others feel at ease.<br />
To conclude, many of these lessons<br />
may be obvious, but put together, the<br />
changes can be radical. <strong>We</strong>'ve done<br />
this in several projects now, and<br />
turned exhausted, unfocused teams<br />
into little powerhouses producing<br />
brilliant products. It's dogmatic in<br />
Social Architecture: the same people,<br />
organized differently, can be 100<br />
times more effective.<br />
Pieter Hintjens is the author of<br />
"Code Connected" (Volume 1),<br />
the new O'Reilly book on ZeroMQ,<br />
and the founder of the ZeroMQ<br />
community. He's lead developer<br />
on the Zyre and CZMQ projects.<br />
His in-progress book on the digital<br />
revolution is on SoftwareandSilicon.<br />
com. In 2005 he designed the<br />
original AMQP (Advanced Message<br />
Queuing Protocol) specifi cation.<br />
From 2005 to 2007 he helped<br />
organize the fi ght against software<br />
patents in Europe. He's been CEO<br />
of iMatix since 1996. He drums with<br />
a <strong>We</strong>st African group in Brussels,<br />
is a certifi ed pistol instructor, and<br />
has three <strong>love</strong>ly kids. The one<br />
religion he invented (Stallmanism.<br />
org) died when the beer ran out.<br />
MovInG froM<br />
C++98 to C++11<br />
rvALuE<br />
rEfErEnCES,<br />
MovE SEMAntICS,<br />
AnD PErfECt<br />
forWArDInG<br />
effective c++11<br />
Programming<br />
Software developers familiar with the fundamentals of<br />
C++11 are ready to advance from knowing what’s in<br />
C++11 to understanding how to apply it effectively. This<br />
seminar, based on information in Scott Meyers’ forthcoming<br />
Effective C++11, highlights the insights and best<br />
practices of the most accomplished C++11 programmers:<br />
the things they almost always do (or almost always avoid<br />
doing) to produce clear, correct, effi cient code.<br />
Scott Meyers<br />
2 DAyS trAInInG<br />
10 JunE, oSLo<br />
17 JunE, LonDon<br />
LAMBDA<br />
EXPrESSIonS<br />
SECrEtS of<br />
tHE C++11<br />
tHrEADInG API<br />
SMArt<br />
PoIntErS<br />
The seminar is based on lecture presentations, with<br />
ample time for questions and discussion by attendees.<br />
There are no hands–on exercises, but participants are<br />
welcome – encouraged! – to use their C++ development<br />
environments to experiment with the ideas in the seminar<br />
as they are presented.<br />
10 JunE. Venue: Radisson Blu Plaza, Oslo<br />
17 JunE. Venue: Holborn Bars, London<br />
SCOTT MEYERS<br />
Scott Meyers is one of the worlds foremost experts on C++ software development. He offers training and consulting services to clients worldwide.<br />
Scott wrote the best–selling Effective C++ series (Effective C++, More Effective C++, and Effective STL) and orchestrated their initial electronic publication<br />
(originally as Effective C++ CD, subsequently as DRM–free PDFs). Hes also author of Overview of the New C++ (C++11) and Effective C++ in an<br />
Embedded Environment. Scott founded and is Consulting Editor for Addison <strong>We</strong>sleys Effective Software Development Series, and he conceived the<br />
boutique conferences The C++ Seminar and C++ and Beyond. He received the 2009 Dr. Dobbs Excellence in Programming Award. A programmer since<br />
1972, he holds an M.S. in Computer Science from Stanford University and a Ph.D. from Brown University.<br />
OSLO - www.programutvikling.no LONDON - www.developerfocus.com
© Ollyy / Shutterstock.com<br />
20<br />
trAnSItIonInG SuCCESSfuLLy froM tHE It SIDE to BuSInESS:<br />
5 questions every developer should<br />
ask before embarking on a BA career<br />
By Howard Podeswa<br />
I recently had a conversation with my son, who is just entering into the field of Big Data<br />
analytics with an up-and-coming startup and it brought me back to my early days as a<br />
programmer/analyst in a scrappy software development company. It got me thinking about<br />
the direction my career has taken since those times and the many paths his career might<br />
follow. I’ve gotten to know one of those possible paths quite well - the route from IT to<br />
Business Analysis - due to my role as CEO of Noble Inc., a Business Analysis training and<br />
consulting company – and because I have walked that path myself. This article is for anyone<br />
who is personally contemplating that transition, or is in the midst of it. I want to explore why<br />
someone would seek this path, what the impediments are and offer some suggestions for<br />
how to transition successfully.<br />
BEnEfItS of A trAnSItIon froM<br />
It to BuSInESS AnALySIS<br />
The Business Analyst (BA) function is<br />
to facilitate communication between<br />
the business and the solution provider;<br />
it may be a formal, dedicated role<br />
or a function played at times by a team<br />
member. In my work with my company,<br />
Noble Inc., I‘ve met many developers<br />
around the world who are making the<br />
transition to business analysis - and<br />
heard many explanations for why they<br />
were motivated to take that route.<br />
As someone who has successfully<br />
navigated the transition, I have also<br />
shared many of these motivations: I<br />
went from being a programmer who<br />
chose the profession because I was<br />
being paid to ‘play’-- and who couldn’t<br />
care less about business -- to being a<br />
BA who now runs a business as CEO of<br />
Noble Inc., and who is comfortable sitting<br />
with CEOs and VPs of large corporations,<br />
negotiating deals and helping<br />
them improve the BA practice in<br />
their organizations. From these perspectives,<br />
I’ve seen the following reasons<br />
for making the transition from<br />
IT development to business analysis:<br />
• Ability to leverage experience:<br />
Experience comes as a blessing and<br />
a curse if you are an IT developer. As<br />
you build your experience, coming up<br />
behind you are programmers who are<br />
more up-to-date on the latest technologies,<br />
who work faster and are willing<br />
to work longer. A BA role gives you<br />
a chance to leverage the skills you’ve<br />
accumulated over the years in a profession<br />
that highly values experience<br />
and maturity over technical wizardry.<br />
• Burnout: You spend years getting<br />
paid to ‘play’ and enjoy ever-novel<br />
technical challenges --- when one day<br />
you just don’t feel the <strong>love</strong> anymore.<br />
Most developers experience this –- as<br />
did I. Business Analysis begins to look<br />
inviting, in particular because of the<br />
next point.<br />
• Business Analysis is less technically<br />
taxing than programming: I expect<br />
this to raise hackles, but I have done<br />
both and the simple truth is that it is<br />
not as technically difficult to write a<br />
user story or use case as it is to write<br />
the code that implements it. There is<br />
still novelty, complexity and creativity<br />
– but you find it more in the new business<br />
areas you are exposed to rather<br />
than in technical challenges.<br />
• natural evolution: As you work<br />
your way up a career on the IT side,<br />
you naturally evolve towards a focus<br />
on higher levels of abstraction that<br />
move you further from the technical<br />
perspective and closer towards<br />
the business. The next logical step is<br />
Business Analysis – the function that<br />
bridges those two worlds.<br />
• Desire to be in a new/growing profession:<br />
When I entered the profession,<br />
there were few BAs out there,<br />
no BA organization, and no formally<br />
recognized role. Like many people<br />
in IT development, I was naturally<br />
drawn towards areas that were new,<br />
where there was a green field to be<br />
innovative – and Business Analysis<br />
fit the bill. While that is not as much<br />
the case now as it was then, the field<br />
is still young and growing – and even<br />
still in its infancy in many countries.<br />
• the financial motivator (i.e., money):<br />
As you get closer to the side that<br />
generates wealth, your pay rate rises<br />
accordingly. Generally speaking,<br />
‘business’ BAs make more than ‘IT’<br />
BAs, who make more than technical<br />
analysts and programmers. The argument<br />
is particularly compelling if you<br />
are a programmer working offshore,<br />
and the BA jobs you are seeking are<br />
located in North America or Europe.<br />
(See Job Security below.)<br />
• Job Security: Programming is increasingly<br />
being seen as a commodity<br />
service that can be outsourced to<br />
the lowest bidder – thanks, in part, to<br />
globalization, and to the easy ability<br />
through the Internet to source programming<br />
resources from across the<br />
globe. Business Analysis, on the other<br />
hand, requires close contact between<br />
the BA and business stakeholders;<br />
this typically means that the BA function<br />
must be performed locally, and<br />
that it will probably remain resistant<br />
to off-shoring for the foreseeable<br />
future. (The fear of having your job<br />
outsourced is not exclusive to North<br />
America and Europe, by the way; I’ve<br />
heard developers in India express the<br />
same fears. There always seems to<br />
be a cheaper source of programmers<br />
somewhere.)<br />
• Path to Emigration: I’ve met and<br />
trained many developers offshore,<br />
whose prime motivation was the opportunity<br />
the BA profession provided<br />
to work onshore. And it’s worked out<br />
well for many of those I’ve met who<br />
have made the move.<br />
The reasons vary not only by the individual<br />
person but by where they<br />
sit within the organization. For example,<br />
when I speak with the CEOs<br />
and VPs of IT service and development<br />
companies, about developing a<br />
BA competency using their existing<br />
programmers, the prime motivator I<br />
hear is the opportunity it provides to<br />
increase revenue from their existing<br />
client base by broadening and deepening<br />
the services they provide them.<br />
On the other hand, I hear a different<br />
motivation when speaking with the<br />
VPs of IT departments within large organizations:<br />
Their expressed goal is to<br />
better serve their business customers<br />
by doing a better job of going from a<br />
business problem to an IT solution.<br />
WHAt ArE tHE CHALLEnGES?<br />
Here comes the bad news for anyone<br />
considering the transition. A great programmer<br />
does not necessarily make a<br />
great BA. To be excellent at business<br />
analysis, you need a package of personality<br />
traits that don’t often come<br />
together in a single individual: a strong<br />
analytical side, coupled with highly advanced<br />
interpersonal skills. If you don’t<br />
have those ‘soft skills’, no amount of<br />
training in business analysis tools will<br />
make you a great BA. (The good news,<br />
though, is that there are things you can<br />
do to develop those areas of your personality<br />
that are currently weak, as I’ll<br />
describe at the end of this article.) So<br />
before you set out to become a BA, ask<br />
yourself these questions:<br />
5 quEStIonS you SHouLD<br />
ASk yourSELf, BEforE you<br />
StArt trAnSItIonInG froM It<br />
DEvELoPMEnt Into BuSInESS<br />
AnALySIS<br />
1. Do I have a sincere interest in<br />
business (or, can I at least put myself<br />
in the shoes of someone who does)?<br />
The transition from IT developer to<br />
Business Analyst requires a change<br />
in mindset. To be an effective BA, you<br />
either have to genuinely care about<br />
business issues, or be able to put<br />
yourself in the heads of someone who<br />
does. It can be a challenge for someone<br />
who originally got into IT because<br />
of a passion for the abstract logic of<br />
programming. Some programmers are<br />
21
lucky enough to be born with both a<br />
feel for abstraction and a feel for the<br />
practical world of business. Others<br />
have to develop it. (I’m of the latter<br />
type, but I learned to think like a businessperson<br />
when I became one – a<br />
suggestion I’ll return to later.)<br />
2. Am I a great communicator/<br />
listener?<br />
To be a successful BA you have to be<br />
able to put complex thoughts into<br />
terms your audience can understand.<br />
It means ditching the technical jargon<br />
and learning to use the business vocabulary<br />
of your stakeholders. And<br />
it means being a receptive listener<br />
– able to pick up on both verbal and<br />
nonverbal cues. If you are the type<br />
of person who <strong>love</strong>s to hear yourself<br />
talk – or whose thoughts tend to wander<br />
when others are speaking, the BA<br />
profession is not a good fit for you<br />
(unless you are prepared to change).<br />
3. Am I a good synthesizer?<br />
Am I good at seeing the big picture?<br />
Often, being a BA means being able to<br />
absorb a lot of information coming in<br />
from many sources and put it all together<br />
into a consolidated view. You<br />
have to be able to see the big picture –<br />
and not be a ‘details only’ person who<br />
“can’t see the forest for the trees.”<br />
4. Am I a natural leader/ self-starter?<br />
As a BA, you will be expected to facilitate<br />
and conduct interviews and<br />
feedback sessions with stakeholders<br />
and developers. It requires someone<br />
who is able to get others to follow an<br />
agenda, who is able to manage conflict,<br />
and who is able to help people<br />
move towards a consensus. The BA<br />
may not be the ‘team leader’, but the<br />
function does require leadership<br />
skills and self-motivation.<br />
5. Am I a People Person?<br />
This the most important of the 5<br />
questions. To be good at Business<br />
Analysis, you have to have a good<br />
rapport with people and be genuinely<br />
interested in them and their problems;<br />
in other words, you have to be<br />
a ‘people person’. Many IT developers<br />
whom I’ve met are not. Although agile<br />
practices are placing greater emphasis<br />
on teamwork and communication,<br />
programming is, at its heart, a solitary<br />
job: Once the meetings are over and<br />
the coding begins - it’s you against the<br />
machine. It is not surprising, then, that<br />
IT tends to attract people who like to<br />
spend a lot of time in their own heads.<br />
On the flip side, if you do happen to<br />
be an IT professional who has strong<br />
interpersonal skills, you possess a<br />
combination of personality traits that<br />
are not that easy to find - and that,<br />
consequently, are highly valued.<br />
One of the services my company provides<br />
is pre-evaluation of potential<br />
BAs from a pool of candidates. As<br />
part of the process, we put a select<br />
group through team exercises , where<br />
we can observe them interacting with<br />
each other. <strong>We</strong> are looking for people<br />
who demonstrate the traits described<br />
above. The following is a direct quote<br />
from an evaluation we gave one of<br />
these candidates: “a natural team<br />
leader, projecting confidence (without<br />
displaying arrogance), strong knowledge<br />
base and a person whom I would<br />
feel very comfortable putting in front<br />
of a client.” That pretty well sums up<br />
the ideal candidate for a BA role.<br />
trAnSfErABLE SkILLS<br />
If you have the right soft skills, you will<br />
find that many of the technical skills<br />
you bring over from your IT background<br />
are transferable to the BA function – if<br />
you can learn to reorient them towards<br />
the business. The truth is that many of<br />
the techniques used by BAs began as<br />
IT techniques. The difference is in timing<br />
and context. Whereas you may be<br />
familiar with a technique that you’ve<br />
used after the requirements have been<br />
captured, to design an aspect of the IT<br />
system, as a BA, you’ll often use that<br />
same technique where it is more useful<br />
– during conversations with stakeholders<br />
at the front end of a sprint or<br />
phase, where you’ll use it for requirements<br />
discovery. Skills transferable<br />
from IT include:<br />
Deep understanding of the<br />
It perspective<br />
The essence of the BA function is to<br />
facilitate communication between the<br />
business and IT. Your background in IT<br />
will make it easier for you to understand<br />
how developers think, the language<br />
they use and the problems they<br />
face – as well as communicate these<br />
to the business side.<br />
Procedural thinking/ analytical mind<br />
Programming requires procedural<br />
thinking – the ability to break down<br />
a complex action into atomic steps<br />
(or conversely, to build a complex action<br />
from them). The same talent for<br />
analytical thinking is invaluable in the<br />
BA role as long as it can be oriented<br />
towards the analysis of the business.<br />
tools<br />
Related to this last issue are the<br />
actual tools used in both roles. As a<br />
BA, I use many of the tools I used to<br />
use as a developer – but I use them<br />
in a different context. For example,<br />
I first encountered decision tables<br />
in a development context as input to<br />
an automatic code generator. As a<br />
BA, I use them upfront during meetings<br />
with stakeholders to tease out<br />
the operative business rules that lie<br />
behind the decisions they know how<br />
to make but have difficulty explaining.<br />
Similarly, on the IT side, I’ve used<br />
Entity Relationship Diagrams (ERDs)<br />
and class diagrams to design databases<br />
and software classes. I now use<br />
them during stakeholder meetings to<br />
discover structural business rules and<br />
understand business concepts.<br />
Broader application of It Best<br />
Practices<br />
Beyond these specific tools, there is<br />
a great opportunity for the former<br />
developer to spread best practices,<br />
such as agile, that have originated<br />
from the development side into the<br />
broader business environment where<br />
they can have a larger and more effective<br />
impact.<br />
fInAL WorDS AnD SuGGEStIonS<br />
If you feel you have the personality<br />
traits to become an excellent BA, and<br />
have made the decision to make the<br />
transition, where do you go next? If<br />
you’re currently working as a developer,<br />
make your intention known to Human<br />
Resources and to management. If<br />
you’re working for a large enterprise,<br />
the best and most intensive BA training<br />
can usually be found on-site – in<br />
corporate BA training classes paid<br />
for by your employer – or off-site in<br />
public classes. You should also begin<br />
reading. I’d recommend Software<br />
Requirements by Karl Wiegers and<br />
anything by Alistair Cockburn. From<br />
my own books, I’d recommend working<br />
through the case study in UML for<br />
the IT Business Analyst (Cengage), as<br />
you’ll learn to re-purpose techniques<br />
from your technical background in a<br />
BA context. As well, become part of<br />
the BA community by joining groups<br />
such as Modern Analyst’s BA Community<br />
Group and other such groups on<br />
LinkedIn as well as your local chapter<br />
of the IIBA (International Institute of<br />
Business Analysis). Seek out a mentor<br />
and begin thinking and acting like<br />
a BA – by being the one on your team<br />
to ask the business questions and<br />
volunteer for BA duties. You’ll have<br />
an especially open opportunity to do<br />
this if you work on a self-organizing<br />
agile team.<br />
If you are weak on soft skills such as<br />
facilitation and communication, let<br />
your manager know that you want to<br />
gain experience in those areas by facilitating<br />
internal team meetings. It’s<br />
a low-risk way to improve your skills<br />
and gain confidence. And if you are not<br />
naturally a ‘business-oriented person’<br />
consider becoming one – by running<br />
your own business. There is no better<br />
way for a budding BA to learn to empathize<br />
with business stakeholders<br />
than to literally walk in their shoes.<br />
Howard Podeswa is a leader in Business Analysis, having contributed to the formalization of the profession as<br />
SME for CompTIA’s NITAS BA apprenticeship program, as a member of the BABOK review team, respected author<br />
and practitioner. A highly sought-after speaker, he has over 30 years experience in many aspects of the I.T.<br />
industry, beginning as a developer for Atomic Energy of Canada, Ltd., continuing as Systems Analyst and BA, and<br />
currently, as CEO and Director of Course Development at Noble Inc. He is the author of The Business Analyst’s<br />
Handbook and UML for the IT Business Analyst, a practical guide to requirements gathering and documentation<br />
for the BA, now in its 2nd edition, published in 3 languages. Through his company, Noble Inc., Howard has provided<br />
BA consulting and training services to a broad range of industry sectors, including health care, defense, energy,<br />
government, banking and finance with a diverse client base that includes the Mayo Clinic, the ISO, Canadian Air<br />
Force, the South African Community Peace Program (CPP), Deloitte, UST Global (U.S, and India) and BMO/ Harris<br />
Bank. In addition, Howard has designed BA training programs for numerous corporate education and academic<br />
institutions. In his ‘spare time’ he also runs a parallel life as a professional artist. His most recent exhibition was<br />
Sole of A Shoe: Three Generations of Painting.<br />
22 23<br />
© SVLuma / Shutterstock.com
NDC is one of the World’s largest conferences<br />
dedicated to .NET and Agile development.<br />
Become a Partner and present your business to more than 1600 developers!<br />
For more information about partnership deals,<br />
contact Henriette Holmen at: henriette@ndcoslo.com / tel.: +47 976 07 456<br />
Get a preview of our amazing speaker line-up:<br />
Book your tickets now!<br />
• 2-day workshop • 3-day conference<br />
Get your Early Bird tickets before March 15th<br />
ndcoslo.com
Julie Lucht / Shutterstock.com<br />
26<br />
BE A DrIvEn<br />
ProDuCt oWnEr<br />
By Geoff Watts<br />
the Product owner remains one of the most important, yet hardest, roles to fi ll on a<br />
Scrum team. It is also still widely misunderstood in the teams that I start working<br />
with and I therefore see many teams struggling to fi nd the right person to do the job.<br />
In this article I will briefl y explain the responsibilities of the role and then share with<br />
you what I believe to be the key skills to look for in a Product owner.<br />
So WHAt DoES A ProDuCt<br />
oWnEr Do?<br />
According to the offi cial Scrum Guide,<br />
the Product Owner “is responsible<br />
for maximizing the value of the product<br />
and the work of the Development<br />
Team” – which seems quite clear – but<br />
it then goes on to add “How this is done<br />
may vary widely across organizations,<br />
Scrum Teams, and individuals”.<br />
Ah! So basically then…it depends!<br />
I fi nd it helps sometimes to aggregate<br />
and simplify and so I like to think that<br />
a Product Owner’s responsibilities can<br />
be roughly summed up in the familiar<br />
racing phrase of “Ready, Steady, Go”<br />
GEt rEADy<br />
One thing that most people agree on<br />
is that the Product Owner has primary<br />
responsibility for managing the<br />
Product Backlog and thus determining<br />
what needs to be done in order to continually<br />
maximise value. This is rarely<br />
as simple as someone sitting down on<br />
their own and creating a list however;<br />
as they will often have to represent<br />
and consult a wide range of stakeholders<br />
in order to do this effectively.<br />
One of the fi rst aspects of managing<br />
the Product Backlog is getting it ready<br />
for the initial planning session – in<br />
most projects this is the Release Planning<br />
Meeting. This involves creating a<br />
clear, compelling vision for the project<br />
and ensuring that enough of the higher<br />
priority Product Backlog items are understandable<br />
enough for the Development<br />
Team to plan into a Sprint.<br />
Once the initial Product Backlog is<br />
ready, that doesn’t mean this responsibility<br />
has been fulfi lled and can be<br />
forgotten; getting ready is an ongoing<br />
responsibility for a Product Owner as<br />
they must ensure that the Product<br />
Backlog is continually “good enough”<br />
for the next level of planning. This<br />
will involve what is known as Backlog<br />
Grooming – adding detail, updating<br />
priorities, removing unnecessary<br />
items and adding in previous unknown<br />
requirements.<br />
kEEP It StEADy<br />
Agile approaches such as Scrum espouse<br />
the value of customer collaboration<br />
over contract negotiation thus<br />
Product Owners are not expected to<br />
write down their requirements at the<br />
start of a project (or even at the start<br />
of a Sprint) and then hand them over<br />
to the Development Team and disappear.<br />
Instead they are expected to<br />
work with the team during the Sprint,<br />
helping them clarify the requirements<br />
as they emerge through design and implementation.<br />
The Product Owner will also need to<br />
verify that they are done during the<br />
Sprint – or at the very least – in the<br />
Sprint Review, as well as keep stakeholders<br />
up to date with progress, and<br />
also help groom the Product Backlog<br />
in advance of the next Sprint.<br />
Go<br />
One of the most important aspects of<br />
the Product Owner role is to decide<br />
when to release the product. It needs<br />
to be early enough to gather critical<br />
feedback before it’s too late but not<br />
too early that confi dence and expectations<br />
are dashed. It needs to be early<br />
enough to beat your competition to<br />
the market place but not too early that<br />
the product is missing key features. It<br />
is a diffi cult balance to strike but, at<br />
the end of every Sprint, the Product<br />
Owner will need to decide whether the<br />
potentially releasable increment that<br />
the Development Team has delivered<br />
should actually be released.<br />
Whether or not the increment is released,<br />
the Development team will<br />
always need to know what is next on<br />
the list of things to deliver and so the<br />
Product Owner must be ready to provide<br />
that information. One possible<br />
answer to this question is: “nothing”.<br />
This could either be because the Product<br />
Backlog is empty or, more likely,<br />
that the value in delivering the remaining<br />
items on the Product Backlog does<br />
not justify the cost of another Sprint.<br />
In this case, cancelling the project is<br />
the right thing to be done next.<br />
27
28<br />
BEInG A DrIvEn ProDuCt oWnEr<br />
I regularly run workshops with Product<br />
Owners and whole Scrum teams<br />
to explore the Product Owner role<br />
and what skills or characteristics are<br />
useful to the role. In one workshop,<br />
the group and I came up with a catchy<br />
acronym:<br />
A GooD ProDuCt oWnEr IS<br />
A DRIVEN ProDuCt oWnEr:<br />
A vAILABLE<br />
In order for Product<br />
Owners to be able to<br />
collaborate effectively<br />
with the Development<br />
team, they need to<br />
have the time to make<br />
themselves available.<br />
It’s no use if, when the<br />
team have a question,<br />
they have to wait until<br />
next week before they<br />
get to speak to the<br />
Product Owner again.<br />
D ECISIvE<br />
Product Owners need<br />
to make many decisions,<br />
often with incomplete information.<br />
Usually this is around priorities<br />
or design decisions. The most competent<br />
and successful Product Owners<br />
I have seen are comfortable with this<br />
facet of the role and realise that the<br />
best way to enable better decisions<br />
is to make a few bad ones. I often say<br />
that any decision is better than no<br />
decision and a quick, bad decision is<br />
often infinitely better than a drawnout,<br />
bad decision.<br />
R EALIStIC<br />
“You can’t get a quart into a pint pot”<br />
and “You can’t have your cake and eat<br />
it” are two old English sayings about<br />
attempting or expecting the impossible.<br />
The best Product Owners realise<br />
this and so, while they will inevitably<br />
push for as much value as possible,<br />
they won’t push for the impossible.<br />
The best Product Owners know that<br />
this leads to demotivation and, usually,<br />
compromised quality.<br />
I nforMED<br />
Being knowledgeable about the product<br />
and the market you are (or intending<br />
to be) operating in is tremendously<br />
valuable to people in the Product<br />
Owner role so immerse yourself in<br />
that world. Spending time with users<br />
and stakeholders is usually a valuable<br />
investment.<br />
V ISIonAry<br />
Because product development is<br />
largely empirical in its nature, Product<br />
Owners who can envisage a future<br />
rather than describe requirements are<br />
more likely to be successful. While the<br />
requirements can, and probably will,<br />
change over the course of the project,<br />
if the Product Owner has a clear understanding<br />
of the vision for the product<br />
– and can get this across successfully<br />
to the Development Team – then<br />
the power of agile can be harnessed.<br />
Studies show that teams with a clear<br />
and concise vision are much more productive<br />
than teams without one. This<br />
is partly because they have a greater<br />
understanding and can thus make<br />
better, more educated decisions and<br />
partly because working on a project<br />
with a clear and compelling vision is<br />
more inspiring and engaging.<br />
E MPoWErED<br />
Agile teams operate at a fast pace<br />
and a lot happens almost every day<br />
during a Sprint. This means that the<br />
Product Owner will need to make decisions<br />
and give answers to questions<br />
on a very regular and frequent basis.<br />
If the Product Owner needs to defer<br />
to a higher power whenever they are<br />
asked a question or they need formal<br />
authorisation to make a decision, this<br />
will hamper the team and the product<br />
development effort considerably.<br />
Often an empowered Product Owner<br />
with less knowledge is more effective<br />
than a more knowledgeable, disempowered<br />
Product Owner as the agile<br />
approach allows the Product Owner to<br />
discover knowledge quickly.<br />
N EGotIABLE<br />
Because of the number of stakeholders<br />
that a typical Product Owner will<br />
need to work with, negotiation skills<br />
are very important to succeeding in<br />
the role. One aspect of negotiation<br />
that often goes unnoticed<br />
is the ability for<br />
a Product Owner to be<br />
able to negotiate with<br />
themselves. There is<br />
almost always a conflict<br />
in the Product<br />
Owner between following<br />
their head and<br />
their heart when it<br />
comes to prioritising<br />
the Product Backlog<br />
and deciding when “potentially<br />
releasable”<br />
can become “released”.<br />
Julie Lucht / Shutterstock.com<br />
There are other skills<br />
or characteristics that<br />
can be useful as a Product Owner and<br />
you don’t necessarily need to be highly<br />
proficient in all of the above to be<br />
successful in the role. However, I have<br />
found this to be a useful starting point<br />
both for those looking to find someone<br />
for the role of Product Owner and<br />
for Product Owners themselves who<br />
are looking to improve the results of<br />
their teams.<br />
Geoff Watts is a trainer and<br />
coach who regularly runs<br />
highly-regarded Certified<br />
ScrumMaster and Certified<br />
Scrum Product Owner as well<br />
as advanced classes in London<br />
and Oslo on a public and<br />
private, in-house basis. Check<br />
out his next courses in the<br />
course schedule<br />
training for developers and leaders<br />
in oslo, London or wherever you like<br />
ProgramUtvikling offers the best courses and most<br />
flexible training to the developer community wherever<br />
you want us to. Our philosophy is to provide<br />
“practical, applicable knowledge” by providing the<br />
highest quality training with the best instructors.<br />
In addition to our permanent staff we have a number<br />
of exciting and well-known instructors such as Herb<br />
Sutter, Craig Larman, Billy Hollis, Mike Cohn, Geoff<br />
Watts, Gill Cleeren, Sahil Malik and a great staff of<br />
excellent Scandinavian instructors.<br />
OSLO - www.programutvikling.no LONDON - www.developerfocus.com<br />
NDC has become one of the largest conferences dedicated to .NET and<br />
Agile development and is hosted by ProgramUtvikling AS.<br />
HTML5 • Javascript • Mobile • Agile • Scrum • Design .NET • Java • Architecture • TDD • SharePoint • C++<br />
Photo: Shutterstock
30<br />
Gojko Adzic is a strategic<br />
software delivery consultant<br />
who works with ambitious<br />
teams to improve the quality<br />
of their products and<br />
processes. Gojko won the<br />
Jolt Award for the best book<br />
of 2012. In 2011, he was<br />
voted by peers as the most<br />
influential agile testing<br />
professional, and his blog<br />
won the UK agile award for<br />
the best online publication in<br />
2010. Gojko’s new book<br />
Impact Mapping: Making a<br />
Big Impact with Software<br />
Products and Projects is now<br />
available from all major<br />
retailers and from http://<br />
StoP DECLArInG<br />
vICtory too Soon<br />
My assumption, not based on any serious industry<br />
research but just on experience working with many<br />
different teams in different markets, is that as an<br />
industry we waste a huge amount of time and money<br />
testing and maintaining the wrong things. And at the<br />
core of the problem is that software teams declare<br />
victory too soon.<br />
As tests pass on a continuous integration<br />
environment, hopefully after some<br />
exploratory testing as well, we move<br />
stickies to a “Done” column and that's<br />
it. A small percentage of teams will hold<br />
off declaring victory until the software<br />
is live in production, but this is where<br />
the journey ends. It shouldn't be.<br />
With the pressure of shorter delivery<br />
phases, ubiquitous for the IT industry<br />
at the moment, teams that make better<br />
decisions about investing time and<br />
money in delivery and quality related<br />
activities, will be able to gain a significant<br />
competitive advantage. But we<br />
will first have to change our understanding<br />
of quality, and stop declaring<br />
victory too early.<br />
In 2007, Nokia was on the top of the<br />
world, one of the most recognisable<br />
and valuable brands. Wanting to<br />
move into the internet services space,<br />
where it had to face established players<br />
on their home turf, the company<br />
bet big on an innovative service offering<br />
called Ovi. According to Tim<br />
Brown, author of the seminal book on<br />
Design Thinking, Change by Design:<br />
How Design Thinking Transforms Organizations<br />
and Inspires Innovation<br />
(http://amzn.to/WlvNGV), Ovi was a<br />
key success story to showcase design<br />
thinking. The book was published in<br />
2009, and Brown declared Ovi a huge<br />
victory: “Design thinking had enabled<br />
Nokia not only to explore new possibilities<br />
but also to convince itself that<br />
By Gojko Adzic<br />
these possibilities were sufficiently<br />
compelling to move away from its<br />
strongly entrenched and previously<br />
successful approach… Today Ovi is<br />
one of the operating business divisions<br />
of the company, and Nokia – a<br />
technology leader – has reinvented itself<br />
as a service provider.” Yet history<br />
will remember Ovi completely differently,<br />
or most likely not remember it<br />
at all.<br />
If ever there was a IT equivalent of<br />
harakiri, this was it. Nokia – a technology<br />
leader – has “reinvented itself<br />
as a service provider” but the service<br />
was struggling to find enough customers<br />
to gain a serious foothold in<br />
the market. Meanwhile, Apple and<br />
Google took over the mobile world.<br />
Not giving up, Nokia almost bet the<br />
company on this in 2010, and started<br />
rebranding other services to push the<br />
Ovi brand. This led to ridicule in media,<br />
such as an article by Andrew Orlowski<br />
in The Register (http://bit.ly/<br />
Y5RtMw): “People often ask, ‘What's<br />
a Nokia? - is it some new kind of yoga<br />
or a fashionable new diet?’ ” Then you<br />
remind them - it's the platform for the<br />
Ovi mobile services experience - and<br />
the fog of confusion quickly clears”.<br />
In 2011, the feedback loop finally<br />
closed and someone decided, to quote<br />
another Orlowski’s article from The<br />
Register, to give Ovi a mercy bullet.<br />
Once a leader in the market, Nokia is<br />
now a follower in a pack led by iPhone<br />
and Android device manufacturers.<br />
www.impactmapping.org © JungHyun Lee / Shutterstock.com<br />
31
I can’t really speak about the quality<br />
of their production process, as I was<br />
never an insider, but as a former occasional<br />
user of their devices I have the<br />
utmost respect for the technical quality<br />
of Nokia’s products. I’m sure that<br />
design thinking brought in customer<br />
engagement and usability, but what<br />
good is all that if customers don’t end<br />
up using it?<br />
This story shows how dangerous it is<br />
to declare victory too early and ignore<br />
the feedback from the market. The<br />
key thing missing from the Nokia Ovi<br />
story is the fulfilment of the potential.<br />
When it comes to software quality,<br />
most teams I worked with would focus<br />
on proving that functionality is present,<br />
performant enough, usable and<br />
so on, but that all proves potential for<br />
someone to actually use our products,<br />
not the fulfilment of the potential. If<br />
nobody is using our stuff, should we<br />
really care that all tests passed?<br />
<strong>We</strong> declare victory when our unit<br />
tests, acceptance tests and exploratory<br />
tests pass. But those things are<br />
just telling us that we did what was<br />
asked for, not that the results actually<br />
deliver quality. Even usability testing<br />
with real users shows that they can<br />
use our stuff, not that they are actually<br />
using it in the market. If all the<br />
tests for a software feature pass but<br />
not enough people use it, can we really<br />
claim that quality was assured? Is it<br />
justified to keep investing in testing<br />
and maintaining features that are not<br />
used enough? I’ve seen far too many<br />
teams that suffer from huge maintenance<br />
costs of their legacy software,<br />
but never ask if the features tested by<br />
those suites are still actually useful<br />
to anyone.<br />
Even proving that something is used<br />
in the field is still too early to declare<br />
victory. End-users might <strong>love</strong> something<br />
dearly and use frequently, but it<br />
might be for the wrong reasons or not<br />
in line with overall business goals. The<br />
early 1990s marketing campaign of<br />
vacuum cleaner manufacturer Hoover<br />
(http://bbc.in/UUHDH7) is one of the<br />
most famous cases that illustrates<br />
that point. As a way to clear up old<br />
products from warehouses, Hoover<br />
offered anyone who spent more than<br />
£100 two free return flights, initially<br />
only to Europe. With an overwhelming<br />
response from customers and travel<br />
agents unable to keep up with the demand,<br />
the promotion was extended<br />
to US flights. It doesn’t take a math<br />
genius to figure out that people were<br />
soon buying Hoover products only to<br />
get a surreal discount on intercontinental<br />
flights, and the whole thing<br />
imploded. The campaign left Hoover<br />
with a costing of roughly £50 million<br />
and resulted in six years of court proceedings<br />
with disgruntled customers,<br />
remembered in history as one of the<br />
worst marketing disasters. Hoover’s<br />
promotion was used, but was a business<br />
failure.<br />
A potential solution for this conundrum<br />
is in the work of Robert Brinkerhoff,<br />
in particular his book The<br />
Learning Alliance, on applying system<br />
thinking to HR development (http://<br />
amzn.to/T6PSQu). Trying to answer<br />
why large organisations waste a huge<br />
amount of money and time on training<br />
programmes that do not make a<br />
big difference at the end, Brinkerhoff<br />
suggested in 1994 that the way companies<br />
measure training programmes<br />
was wrong. This message should have<br />
been translated to software two<br />
decades ago, but it was completely<br />
ignored. Much in the same way, many<br />
companies waste a huge amount of<br />
money on IT programmes that do not<br />
really make a big difference at the<br />
end. For example, according to a research<br />
published by the BCS (http://<br />
bit.ly/TZSxfE) commercial organisations<br />
across the European Union lost<br />
142 billion EUR on failed IT projects<br />
in 2004 alone, mostly because of poor<br />
alignment with business objectives or<br />
business strategies becoming obsolete<br />
during delivery. <strong>We</strong> measure the<br />
wrong things.<br />
Brinkerhoff suggests measuring success<br />
of training programmes against a<br />
change that the training was intended<br />
to create in someone’s work or behaviour,<br />
an impact on someone’s way<br />
of working. Translated to software,<br />
this would mean by measuring quality<br />
against an intended impact on<br />
the behaviour or work of our users<br />
and stakeholders. The problem many<br />
readers will no doubt spot with this<br />
is that very few organisations actually<br />
define those impacts upfront.<br />
The knowledge about this exists in<br />
some senior stakeholders’ heads but<br />
is rarely communicated and almost<br />
never evaluated. At the same time,<br />
having this information up front would<br />
enable us to take the test-driven concepts<br />
much further - not just to software<br />
but to actual business impacts.<br />
For example, instead of declaring the<br />
role and purpose in a user story (“As<br />
a settlement team member, in order<br />
to process important exceptions, I<br />
want…”) I started asking people to<br />
declare the change in someone’s behaviour.<br />
Don’t tell me just “in order to<br />
process important exceptions”, tell me<br />
how would the processing differ from<br />
the current situation. From my experience,<br />
this opens up a fantastic discussion<br />
on measuring those impacts. Say<br />
that the difference is “process important<br />
exceptions faster”, we can start<br />
discussing how much faster, over what<br />
period, and what slows down the process<br />
at the moment. Then we can test<br />
for those impacts once a user story is<br />
delivered, and see if it actually ended<br />
up leading to the expected impacts.<br />
Another Brinkerhoff’s suggestion is<br />
linking those impacts to actual company<br />
business goals, and measuring<br />
the contribution of individual impacts.<br />
Why do we want to help settlement<br />
team members to process exceptions<br />
faster? How does that contribute to<br />
the vision of our product? Discussing<br />
those things up front also allows us<br />
to measure such higher-level impacts<br />
and decide if the software change is<br />
actually successful from a business<br />
perspective.<br />
Just to ensure that there is no misunderstanding,<br />
I think that unit, ac-<br />
ceptance and exploratory tests, usability<br />
studies and all the other types<br />
of checking, inspections and testing<br />
done today, are important. But I also<br />
think that they are insufficient to assure<br />
quality, without considering if<br />
something is really useful and if that<br />
usage leads to business success. If<br />
we really want to assure quality, we<br />
should look for ways to close those<br />
two additional feedback loops and<br />
inform decisions on where to invest<br />
our time in the future, both from design,<br />
delivery and quality assurance<br />
perspectives.<br />
32 33<br />
© JungHyun Lee / Shutterstock.com
NDC is one of the World’s largest conferences<br />
dedicated to .NET and Agile development.<br />
Here are some of our workshop speakers:<br />
Pre-conference workshops June 10-11th on top of Plaza!<br />
Book your hotel room today!<br />
Radisson Blu Plaza / Thon Opera / Thon Spektrum / Thon Astoria / Thon Terminus<br />
Please visit ndcoslo.com for more information!<br />
Get your Early Bird<br />
tickets before<br />
March 15th<br />
Claims-based identity<br />
MonoTouch<br />
Win8<br />
F#<br />
Accelerated Agile<br />
BDD<br />
Clean Architecture<br />
TDD<br />
R#<br />
Embracing Uncertainty<br />
ndcoslo.com<br />
JavaScript I + II<br />
Plaza Panorama
36<br />
Ember.js positions itself as a framework to help you build truly ambitious web<br />
applications. Summarized Ember.js is a framework for developing web applications<br />
with a rich user interface, fi rmly rooted in the technologies that shape our<br />
web experience (HTML, CSS and JavaScript), while helping the developers maintain<br />
structure and control of their code through a rich object model, automatically<br />
updating templates, powerful and consistent bindings and support for rich<br />
interactive views.<br />
In order to deliver on these promises Ember.js uses a strict<br />
Model-View-Controller (MVC) pattern that lets your organize<br />
your code in a clear and concise manner. Additionally,<br />
it relies heavily on naming conventions and standardized<br />
patterns, while it is nice enough to get out of your way<br />
and let you override these conventions and patterns when<br />
you would rather make your own choices.<br />
Enough talk. Lets go ahead and write a small Ember.js based<br />
application. <strong>We</strong> will write a simple application that we can<br />
use to write notes in. <strong>We</strong> will be able to create new named<br />
notes, and we will be able to fi ll each note with text. The<br />
end result will look like the picture shown above this article.<br />
First we need to create a namespace for our application,<br />
as well as a Route that will bind to the “/” URL.<br />
var Notes = Ember.Application.create();<br />
Notes.Router.map(function() {<br />
this.route("notes", {path: "/"});<br />
});<br />
Note that we are creating the namespace Notes, which we<br />
WrItInG<br />
AMBItIouS WEBAPPS<br />
WItH EMBEr.JS<br />
By Joachim Haagen Skeie<br />
will use to contain the complete code for our application.<br />
Following Ember.js’ naming convention we don’t need to<br />
declare a class for Notes.Router, as Ember.js will create<br />
this for us automatically. <strong>We</strong> are using the map function to<br />
match the URL “/” to a Route named notes. Note that Ember.<br />
js would have created a default index route for us, named<br />
"index" if we hadn't supplied our "notes" route. At this point<br />
Ember.js expects a few things from your application:<br />
• An application controller, view and template<br />
• A Notes route, controller, view and template<br />
Because we are not overriding the defaults for either the<br />
application controller or the application view we don’t need<br />
to declare them. <strong>We</strong> are, however, changing the application<br />
template, adding an outlet for the list of notes. In addition<br />
we want to render the selectedNote when a note is<br />
selected. To create a new outlet with its own named controller,<br />
route and view, we are going to use the handlebars<br />
expression render.<br />
Ember.TEMPLATES['application'] = Ember.Handlebars.<br />
compile('' +<br />
'{{outlet}}{{render selectedNote}}'<br />
);<br />
NOTE: This article is based upon Ember.js version 1.0.0 Pre 4. As Ember.js moves towards the fi nal 1.0 release, some of the APIs might change somewhat.<br />
Next, we need to fi ll these outlets with the correct views.<br />
For this we will override the default NotesRoute.<br />
Notes.NotesRoute = Ember.Route.extend({<br />
setupController: function(controller) {<br />
controller.set('content', []);<br />
var selectedNoteController = this.controllerFor('selectedNote');<br />
selectedNoteController.set('notesController', controller);<br />
}<br />
});<br />
<strong>We</strong> are using the setupController function to connect the<br />
NotesController with the SelectedNotesController. As<br />
we wont be requiring any special rendering, we don't need to<br />
override the render Template function. The notes template<br />
will be rendered to the outlet, while the selectedNote will<br />
be rendered as part of the Handlebars render expression.<br />
Because we are using Ember .js1.0.0 pre 4, we need to<br />
explicitly connect the two controllers together manually.<br />
When Ember.js 1.0 RC ships, this will be handled at the<br />
controller level using the needs keyword. In the above<br />
example, Notes.SelectedNoteController would simply<br />
specify needs: ['notes'], and Ember. Router would provide<br />
the correct connections automatically.<br />
By default the NotesView will use template names notes.<br />
So, lets start by taking a closer look at the notes template.<br />
Ember.TEMPLATES['notes'] = Ember.Handlebars.compile('' +<br />
'{{view Notes.TextField target="controller" action="createNewNote"<br />
classNames="input-small search-query mediumTopPadding"<br />
valueBinding="controller.newNoteName"}}' +<br />
'New Note' +<br />
'{{view Notes.NoteListView}}'<br />
);<br />
© Tyler Olson / Shutterstock.com<br />
37
38<br />
The template starts out by defi ning the text input fi eld<br />
where the user can input the name of the new note along<br />
with a button that the user can click to create the new<br />
note. Both the text fi eld and the button will fi re the action<br />
createNewNote, which will be called either when the user<br />
hits the carriage return key inside the text fi eld, or when<br />
the button is pressed. Further, the value of the text fi eld<br />
is bound to the controller.newNoteName property via<br />
the valueBinding attribute. In fact, whenever a property<br />
or a template attribute ends with the keyword Binding,<br />
Ember.js will set up a two-way binding in order to keep<br />
data in sync between layers within your application, even<br />
all the way out to the view.<br />
You might be wondering how our Notes application knows<br />
when and which note to display, and the secret to this lies<br />
in the NoteListItemView.<br />
Notes.NoteListItemView = Ember.View.extend({<br />
click: function() {<br />
this.get('controller').set('selectedNote', this.get('content'));<br />
}<br />
});<br />
I have omitted most of the code in this view. Each Ember<br />
View will inherit either directly or indirectly from the Ember.<br />
View class bringing with it a slew of nice functionality,<br />
one of which is event handling. The NoteListItemView is<br />
listening for the click event, which will update the selectedNote<br />
property on its controller whenever the view is<br />
clicked upon with the mouse.<br />
At this point, the only thing missing is the selectedNote<br />
template.<br />
Ember.TEMPLATES['selectedNote'] = Ember.Handlebars.compile('' +<br />
'{{#if controller.content}}' +<br />
'{{name}}' +<br />
'{{view Ember.TextArea valueBinding="value"}}' +<br />
'{{/if}}'<br />
);<br />
As you can see the selectedNote template will only render<br />
if its controller (the SelectedNoteController) has a<br />
content, and it will render a simple headline and a text area<br />
inside which it will bind the contents the selected note.<br />
In this article we have blazed through some of the building<br />
blocks of an Ember.js application, but it should be enough<br />
to get you up and running.<br />
The code sample, the Notes application, is adapted from<br />
the fi rst chapter of the book ”Ember.js in Action”, which I<br />
am currently writing. The book will be published by Manning<br />
Publications in the third quarter of this year, but rest<br />
assured, you will be able to get early access to the chapters<br />
from mid february as they are being written, exclusively<br />
through the books website at http://manning.com/skeie/.<br />
A working example of the notes Application is deployed<br />
here: http://stuff.haagen.name/notes/. You can get the full<br />
source code at http://stuff.haagen.name/notes/notes.zip.<br />
Ember.js<br />
Joachim is the author of "Ember.js in Action", published<br />
by Manning Publications. He works as an independent<br />
consultant through his company Haagen Software AS<br />
and has worked with various web technologies since<br />
2006, ranging from JavaServer Pages, JavaServer Faces,<br />
SproutCore to Ember.js. He have been the technology lead<br />
for norways largest retail application (measured in volume)<br />
and know the pains that server–side generated markup<br />
and scripts can cause while trying to scale out a service.<br />
He fi nally saw the light when he discovered SproutCore<br />
in 2009. When Ember.js broke out of the SproutCore<br />
community, he knew this was the way to build<br />
web applications for the future!<br />
Get inspired by our<br />
EXPERIENCED INSTRUCTORS<br />
GEOFF WATTS<br />
cSm:<br />
oslo 23. april<br />
london 9. april<br />
cSPo<br />
GEOFF WATTS<br />
oslo 25. april<br />
london 11. april<br />
london: 11. april<br />
london: 11. april<br />
london: 11. april<br />
april 25. april 25. april 25.<br />
www.developerfocus.com<br />
cSm<br />
MIKE COHN<br />
oslo: 4. march, 3. June<br />
london: 14. may<br />
cSPo<br />
MIKE COHN<br />
oslo: 7. march, 5. June<br />
accelerateD<br />
agile: from<br />
monthS to<br />
minuteS<br />
DAN NORTH<br />
oslo: 10, 11. June<br />
coaching agile<br />
teams course<br />
LYSSA ADKINS/<br />
MICHAEL K. SPAYD<br />
oslo: 15. april<br />
oslo: 15. april<br />
LYSSA ADKINS/<br />
MICHAEL K. SPAYD<br />
agile development<br />
with Scrum<br />
ARNE LAUGSTØL<br />
oslo: 10. may<br />
www.programutvikling.no
DESCrIPtIon<br />
During the ScrumMaster class,<br />
attendees will learn why such a<br />
seemingly simple process as Scrum<br />
can have such profound effects on an<br />
organization. Participants gain<br />
practical experience working with<br />
Scrum tools and activities such as<br />
the product backlog, sprint backlog,<br />
daily Scrum meetings, sprint planning<br />
meeting, and burndown charts.<br />
Participants leave knowing how to<br />
apply Scrum to all sizes of projects,<br />
As you watch the product take<br />
shape, iteration after iteration, you<br />
can restructure the Product Backlog<br />
to incorporate your insights or<br />
respond to changes in business<br />
conditions. You can also identify and<br />
cancel unsuccessful projects early,<br />
often within the fi rst several months.<br />
The Certifi ed Scrum Product Owner;<br />
course equips you with what you<br />
need to achieve success with Scrum.<br />
Intuitive and lightweight, the Scrum<br />
process delivers completed increments<br />
of the product at rapid,<br />
regular intervals, usually from every<br />
two weeks to a month. Rather than<br />
the traditional system of turning a<br />
Courses with<br />
MIkE CoHn<br />
CErtIfIED SCruMMAStEr - CSM – MIkE CoHn<br />
This two day course—taught by author and popular Scrum and agile trainer<br />
Mike Cohn—not only provides the fundamental principles of Scrum, it also gives participants<br />
hands–on experience using Scrum, and closes with Certifi cation as a recognized<br />
ScrumMaster.<br />
from a single collocated team to a<br />
large, highly distributed team.<br />
you WILL LEArn<br />
Practical, project–proven<br />
practices<br />
The essentials of getting a<br />
project off on the right foot<br />
How to write user stories for<br />
the product backlog<br />
Why there is more to leading a<br />
self–organizing team than buying<br />
pizza and getting out of the way<br />
project over to a project manager<br />
while you then wait and hope for the<br />
best, Scrum offers an effective<br />
alternative, made even more attractive<br />
when considering the statistics<br />
of traditional product approaches in<br />
which over 50% of all projects fail<br />
and those that succeed deliver<br />
products in which 64% of the<br />
functionality is rarely or never used.<br />
Let us help you avoid becoming one<br />
of these statistics.<br />
you WILL LEArn<br />
Practical, project–proven<br />
practices<br />
How to write user stories for<br />
the product backlog<br />
How to help both new and<br />
experienced teams be<br />
more successful<br />
How to successfully scale Scrum<br />
to large, multi–continent projects<br />
with team sizes in the hundreds<br />
Tips and tricks from the instructors<br />
ten–plus years of using Scrum in a<br />
wide variety of environments<br />
courSe Date<br />
Oslo: 4 March, 3 June<br />
London: 14 May<br />
CErtIfIED SCruM ProDuCt oWnEr - CSPo – MIkE CoHn<br />
Certifi ed Scrum Product Owner Training teaches you, the product owner, how to use<br />
the product backlog as a tool for success.<br />
Proven techniques for prioritizing<br />
the product backlog<br />
How to predict the delivery date<br />
of a project (or the features that<br />
will be complete by a given date)<br />
using velocity<br />
Tips for managing the key<br />
variables infl uencing project<br />
success<br />
Tips and tricks from the<br />
instructors fi fteen years of<br />
using Scrum in a wide variety<br />
of environments<br />
courSe Date<br />
Oslo: 7 March, 5 June<br />
OSLO - www.programutvikling.no LONDON - www.developerfocus.com<br />
ADVERTISEMENT<br />
courSeS for developers and leaders
effective concurrency<br />
Herb Sutter<br />
agile<br />
Allan Kelly<br />
Gojko Adzic<br />
Mattias Skarin<br />
effective concurrency<br />
Author and instructor: Herb Sutter<br />
This course covers the fundamental tools that software developers need to write effective concurrent software<br />
for both single–core and multi–core⁄many–core machines. To use concurrency effectively, we must identify and<br />
solve four key challenges: 1. Leverage the ability to perform and manage work asynchronously.<br />
2. Build applications that naturally run faster on new hardware having more and more cores.<br />
3. Manage shared objects in memory effectively. 4. Engineer specifi cally for high performance<br />
aPPlying lean thinking to SoftWare DeveloPment - incluDing an introDuction to<br />
the kanBan methoD<br />
Author and instructor: Allan kelly<br />
Demonstrate how Lean thinking can be applied to software development and equip students with practical<br />
tools for improving their development processes and environments. This workshop uses lecture material<br />
and exercises to teach Lean ideas and provide students with experience of applying Lean techniques.<br />
Those responsible for the development of software: Who should attend?: Project Managers, Team Leaders,<br />
Development Directors and Managers, Scrum Masters and Architects.<br />
BDD - SPecification By examPle<br />
nEW<br />
Author and instructor: Gojko Adzic<br />
This three day workshop teaches you how to apply emerging practices for managing requirements,<br />
specifi cations and tests in agile and lean processes to bridge the communication gap between stakeholders<br />
and implementation teams, build quality into software from the start, design, develop and deliver systems fi t<br />
for purpose.<br />
kanBan<br />
Author and instructor: Mattias Skarin<br />
Kanban is a lean process tool with low process footprint. Kanban helps you drive improvements, both in your<br />
environment and in the surrounding value stream. Learn how to introduce kanban and how to use kanban to spark<br />
cooperative problem solving. Kanban is well suited for complex environment were overview is normally hard to<br />
fi nd.<br />
in-house training<br />
anywhere in the world<br />
Our courses can be customized and tailored to<br />
meet your training needs and requirements.<br />
<strong>We</strong> think globally, and will deliver in-house<br />
training anywhere you want us to. In addition to<br />
our scheduled courses, we offer a number of<br />
courses on demand.<br />
Please contact us for more information at<br />
info@programutvikling.no or<br />
info@developerfocus.com<br />
agile - management<br />
42 43<br />
Craig Larman<br />
Jurgen Appelo<br />
Didier Soriano<br />
Mike Cohn<br />
Dan North<br />
Allan Kelly<br />
Geoff Watts<br />
agile anD iterative DeveloPment - a managerS guiDe<br />
Author and instructor: Craig Larman<br />
This practical, information-packed seminar summarizes the key research, ideas, and practices of iterative<br />
development, aimed at executive and project leadership. This is a high-impact guide for managers and students<br />
to agile and iterative development methods: what they are, how they work, how to implement them – and why<br />
you should. Whether you’re an IT executive, project manager, student of software engineering, or developer,<br />
Craig Larman will help you understand the promise of agile/iterative development, sell it throughout your<br />
organization – and transform the promise into reality.<br />
agile management<br />
Author and instructor: Jurgen Appelo<br />
topics (Learning objectives) This course is the fi rst course day based on the book Management 3.0, which addresses<br />
the following three themes: You will learn about different agile methods, popular best practices, agile adoption<br />
strategies, and the role of the manager⁄team leader in agile organizations, second you will learn about creativity in<br />
the workplace, tips for intrinsic motivation, and how to form diverse and productive teams, and third you will learn<br />
when to manage and when to lead, and how to protect people and resources from any bad effects of self–organization.<br />
Pmi® agile certifieD Practitioner (Pmi-acP)<br />
nEW<br />
Author and instructor: Didier Soriano<br />
This training is tailored to help Scrum Masters, Product Owners or seasoned Scrum practitioners (you need<br />
to have attended a two–day course in Agile Methodology) to cover the curriculum needed to pass the exam.<br />
At the end of this course, you will be able to apply for passing the PMI–ACP examination. This multiple–choice<br />
test require to be taken at a Prometric Test Centre (ProgramUtvikling is a Prometric centre).<br />
agile eStimating anD Planning<br />
nEW<br />
Author and instructor: Mike Cohn<br />
Despite the many worthless plans that weve all seen—which may make us want to skip planning altogether—<br />
this Agile Estimating and Planning Training will demonstrate that its possible to create accurate project plans<br />
useful for programming testing—and projecting forward from 6–9 months. Our Agile Estimating and Planning<br />
Training will teach you how to create practical, useful and reliable plans for your software development projects.<br />
accelerateD agile: from monthS to minuteS<br />
Author and instructor: Dan north<br />
During this course you will learn unusual and counter–intuitive techniques for software delivery and<br />
understand the principles behind them. Using a mixture of discussion, instruction and exploration you will<br />
start to think differently about agile development, automation and team dynamics. By exploring several<br />
architecture and development strategies you will learn how you and your teams can produce and deploy<br />
software faster than they thought possible. You’ll never look at TDD the same way again, not to mention<br />
copying–and–pasting code.<br />
agile founDationS for BuSineSS analyStS<br />
Author and instructor: Allan kelly<br />
This course focuses on the role of requirements in driving generic Agile teams with reference to Scrum<br />
project management and XP technical practices. The Business Analyst’s role on an Agile team is described<br />
together with the additional tools, techniques and approaches available.<br />
retroSPective techniqueS<br />
nEW<br />
Author and instructor: Geoff Watts<br />
The 2–day Retrospective Techniques course will teach the 5 step structure for facilitating a retrospective as<br />
described by Esther Derby and Diana Larsen and will also cover a number of approaches to be used in each part<br />
of the process. As well as leaving with new techniques for their retrospective toolboxes, attendees will get the<br />
opportunity to practice putting together a retrospective agenda and running and⁄or experiencing many of the<br />
techniques they will learn about.<br />
for a complete course overview visit www.programutvikling.no and www.developerfocus.com<br />
nEW<br />
nEW
Scrum<br />
Arne Laugstøl<br />
Mike Cohn<br />
Geoff Watts<br />
Mike Cohn<br />
Geoff Watts<br />
Mike Cohn<br />
agile DeveloPment With Scrum<br />
Author and instructor: Arne Laugstøl<br />
This course will give an introduction to development in Scrum and agile development. The Participants will<br />
learn how to practice Scrum by collaborating as part of a Scrum-team during the labs. The course is aimed at<br />
people that is either going to participate in Scrum-teams, or just wants to know more of the concepts of<br />
Scrum and agile-development. You don’t need to be a developer to gain a full benefit from the course.<br />
certifieD ScrummaSter cSm<br />
Author and instructor: Mike Cohn<br />
During the ScrumMaster class, attendees will learn why such a seemingly simple process as Scrum can have such<br />
profound effects on an organization. Participants gain practical experience working with Scrum tools and activities<br />
such as the product backlog, sprint backlog, daily Scrum meetings and sprint planning meeting. Participants<br />
leave knowing how to apply Scrum to all sizes of projects. The course gives you the title of Certified ScrumMaster.<br />
certifieD ScrummaSter cSm<br />
Author and instructor: Geoff Watts<br />
Learn the Scrum framework for an agile project and the essentials of working as a ScrumMaster or Scrum team<br />
member. Through a fun mix of theoretical explanation, problem exploration and practical exercises, this 2–day<br />
course will equip attendees for their first Scrum project or enable them to reflect on their projects and become<br />
more agile.<br />
certifieD Scrum ProDuct oWner cSPo<br />
Author and instructor: Mike Cohn<br />
This course will teach you, the product owner, how to use the product backlog as a tool for success. As you watch<br />
the product take shape, iteration after iteration, you can restructure the Product Backlog to incorporate your<br />
insights or respond to changes in business conditions. You can also identify and cancel unsuccessful projects<br />
early, often within the first several months. The Certified Scrum Product Owner; course equips you with what<br />
you need to achieve success with Scrum.<br />
certifieD Scrum ProDuct oWner cSPo<br />
Author and instructor: Geoff Watts<br />
During this course you will understand the product owner role with its authority and responsibility, and its<br />
interaction with the other Scrum roles. You will be able to create a product vision, stock and groom the<br />
product backlog, prioritise the backlog, and systematically refine requirements. You will also be able to create<br />
a realistic release and track the project progress and understand how you can effectively collaborate with the<br />
ScrumMaster and team in the sprint meetings.<br />
effective uSer StorieS for agile requirementS<br />
Author and instructor: Mike Cohn<br />
This course provides you with the knowledge and tools needed to identify and write effective and helpful<br />
user stories. Youll learn the six attributes all good stories must exhibit and thirteen guidelines for writing a<br />
better user story. The class explores how user role modeling can help when gathering a projects initial stories.<br />
During this hands–on course, all participants will have the opportunity to practice identifying user roles and<br />
writing stories on a case study<br />
Lyssa Atkins<br />
coaching agile teamS courSe<br />
Author and instructor: Lyssa Atkins and Michael k. Spayd<br />
Coaching Agile Teams is a training experience that covers both the being and the doing of agile<br />
coaching. There’s a lot to learn, experience and practice! At the end of the course, you will be<br />
capable of applying many new tools and techniques, as well as your own mindset changes, to<br />
coach agile teams to high performance. As practical as it is provocative, the Coaching Agile<br />
Teams course challenges agile coaches to rise to the fullest expression of their role and offer<br />
simple, practical ways to get there.<br />
Michael K. Spayd<br />
teSt-Driven DeveloPment, teSting<br />
Brutal refactoring<br />
nEW<br />
Author and instructor: Michael feathers<br />
In this course, Michael Feathers will teach you a series of techniques that you can use to identify and execute<br />
high–impact refactorings in your codebase – changes that help your team move forward and in a more productive<br />
way. Many of these refactorings involve the consideration of new architectural styles and analysis of existing<br />
code. This course will present you with the tools to make that work possible.<br />
BDD - SPecification By examPle<br />
Author and instructor: Gojko Adzic<br />
nEW<br />
This three day workshop teaches you how to apply emerging practices for managing requirements,<br />
specifications and tests in agile and lean processes to bridge the communication gap between stakeholders<br />
and implementation teams, build quality into software from the start, design, develop and deliver systems fit<br />
for purpose.<br />
teSt-Driven DeveloPment<br />
Author and instructor: venkat Subramaniam<br />
The course has a good balance of interactive lectures and hands–on exercises. The attendees are<br />
expected to pair–up and work on the lab exercises. The instructor will assist the attendees as they work<br />
on the exercises. The objective of the course is for the attendees to gain an in depth practical knowledge<br />
of the concepts so they can put them to immediate use on real projects.<br />
teSt-Driven DeveloPment & refactoring techniqueS courSe<br />
Author and instructor: robert C. Martin<br />
This course teaches you how to use the principles and practices of TDD to specify requirements and designs using<br />
acceptance tests and unit tests. You will learn the intensely granular TDD approach to development using XUnit<br />
for unit testing and FitNesse for acceptance testing. You will experience the frequent and regular feedback and<br />
progress of letting tests drive the development and design.<br />
teSt – Driven JavaScriPt<br />
Author and instructor: Christian Johansen<br />
Even the most seasoned backend programmer is too often on thin ice once a web application’s frontend is<br />
in need of development and/or maintenance. Rid yourself of the insecurity by learning to understand and<br />
appreciate JavaScript for the highly productive and unusual language it is. The course will take you through<br />
JavaScript’s object model and functional elements, giving you a solid understanding of how JavaScript really<br />
works. A series of practical assignments puts this understanding to use by implementing reusable code using<br />
idiomatic JavaScript patterns. Unit testing and TDD will be demonstrated through-out the course.<br />
44 45<br />
Janet Gregory<br />
Michael Feathers<br />
Gojko Adzic<br />
Venkat Subramaniam<br />
Robert C. Martin<br />
Christian Johansen<br />
the Whole team aPProach to agile teSting<br />
Instructor: Janet Gregory<br />
This three day course explains how testers can become valued agile team members, how they<br />
contribute to delivering a continuous stream of business value, and ways to overcome common<br />
cultural and logistical obstacles in transitioning to an agile development process. It describes<br />
the values and principles that help testers adopt an agile testing mindset, and gives practical<br />
alternatives to traditional testing processes, such as defect tracking, metrics, audits, and<br />
conforming to quality models. Students will be shown how to complete testing activities in short<br />
iterations, and how testers contribute on a daily basis during each iteration and release cycle.<br />
for a complete course overview visit www.programutvikling.no and www.developerfocus.com<br />
nEW
DataBaSe<br />
Dag Hoftun Knutsen<br />
Dag Hoftun Knutsen<br />
Dag Hoftun Knutsen<br />
DataBaSe DeSign, -imPlementation anD Sql-Programming<br />
Author and instructor: Dag Hoftun knutsen<br />
This course covers all phases of developing a database application: Analysis, design, implementation,<br />
SQL-programming and testing. Hands-on exercises will give you practical experience. There is particular focus<br />
on how physical database design is important from a performance perspective.<br />
oracle Sql- Programming<br />
Author and instructor: Dag Hoftun knutsen<br />
This course is a comprehensive introduction to SQL, including coverage of Oracle-specific features.<br />
The course includes all aspects of SQL: Data Definition, Data Control and Data Manipulation with particular<br />
focus on querying. It also covers principles of database design for performance. Hands-on exercises provide<br />
practical experience with SQL, and you will also learn about common errors and pitfalls and how to avoid these.<br />
oracle Pl/Sql- Programming<br />
Author and instructor: Dag Hoftun knutsen<br />
This course provides a comprehensive introduction to Oracle’s procedural language PL/SQL. The course<br />
describes the language’s general structure and syntax as well as various ways of applying the language in an<br />
application. Programming experience is gained through hands-on exercises.<br />
moBile aPPlicationS<br />
Aral Balkan<br />
Aral Balkan<br />
Zigurd Mednieks<br />
aral BalkanS ioS SDk DoJo<br />
Author and instructor: Aral Balkan<br />
This unique and exclusive three–day course by Aral Balkan from Naklab⁄Geek Ninja Factory, author of<br />
the top–selling and critically–acclaimed Feathers app, introduces you to Objective–C, the iOS. Unlike purely<br />
academic courses, this is a pragmatic curriculum by a published iPhone developer, aimed at giving you a solid<br />
real–world foundation in developing and deploying iPhone applications using the iPhone SDK and Apples tools.<br />
DeSigning the moBile uSer exPerience<br />
Author and instructor: Aral Balkan<br />
Learn how to generate ideas and take them from the concept stage to wireframes to prototypes to finished<br />
product while focussing on simplicity, usability, and user experience. This workshop will teach you the processes<br />
you can follow to create mobile applications that are first and foremost usable, but also go beyond usable to<br />
being beautiful, pleasurable, and fun. In the age of user experience, this course will teach you how to build<br />
products that differentiate themselves from others based on their user experience.<br />
anDroiD aPPlication DeveloPment<br />
Author and instructor: Zigurd Mednieks<br />
You may have noticed that Android is rapidly becoming a major player in mobile. With hundreds of thousands<br />
of Android–powered phones being activated daily, you may be interested in building applications that can run<br />
on this platform. The objective of the course is to help you create compelling applications using the latest in<br />
Android technology, plus be able to support the widest possible range of Android devices.<br />
registration oslo: tel 67 10 65 65 • kurs@programutvikling.no • www.programutvikling.no<br />
registration London: tel +44 0843 523 5765 • sales@developerfocus.com •<br />
wwww.developerfocus.com<br />
46 47<br />
Java<br />
Mårten Haglind<br />
Mårten Haglind<br />
Peet Denny<br />
Jon-Anders Teigen<br />
Maarten Haglind<br />
xml<br />
Espen Evje<br />
core SPring frameWork<br />
Author: Mårten Haglind Instructors: Mårten Haglind and kaare nilsen<br />
In this four–day bootcamp you learn how to use the Spring Framework to create<br />
well–designed, testable business applications in an agile manner. Students build a<br />
Spring–powered JEE application that demonstrates the Spring Framework and<br />
other Spring technologies in an intensely productive, hands–on setting.<br />
SPring anD hiBernate DeveloPment<br />
Author: Mårten Haglind Instructors: Mårten Haglind and kaare nilsen<br />
In this five–day course you will learn how to use the Spring Framework to create<br />
well–designed, testable business applications in an agile manner. In addition to that,<br />
you will learn how to use Hibernate, to effectively map Java domain model objects to<br />
a relation database.<br />
Kaare Nilsen<br />
Kaare Nilsen<br />
Programming Java StanDarD eDition<br />
Authors and Instructors: Peet Denny<br />
This course is designed to give programmers a solid grounding in the Java Programming language. Starting with<br />
the core syntax and OO concepts, it then progresses to covering class design, arrays and collections, core<br />
libraries, exception handling, I⁄O and networking, JUnit testing an introduction to Swing as well as the new Java<br />
features (the course is always up to date with the latest versions of Java SE). After taking this course delegates<br />
should be comfortable with working from a design on real projects using core Java, will be able to attend more<br />
advanced Java courses such as JEE and have a firm grasp of the fundaments required for the SCJP exam.<br />
effective Scala<br />
Author and instructor: Jon-Anders teigen<br />
You will learn how to model rich object–oriented systems using Scala’s integration of concepts from object–<br />
oriented and functional programming. <strong>We</strong> will explore how these two paradigms complement each other to<br />
bring you the best of both worlds. During these three days you will go from learning how to explore APIs using<br />
Scala’s interpreter to building full blown applications using the Lift web framework.<br />
effective JPa - inDuStrial Strength Java PerSiStence With JPa 2.0 anD hiBernate<br />
Authors and instructors: Maarten Haglind<br />
The course gives the attendees a comprehensive kickstart into applying JPA and Hibernate for effective Java<br />
persistence. Insights will be provided into O⁄R–Mapping techniques and semantics as well as the programming<br />
model and paradigm to enable enterprise developers to instantly and productively apply the technologies<br />
involved in a real world setting. Common pitfalls as well as best practices, designs and idioms are discussed.<br />
exchanging anD managing Data uSing xml anD xSlt<br />
Author and instructor: Espen Evje<br />
This course gives a broad overview of XML, in particular of the structure and the syntax of XML documents,<br />
and of how to use XML documents in your solutions. You will learn about XML Schemas and about XPATH,<br />
and you will get an insight on how to use XML with relational databases.<br />
for a complete course overview visit www.programutvikling.no and www.developerfocus.com
DeSign - analySiS- architectureS<br />
Craig Larman<br />
Eivind Nordby<br />
Kevlin Henney<br />
Robert C. Martin<br />
Udi Dahan<br />
Juval Lowy<br />
Kristian Nordal<br />
agile DeSign anD moDeling for aDvanceD oBJect DeSign With PatternS<br />
Author and instructor: Craig Larman<br />
During this popular, high–impact, and hands–on course you will learn to design with patterns, apply visual<br />
modelling in an agile modelling approach, and a suite of related advanced design topics, including the design of<br />
packages. This course is based on acclaimed industry leader Craig Larman’s extensive experience coaching and<br />
applying OOD since the mid 1980s.<br />
analySiS anD DeSign With Scrum<br />
Author and instructor: Eivind nordby<br />
The course targets developers who need to catch the users’ needs and transform them into distinct development<br />
tasks and into a solution capable of adapting to continuous requirements changes. The workfl ow is Scrum based,<br />
and UML is used for analysis and design ahead of programming in each sprint. Bundled with object-orientation,<br />
this gives a powerful, practical, developer oriented approach to problem solving.<br />
architecture SkillS<br />
Author and instructor: kevlin Henney<br />
The Architecture Skills course introduces a broad curriculum for software architects. The course introduces<br />
development process models, architectural styles, requirements techniques, suffi cient modelling techniques, design<br />
patterns and testing practices. This course includes a number of practical exercises so that attendees can see how the<br />
different activities fi t together. There is also plenty of opportunity for discussion.<br />
agile architecture anD DeSign<br />
Author and instructor: robert C. Martin<br />
This course is a deep dive into the well–known SOLID principles of Agile and Object Oriented Design. Students<br />
will learn the characteristics of sound Object–Oriented designs and architecture, and patterns and practices<br />
that create them. Principles include: The Single Responsibility Principle, The Open Closed Principle, The Liskov<br />
Substitution Principle, The Interface Segregation Principle, The Dependency Inversion Principle, and many others.<br />
Special attention is paid to Component oriented design, and the principles and patterns of large–scale<br />
component architecture.<br />
aDvanceD DiStriButeD SyStemS DeSign uSing Soa & DDD<br />
Author and instructor: udi Dahan<br />
Tried–and–true theories and fallacies will be shown, keeping you from making those same costly mistakes today.<br />
Communications patterns like publish⁄subscribe and correlated one–way request⁄response will be used in<br />
conjunction with advanced object–oriented state management practices for long–running workfl ows. If you<br />
enjoy deep architectural discussion, if you are in charge of building a large–scale distributed system, if you want<br />
to know more about how the big guys run their systems, this is for you.<br />
the architect’S maSter claSS<br />
Author and instructor: Juval Lowy<br />
The class agenda refl ects these three elements: development process and project leadership skills,<br />
technology, and fi nally analysis and design. Students will see how to approach rarely discussed topics such as<br />
allocation of services to assemblies, allocation of services to processes, transaction boundaries, identity<br />
management, authorization and authentication boundaries and more.<br />
Domain-Driven DeSign (DDD) hanDS-on immerSion<br />
Author: Eric Evans Instructor: kristian nordal<br />
This course is written by Eric Evans and conducted by Kristian Nordal from Arktekk, which is certifi ed by Eric Evans.<br />
The course will be held in norwegian. This intensive course will aid participants in striking a healthy balance between<br />
digging into their subject matter and addressing technological issues, which, while unavoidable, cannot be allowed to<br />
dominate the development process for commercially viable systems. <strong>We</strong> weave together lecture, discussion and<br />
classroom exercises, including hands–on coding projects. In discussions, attendees have the oportunity to discuss<br />
their own experiences and relate their own work to the principles and techniques presented in the class.<br />
DeSign - analySiS- architectureS continued<br />
48 49<br />
Robert C. Martin<br />
Eivind Nordby<br />
ruBy<br />
Shay Friedman<br />
clean coDe: agile SoftWare craftSmanShiP<br />
Author and instructor: robert C. Martin<br />
This is a two–day hands–on course in which students learn the principles and practices of Clean Code as<br />
described in Robert C. Martin’s book: Clean Code: A Handbook of Agile Software Craftsmanship. This course<br />
alternates between lecture and exercise so that students can experience, fi rst–hand, the practices and disciplines<br />
of these fundamental topics.<br />
oBJect-orienteD DeveloPment<br />
Author and instructor: Eivind nordby<br />
This is a course for experienced developers who are new to, or wish to strengthen their object-oriented<br />
thinking. More than the programming itself, the diffi culty in passing to object-orientation is mental. That is why<br />
this course focuses on basic object-oriented thinking and basic design principles. Of course, there are plenty of<br />
practical exercises.<br />
ruBy on railS for <strong>We</strong>B DeveloPerS<br />
Author and instructor: Shay friedman<br />
For newcomers to rails, the move to this new framework seems very hard and frightening – a different programming<br />
language, a different web framework and even a different IDE… In this course we will start with the very basics of<br />
the Ruby language, move to the basics of Ruby on Rails and end up with advanced topics. All will be done with<br />
comparison to other frameworks to keep the topics in context with the student’s current experience.<br />
test yourself!<br />
Take your certifi cation at Programutvikling AS.<br />
See programutvikling.no for more information,<br />
or call us at 67 10 65 65<br />
for a complete course overview, price update, time and place, visit www.programutvikling.no<br />
and www.developerfocus.com<br />
registration oslo: tel 67 10 65 65 • kurs@programutvikling.no • www.programutvikling.no<br />
registration London: tel +44 0843 523 5765 • sales@developerfocus.com •<br />
wwww.developerfocus.com
html5 – JavaScriPt<br />
Christian Johansen<br />
J. Haagen Skeie<br />
SharePoint<br />
c<br />
Sahil Malik<br />
Sahil Malik<br />
Sahil Malik<br />
Olve Maudal<br />
JavaScriPt for ProgrammerS<br />
nEW<br />
Author and instructor: Christian Johansen<br />
This three day workshop will introduce you to HTML5 with a brief backstory, before diving into the<br />
APIs one by one. As well as going through code and showing practical demonstrations, where possible,<br />
we’ll also talk about the alternatives and polyfi lls for old browsers that dont support ”awesome” out of the box.<br />
Writing amBitiouS <strong>We</strong>BaPPS With emBer.JS<br />
nEW<br />
Author and instructor: Joachim Haagen Skeie<br />
This course is well suited for programmers that have felt the pain of either messy client–side code, or the<br />
pains that come with the server–side MVC model. You want to learn how to build scalable, testable and clean<br />
web applications that you can come back to and understand in 6 months, and you are willing to accept and<br />
overcome the learning curve to get there!<br />
SharePoint 2010 anD office 365: enD to enD for DeveloPerS anD DeSignerS<br />
Author and instructor: Sahil Malik<br />
This 5 day course is packed with information that will load you with enough skills to work productively<br />
on any SharePoint project. It covers development aspects or UI design concepts in depth. This course is<br />
designed for technical audience or the architect who needs to learn all aspects of the product, for the<br />
developer, designer, and the administrator.<br />
SharePoint 2013 anD office 365: enD to enD for technical auDience<br />
Author and instructor: Sahil Malik<br />
This 5 day course is packed with information that will load you with enough skills to work productively<br />
on any SharePoint project. It covers development aspects or UI design concepts in depth. This course is<br />
designed for technical audience or the architect who needs to learn all aspects of the product, for the<br />
developer, designer, and the administrator. The course has been written, and is delivered by Sahil Malik.<br />
You can expect plenty of real world insight that you don’t get in “canned courses”.<br />
SharePoint 2013 anD office 365: only the neW Stuff<br />
Author and instructor: Sahil Malik<br />
This 3 day course is packed with targeted information that will bring your skills up to date on SharePoint<br />
2013. Thiscourse is designed for technical audience or the architect who is already familiar with SharePoint<br />
2010 and isinterested in getting targeted information, or the delta between SharePoint 2013 and Share-<br />
Point 2010. The coursehas been written, and is delivered by Sahil Malik. You can expect plenty of real world<br />
insight that you don’t get in“canned courses”.<br />
DeeP c: a courSe for exPerienceD c anD c++ DeveloPerS<br />
Author and instructor: olve Maudal<br />
Programming is hard. Programming correct C is particularly hard. Indeed, even in serious industrial applications<br />
it is uncommon to see only correct, well defi ned and conforming code. Why do professional programmers write<br />
code like this? Because they lack a deep understanding, they don’t know the history and spirit of this wonderful<br />
programming language. C is not really a high level language, it is more like a portable assembler where you<br />
always need to consider the underlying hardware.<br />
nEW<br />
nEW<br />
50 51<br />
c++<br />
Mike Tarlton<br />
Hubert Matthews<br />
Hubert Matthews<br />
Scott Meyers<br />
Programming<br />
Peet Denny<br />
microSoft<br />
Peter Myers<br />
c++ 501: c++ for emBeDDeD DeveloPerS<br />
Author and instructor: Mike tarlton<br />
This course introduces the C++ language for general use. It is a subset of our more extensive 5 day course<br />
C++–501: The course is suitable for programmers who do not need to have in–depth knowledge of embedded<br />
programming concepts or concurrency issues. The course is also useful for Hardware Engineers needing to learn<br />
C++, for example to move onto using SystemC. It is assumed delegates have a working knowledge of the<br />
C programming language.<br />
aDvanceD c++ Programming<br />
Author and instructor: Hubert Matthews<br />
This course is designed to introduce delegates to more advanced use of C++. It will cover techniques and idioms<br />
that allow for more effi cient and safer use of the language as well as the concepts that make C++ different from<br />
other languages. Modern C++ techniques and facilities such as the STL are used throughout to introduce<br />
developers to the full power of the C++ language.<br />
c++11 Programming<br />
Author and instructor: Hubert Matthews<br />
This course is designed to upgrade delegates to C++11, the new C++ standard. C++11 is designed to make<br />
programming in C++ easier and more effi cient for both the developer and the machine. It will cover all of the<br />
major features along with idioms for using them effectively, giving you access to the full power of the new<br />
language and libraries.<br />
effective c++11 Programming<br />
Author and instructor:: Scott Meyers<br />
Software developers familiar with the fundamentals of C++11 are ready to advance from knowing what's in<br />
C++11 to understanding how to apply it effectively. This seminar, based on information in Scott Meyers'<br />
forthcoming Effective C++11, highlights the insights and best practices of the most accomplished C++11<br />
programmers: the things they almost always do (or almost always avoid doing) to produce clear, correct,<br />
effi cient code.<br />
introDuction to Python Programming<br />
Authors and instructors: Peet Denny<br />
This Python course is an intensive introduction to Python Programming. The objective is to enable students<br />
to understand how Python can be used to solve real-world problems through realistic and useful course<br />
exercises.<br />
zero to microSoft BuSineSS intelligence e<br />
nEW<br />
Author and instructor: Peter Myers<br />
This fi ve day intensive instructor–led training course has been designed to enable students to commence<br />
developing and maintaining state–of–the–art integrated Business Intelligence (BI) solutions developed by using<br />
Microsoft products. The course consists of numerous hands–on labs that will provide students with the opportunity<br />
to produce an end–to–end BI solution.<br />
nEW
microSoft continued<br />
Arne Laugstøl<br />
Billy Hollis<br />
Dominick Baier<br />
Scott Allan<br />
Sahil Malik<br />
Daniel Marbach<br />
Shy Cohen<br />
c#.net: utvikling av aPPlikaSJoner i .net meD c#<br />
Author and instructor: Arne Laugstøl. Instructor: Arjan Einbu<br />
In this 5-day course you will learn how to develop applications in the .Net environment.<br />
The course will teach you the C# language and how to use the platform to make applications<br />
that will run on the desktop with WPF(Window Presentation Foundation) or in the browser<br />
with ASP.Net. How to communicate with WCF(Windows Communication Foundation), and<br />
accessing data with Linq or Entity Framework is part of the course.<br />
Arjan Einbu<br />
DeSigning uSer exPerienceS: PrinciPleS anD techniqueS for DeveloPerS, managerS anD analyStS<br />
Author and instructor: Billy Hollis<br />
This class is aimed at developers, but it includes design, architecture, and development topics. Technical topics<br />
are mostly covered earlier in the class, with design and architectural topics coming later. However, because the<br />
class stresses effective design and architecture, design and architecture topics are listed first. This course will<br />
also discuss changes to WPF and related technologies in future Microsoft products, as presented at the BUILD<br />
Windows conference that takes place before the class.<br />
claimS-BaSeD iDentity & acceSS control for .net 4.5 aPPlicationS<br />
Author and instructor: Dominick Baier<br />
This course introduces to the fundamental concepts of identity & access control in .NET 4.5 and covers<br />
the integration of these new technologies into the main application frameworks like ASP.NET, ASP.NET<br />
<strong>We</strong>b API and WCF. You will learn about patterns like single sign–on, federation, home realm discovery and<br />
identity delegation and how to implement them with .NET. You will learn how to implement authentication<br />
and authorization in web applications, SOAP services and HTTP⁄REST based services. You will learn about<br />
the SAML and JWT token types and the WS–Federation, WS–Trust and OAuth2 protocols.<br />
mS 70-516 - real WorlD linq - Data acceSS, entity frameWork anD BeyonD<br />
Author and instructor: Scott Allan<br />
LINQ not only changes how we build data access components with .NET, but also introduces new flexibility and<br />
expressiveness into the C# language. In this course we’ll see how LINQ works at a language level, and also how to<br />
use LINQ with XML and the Entity Framework. <strong>We</strong>’ll look at the tradeoffs to evaluate when building a data access<br />
layer with LINQ, talk about LINQ in the context of specific design patterns, and use LINQ features in a domain to<br />
implement better business logic. This course is a combination of lectures and hands–on labs.<br />
70-513 - Wcf 4.5 With viSual StuDio 2012<br />
Instructor: Sahil Malik<br />
This course is aimed at .NET developers interested in developing deep architectural and developer level<br />
expertise in WCF 4. In addition, this course will teach you about Windows Server AppFabric and Windows<br />
Azure AppFabric. This course also explains good archtecture practises and enables you to take Exam 70–513.<br />
enterPriSe DeveloPment With nServiceBuS<br />
nEW<br />
Author and instructor: Daniel Marbach<br />
The course teaches you all the ins–and–outs of NServiceBus – the most popular, open–source service bus<br />
for .NET – now updated for NServiceBus 3.0. Used in production since 2006, NServiceBus is now used in<br />
hundreds of companies in finance, healthcare, retail, SaaS, web 2.0, and more. From basic one–way messaging,<br />
through publish⁄subscribe; providing solutions from transactions to cross–machine scale out; this hands–on<br />
course will show you how simple distributed systems development can be.<br />
the clouD architect maSter claSS<br />
nEW<br />
Author and instructor: Shy Cohen<br />
The cloud provides many great benefits, but how should one leverage all this goodness? What are the<br />
options, benefits, and caveats for using the different services in the cloud? How should teams organize to<br />
better develop software for the cloud? How does one architect cloud–scalable systems? This class answers<br />
these questions and more, as it goes through the architecture, design, and implementation of cloud components<br />
and solutions. In the class you will learn about the different elements of the cloud, cloud architecture and design<br />
patterns, how to create robust, scalable, and secure cloud solutions, possible changes to your business model,<br />
how to migrate to the cloud, the skills you need to succeed and the supporting processes, and even cost analysis.<br />
nEW<br />
microSoft continued<br />
52 53<br />
Arjan Einbu<br />
Arne Laugstøl<br />
Sahil Malik<br />
Gill Cleeren<br />
Christian <strong>We</strong>nz<br />
Paula Januszkiewicz<br />
Shy Cohen<br />
Miguel Castro<br />
<strong>We</strong>B DeveloPment in .net - aSP.net mvc , html5, cSS3, JavaScriPt<br />
Author and instructor: Scott Allen/Arjan Einbu<br />
This course covers everything you need to know to start building applications with the latest Microsoft web<br />
development stack. <strong>We</strong> will use ASP.NET MVC on the server and see how to work with models, views, and<br />
controllers. On the client we’ll take advantage of HTML 5, CSS 3, and the best JavaScript frameworks,<br />
including jQuery, Modernizr, and more. During the course we’ll also see how to apply test driven development<br />
techniques, cover best practices for security, scalability, and maintainability, and see various tips and tricks<br />
for building a compelling user experience. Over 150 pages of hands–on lab material included.<br />
70-511 WinDoWS PreSentation founDation - WPf/xaml<br />
Author and instructor: Arne Laugstøl<br />
Windows Presentation Foundation (WPF) is a .NET technology that makes it possible to create compelling<br />
applications with modern user experience. The course covers both the basic things and the advanced stuff<br />
you need to know, to be able to give the user a “wow” effect. This course will make you able to take the Exam<br />
in 70-511 Windows Application Development with Microsoft .NET Framework 4.<br />
70-583 - microSoft azure<br />
Author and instructor: Sahil Malik<br />
This course is aimed towards the .NET developer who wishes to further their knowledge about Microsoft’s<br />
cloud offering – Azure. There are many parts to Azure, Windows Azure (Compute, Storage, Virtual Machine),<br />
SQL Azure, AppFabric and DataMarket. This course methodically looks at each piece and shows you practical<br />
usage of what you can use today.<br />
creating WinDoWS 8 metro aPPS uSing c# anD xaml<br />
Author and instructor: Gill Cleeren<br />
In this 3 day training course, attendees will learn how to build Windows 8 Metro style applications that offer<br />
a great user experience and interact with Windows. Developers will learn how to use the power of the XAML<br />
language to build their application all the way from the very first idea of the application to the deployment in<br />
the Windows Store. Throughout the course, attendees will see the relation between Windows 8 and other<br />
XAML–based technologies such as Silverlight or WPF.<br />
creating WinDoWS 8 metro aPPS uSing c# anD xaml<br />
Author and instructor: Christian <strong>We</strong>nz<br />
This three–day workshop will get you started in planning and developing Windows 8 applications and finally<br />
publishing them in the Microsoft Windows Market. <strong>We</strong> will showcase the most important APIs and put them<br />
to good use. <strong>We</strong> will also discuss good JavaScript code along the way.<br />
aDvanceD WinDoWS Security maSterclaSS<br />
Author and instructor: Paula Januszkiewicz<br />
This exhaustive course covers advance Windows operating system security on Windows 7, Windows 8<br />
and Windows Server 2008 R2, as well as comparisons to older Microsoft operating systems. The attendees<br />
get not only the workbook, but also a proprietary set of useful tools and techniques to use on their own<br />
system.<br />
architecture clinic<br />
Author and instructor: Shy Cohen<br />
It is a 5 day highly interactive event where you will learn, improve, and exercise software architecture<br />
skills, all based on the IDesign Method – a breakthrough, battle–proven approach to software architecture that<br />
has shown up to 80% reduction in the effort and time required for architecting, designing, and implementing<br />
software solutions. Through its application, it produces an easy–to–follow blueprint for the construction of a<br />
software system, while covering all the important aspects involved.<br />
WinDoWS communication founDation (Wcf) maSter claSS<br />
Author and instructor: Miguel Castro<br />
nEW<br />
The training starts by explaining the motivation for WCF, and then continues to discuss in depth how to develop<br />
service–oriented applications using WCF. You will see how to take advantage of built–in features such as service<br />
hosting, instance management, asynchronous calls, synchronization, reliability, transaction management,<br />
disconnected queued calls, security as well as emerging technologies like cloud computing and the Windows<br />
Azure AppFabric service bus.<br />
nEW<br />
nEW<br />
nEW
A unique course provider!<br />
Within the space of just a few years, we have established ourselves<br />
as Norway’s leading provider of courses for IT developers and project<br />
managers. <strong>We</strong> are purely an independent course provider and we do not<br />
sell other products or services. Our ambition is to ensure that participants<br />
get the maximum out of their course, so they can make substantial<br />
practical use of the training in their daily work.<br />
viSion<br />
To provide the world’s best courses<br />
for developers and managers.<br />
BuSineSS concePt<br />
To offer developer courses in the<br />
fi eld of IT that provide practical and<br />
useful expertise.<br />
clear Strategy<br />
<strong>We</strong> have a transparent strategy that<br />
aims to provide courses for developers<br />
and project managers - and that<br />
alone. <strong>We</strong> do not attempt to sell<br />
products or consultancy services<br />
alongside.<br />
courSeS offereD<br />
<strong>We</strong> hold advanced courses in, for<br />
example, C#, .NET, SQL, UML, XML,<br />
Java, Maven, TDD and Spring. In<br />
project management, we offer the<br />
most popular methodologies within<br />
agile development, including Scrum<br />
and Lean. Our unique combination of<br />
custom courses developed in-house<br />
our vision is to provide the world’s best courses<br />
for developers and managers<br />
and standard courses means that we<br />
can help reduce the number of<br />
course days and costs for our<br />
customers.<br />
Programutvikling AS. From left: Kristoffer Sunnset , Henriette Holmen, Henriette Motzfeldt, Jakob Bradford, Kjersti Sandberg and Kristian Flågen.<br />
How to fi nd us<br />
PROGRAMUTVIKLING MAIN OFFICE, OSLO<br />
Programutvikling AS is located in the It-fornebu<br />
technology park at Snarøya.<br />
ADDrESS<br />
Martin Lingesvei 17-25, 1367 Snarøya.<br />
Our offi ces and course rooms are situated in the<br />
terminal building of the former Oslo airport.<br />
The photo shows the car park, bus stop and course<br />
rooms. For details of bus times, go to trafi kanten.no<br />
54 55<br />
54<br />
Entrance<br />
foLLoW uS on<br />
Bus stop<br />
De Vere’s Holborn Bars is one of the UK’s leading conference<br />
centres in London. Step through the imposing doors of Holborn<br />
Bars and sense you’re entering somewhere rather special – an<br />
inspirational place to hold conferences, meetings, training and<br />
assessment centres.<br />
Parking<br />
twitter.com/progutvikling www.programutvikling.no/feed/news.aspx nyheter@programutvikling.no facebook.com/programutvikling<br />
DeveloperFocus<br />
COURSE LOCATION, LONDON<br />
Set in its bustling backdrop located near London, makes a lasting<br />
impression on guests and delegates while providing a comfortable<br />
and inspiring surrounding. You will be provided with cool water &<br />
mints in all rooms, freshly brewed tea & coffee with pastries &<br />
biscuits during your breaks and delicious lunches with a different<br />
menu prepared every day. In the lobby area there are PCs to catch<br />
up on some emails during breaks and free internet access is also<br />
available.<br />
Arriving by train and tube<br />
The property is located on the north side of Holborn, close to its<br />
junction with Gray’s Inn Road. It benefi ts from excellent public<br />
© Nigel Cox/ Wikipedia<br />
EnroLMEnt oPtIonS<br />
www.programutvikling.no - info@programutvikling.no<br />
tel.: +47 67 10 65 65 - fax: +47 67 82 72 31<br />
transport links with Chancery Lane underground station,<br />
Farringdon station and City Thameslink station all in close<br />
proximity.<br />
Bus<br />
You can get to Holborn Bars by bus from London Bridge mainline<br />
station. The 521 Bus route stops opposite just outside the<br />
Sainsbury’s headquarters and Holborn Bars is a little further<br />
ahead on the other side of the road.<br />
ADDrESS<br />
Holborn Bars. 138–142 Holborn, London<br />
EC1N 2NQ<br />
EnroLMEnt oPtIonS<br />
www.developerfocus.com - info@developerfocus.com<br />
tel.: 0843 523 5765<br />
© Mark S/ Wikipedia<br />
Lucky Byatt,<br />
CEO,<br />
DeveloperFocus,<br />
London
courSe overvieW oSlo<br />
courSetitle<br />
agile Days feb mar apr may Jun location Price<br />
*Accelerated Agile: from months to minutes - Dan North 2 10 IT Fornebu 14900<br />
Agile Estimating and Planning - Mike Cohn 1 06 Felix, Oslo 7500<br />
*BDD - Specification by Example - Gojko Adzic 3 24 26 IT Fornebu 18900<br />
*Coaching Agile Teams Course - Lyssa Adkins & Michael K. Spayd 2 15 IT Fornebu 14900<br />
Effective User Stories for Agile Requirements - Mike Cohn 1 07 IT Fornebu 7500<br />
*Kanban Applied - Mattias Skarin 2 19 IT Fornebu 14900<br />
*PMI ® Agile Certified Practitioner (PMI-ACP) - Didier Soriano 2 14 IT Fornebu 14900<br />
Scrum Days feb mar apr may Jun location Price<br />
*Certified Scrum Product Owner - CSPO - Geoff Watts 2 25 IT Fornebu 14900<br />
Certified Scrum Product Owner - CSPO - Mike Cohn 2 07 05 Felix, Oslo 14900<br />
*Certified ScrumMaster - CSM - Geoff Watts 2 23 IT Fornebu 14900<br />
Certified ScrumMaster - CSM - Mike Cohn 2 04 03 Felix, Oslo 14900<br />
*Smidig utvikling med Scrum - Arne Laugstøl 1 10 IT Fornebu 6500<br />
teStDriven DeveloPment Days feb mar apr may Jun location Price<br />
*Test-Driven Development & Refactoring Techniques - Robert C. Martin 3 IT Fornebu 18900<br />
*Test-Driven Development - Venkat Subramaniam 5 15 03 IT Fornebu 24900<br />
*Test-Driven JavaScript - Christian Johansen 3 13 10 05 IT Fornebu 18900<br />
teSting Days feb mar apr may Jun location Price<br />
*BDD - Specification by Example - Gojko Adzic 3 24 26 IT Fornebu 18900<br />
*Whole Team Approach to Agile Testing - Janet Gregory 3 IT Fornebu 18900<br />
DeSign - analySiS - architectureS Days feb mar apr may Jun location Price<br />
*Advanced Distributed Systems Design using SOA & DDD - Udi Dahan 5 18 IT Fornebu 24900<br />
*Agile Architecture and Design - Robert C. Martin 4 02 IT Fornebu 22900<br />
*Agile Design and Modeling for Advanced Object Design with Patterns<br />
- Craig Larman<br />
4 IT Fornebu 21900<br />
*Architecture Skills - Kevlin Henney 3 IT Fornebu 18900<br />
*Brutal Refactoring - Michael Feathers 2 15 IT Fornebu 14900<br />
*Designing User Experiences: Principles and Techniques for Developers,<br />
Managers and Analysts - Billy Hollis<br />
3 19900<br />
*The Architect`s Master Class - Juval Lowy 5 22 London 24900<br />
moBile aPPlicationS Days feb mar apr may Jun location Price<br />
*Android Application Development 5 15 IT Fornebu 24900<br />
*Aral Balkan’s Modern iOS Development 3 25 26 IT Fornebu 18900<br />
*Designing the mobile user experience - Aral Balkan 2 24 IT Fornebu 14900<br />
microSoft Days feb mar apr may Jun location Price<br />
*70-513 - WCF 4.5 with Visual Studio 2012 - Sahil Malik 5 15 IT Fornebu 24900<br />
*70-516 Real World LINQ - Data Access, Entity Framework and Beyond<br />
- Scott Allen<br />
4 21900<br />
*70-583 - Microsoft Azure - Sahil Malik 3 18 IT Fornebu 18900<br />
*C#.NET: Utvikling av applikasjoner i .NET med C# - Arjan Einbu 5 25 08 03 IT Fornebu 24900<br />
*Claims-based Identity & Access Control for .NET 4.5 Applications<br />
- Dominick Baier<br />
2 21 06 IT Fornebu 14900<br />
*Creating Windows 8 Apps using C# and XAML - Gill Cleeren 3 12 25 IT Fornebu 18900<br />
*Creating Windows 8 Apps using HTML5 and JavaScript - Christian <strong>We</strong>nz 3 13 IT Fornebu 18900<br />
*Enterprise Development with NServiceBus - Daniel Marbach 4 21 IT Fornebu 21900<br />
*MS 70-515 <strong>We</strong>b-utvikling med ASP.NET - Arjan Einbu 5 15 IT Fornebu 24900<br />
*<strong>We</strong>b Development in .NET - ASP.NET MVC , HTML5, CSS3, JavaScript<br />
- Scott Allen/Arjan Einbu<br />
5 11 22 17 IT Fornebu 24900<br />
microSoft continued Days feb mar apr may Jun location Price<br />
*Windows 8 Camp - Peter Dwersteg 1 14 IT Fornebu 500<br />
*Windows Communication Foundation (WCF) Master Class - Miguel Castro 5 17 IT Fornebu 24900<br />
*WPF/XAML - 70-511 / 10262A Windows Presentation Foundation/XAML<br />
- Arne Laugstøl<br />
4 13 IT Fornebu 21900<br />
*Zero to Microsoft Business Intelligence - Peter Myers 5 22 IT Fornebu 24900<br />
SharePoint Days feb mar apr may Jun location Price<br />
*SharePoint 2010 and Office 365: End to End for Developers and Designers<br />
- Sahil Malik<br />
5 24900<br />
*SharePoint 2013 and Office 365: End to End for Developers - Sahil Malik 5 11 27 IT Fornebu 24900<br />
*SharePoint 2013 and Office 365: Only the new stuff - Sahil Malik 3 10 IT Fornebu 18900<br />
Java Days feb mar apr may Jun location Price<br />
*Core Spring - Mårten Haglind 4 04 IT Fornebu 21900<br />
*Effective JPA - Industrial strength Java Persistence with JPA 2.0 and Hibernate 2 28 IT Fornebu 14900<br />
*Effective Scala - Jon-Anders Teigen 3 24 IT Fornebu 18900<br />
*Play 2.0 for Java - Mårten Haglind 2 08 IT Fornebu 14900<br />
*Programming Java Standard Edition - Peet Denny 5 18 10 IT Fornebu 24900<br />
*Spring and Hibernate Development - Mårten Haglind 5 04 IT Fornebu 24900<br />
html5 - JavaScript - cSS3 Days feb mar apr may Jun location Price<br />
*JavaScript and HTML5 for Developers - Christian <strong>We</strong>nz 3 12 29 IT Fornebu 18900<br />
*JavaScript for programmers - Christian Johansen 3 06 06 IT Fornebu 18900<br />
*Practical CSS3 - Chris Mills 2 14 IT Fornebu 14900<br />
*Test-Driven JavaScript with Christian Johansen 3 13 10 05 IT Fornebu 18900<br />
*Writing Ambitious <strong>We</strong>bapps with Ember.js - Joachim Haagen Skeie 3 06 IT Fornebu 18900<br />
c++ Days feb mar apr may Jun location Price<br />
*Advanced C++ programming - Hubert Matthews 4 16 IT Fornebu<br />
Grand<br />
21900<br />
*Advanced C++ programming - Hubert Matthews - Kongsberg 4 19 17 Hotel<br />
Kongsberg<br />
21900<br />
*C++-501: C++ for Embedded Developers - Mike Tarlton 5 22 IT Fornebu 24900<br />
*C++11 programming - Hubert Matthews - IT-Fornebu 3 22 IT Fornebu 18900<br />
*C++11 programming - Hubert Matthews - Kjeller 3 17 Kjeller<br />
Grand<br />
18900<br />
*C++11 programming - Hubert Matthews - Kongsberg 3 03<br />
Hotel<br />
Kongsberg<br />
Radisson<br />
18900<br />
*Effective C++11 Programming - Scott Meyers 2 10 Blu Plaza<br />
- Oslo<br />
14900<br />
*Programming in C++ with Mike Tarlton 4 22 IT Fornebu 21900<br />
c Days feb mar apr may Jun location<br />
Rica<br />
Price<br />
*Deep C: Et kurs for erfarne C og C++ programmerere - Olve Maudal 2 11<br />
Nidelven<br />
- Trondheim<br />
14900<br />
xml Days feb mar apr may Jun location Price<br />
*Exchanging and Managing Data using XML and XSLT - Espen Evje 3 22 IT Fornebu 18900<br />
DataBaSe Days feb mar apr may Jun location Price<br />
*Databasedesign, -implementering og SQL-programmering - Dag Hoftun Knutsen 4 26 04 IT Fornebu 21900<br />
effective concurrency Days feb mar apr may Jun location Price<br />
Effective Concurrency - Herb Sutter 3 London 18900<br />
Programming Days feb mar apr may Jun location Price<br />
*Objektorientert utvikling - Eivind Nordby 4 19 28 IT Fornebu 21900<br />
*Courses in the list that are asterisked are included in the framework agreement programme. All prices are in Norwegian Kroner.<br />
www.programutvikling.no<br />
56 57
courSe overvieW lonDon<br />
courSetitle<br />
agile & Scrum Days feb mar apr may Jun location Price<br />
Acceptance Test-Driven Development with David Evans 2 £1195<br />
Advanced Scrum Master Course - Geoff Watts & Paul Goddard 2<br />
Holborn<br />
Bars<br />
£1195<br />
Agile Estimating and Planning Training - Mike Cohn 1 16<br />
Canary<br />
Wharf<br />
£700<br />
Agile Foundations for Business Analysts with Allan Kelly 2 29<br />
Holborn<br />
Bars<br />
£1195<br />
Agile Retrospective Techniques - Geoff Watts 2 £1195<br />
Architecture with Agility - Kevlin Henney 3 01<br />
Holborn<br />
Bars<br />
£1195<br />
Certifi ed Scrum Master - CSM - Geoff Watts 2 19 09<br />
Holborn<br />
Bars<br />
£1195<br />
Certifi ed Scrum Master - CSM - Mike Cohn 2 14<br />
Holborn<br />
Bars<br />
£1400<br />
Certifi ed Scrum Product Owner - CSPO - Geoff Watts 2 11<br />
Holborn<br />
Bars<br />
£1195<br />
Certifi ed Scrum Product Owner - CSPO - Mike Cohn 2 28<br />
Holborn<br />
Bars<br />
£1400<br />
Effective User Stories for Agile Requirements Training - Mike Cohn 1 13<br />
Canary<br />
Wharf<br />
£700<br />
Game-Orientated Agile Learning (GOAL) with Geoff Watts & Paul Goddard 2 £1195<br />
PMI ® Agile Certifi ed Practitioner (PMI-ACP) - Didier Soriano 2 20<br />
Holborn<br />
Bars<br />
£700<br />
Succeeding with Agile - Mike Cohn 2<br />
Holborn<br />
Bars<br />
£1400<br />
Working on a Scrum Team with Kenny Rubin 3<br />
Holborn<br />
Bars<br />
£1400<br />
Writing Effective User Stories Training with Kenny Rubin 2<br />
Holborn<br />
Bars<br />
£1195<br />
architecture - DeSign - Security - maSterclaSSeS Days feb mar apr may Jun location Price<br />
Advanced Windows Security Masterclass with Paula Januszkiewicz 3 19<br />
Holborn<br />
Bars<br />
£1495<br />
Architecture Clinic with Michael ‘Monty’ Montgomery 5<br />
Holborn<br />
Bars<br />
£2500<br />
The Architect`s Master Class with Juval Lowy 5 22<br />
Holborn<br />
Bars<br />
£2500<br />
The Cloud Architect Master Class with Shy Cohen 5 13<br />
Holborn<br />
Bars<br />
£2500<br />
Windows Communication Foundation (WCF) Master Class with Miguel Castro 5<br />
Holborn<br />
Bars<br />
£2500<br />
c++ Days feb mar apr may Jun location Price<br />
Advanced C++ Programming - Hubert Matthews 4 19<br />
Holborn<br />
Bars<br />
£1795<br />
Effective C++11 Programming - Scott Meyers 2 17<br />
Holborn<br />
Bars<br />
£1400<br />
effective concurrency Days feb mar apr may Jun location Price<br />
Effective Concurrency - Herb Sutter 3<br />
Holborn<br />
Bars<br />
£1995<br />
microSoft .net Days feb mar apr may Jun location Price<br />
Building Applications with ASP.NET MVC 4 - Scott Allen 3 22<br />
Holborn<br />
Bars<br />
£1495<br />
Building Applications with ASP.NET MVC 4/ HTML5 Course - Scott Allen 5 22<br />
Holborn<br />
Bars<br />
£1995<br />
DeveloperFocus<br />
DeveloperFocus LTD, London by ProgramUtvikling AS<br />
www.developerfocus.com<br />
microSoft .net Days feb mar apr may Jun location Price<br />
C #.NET: Developing applications in .NET with C # - Arjan Einbu 5 £1995<br />
Creating Windows 8 Metro Apps using C# and XAML - Gill Cleeren 3 12 26<br />
Holborn<br />
Bars<br />
£1495<br />
Design Concepts, Architecture, and Advanced Capabilities for WPF - Billy Hollis 4 £1795<br />
WCF - Windows Communication Foundation (WCF) 4 with Sahil Malik 5 £1995<br />
Working with HTML 5, CSS 3, and JavaScript - Scott Allen 2 25<br />
Holborn<br />
Bars<br />
£1195<br />
MOBILE APPLICATIONS Days Feb Mar Apr May Jun Location Price<br />
Building Android Apps - John Denny 4<br />
Holborn<br />
Bars<br />
£1795<br />
Mono for Android Course with John Sonmez 2 £1195<br />
MonoTouch and Mac Development Course with John Sonmez 3 £1495<br />
MonoTouch and Mono for Android Course with John Sonmez 5 £1995<br />
Java Days feb mar apr may Jun location Price<br />
Core Spring 3.0 - Kaare Nilsen 4 £1795<br />
Object-Oriented Programming in Java - John Denny 5 £1995<br />
Spring and Hibernate Development - Kaare Nilsen 5 £1995<br />
JavaScriPt - html Days feb mar apr may Jun location Price<br />
Mobile <strong>We</strong>b Apps with Remy Sharp 1 £700<br />
Node & HTML5 for a real-time web with Remy Sharp 2 £1195<br />
Test-Driven JavaScript - Christian Johansen 3 £1495<br />
Using HTML5 and JavaScript to build <strong>We</strong>b Apps with Remy Sharp 1 £700<br />
SharePoint Days feb mar apr may Jun location Price<br />
SharePoint 2013 and Offi ce 365: End to End for Technical Audience - Sahil Malik 5 11<br />
Holborn<br />
Bars<br />
£1995<br />
Silverlight Days feb mar apr may Jun location Price<br />
Silverlight 5 Workshop - Gill Cleeren 4 £1795<br />
USER EXPERIENCE & DESIGN Days Feb Mar Apr May Jun Location Price<br />
Designing User Experiences: Principles and Techniques for Developers,<br />
Managers, and Analysts - Billy Hollis<br />
3<br />
Holborn<br />
Bars<br />
£1495<br />
Developing Software That Doesn’t Suck:<br />
A Master Class on User Experience Design with David Platt<br />
5<br />
Holborn<br />
Bars<br />
£2500<br />
USERGROUPS/ FREE EVENTS Days feb mar apr may Jun location Price<br />
FREE EVENT: Software Project Design with Juval Lowy 1 25<br />
Holborn<br />
Bars<br />
£0<br />
ENROLMENT OPTIONS<br />
Tel.: 0843 523 5765<br />
www.developerfocus.com - info@developerfocus.com<br />
58 59