17.03.2013 Views

We love SMS!

We love SMS!

We love SMS!

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!