developer_No1_2013_final

Transcription

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