Modern SW Developer Explained

Modern SW Developer Explained © 2012 Tieto Corporation What skills are needed to survive in tomorrow’s SW development projects? Jani Lirkki Lead So...
Author: Alexia Parsons
4 downloads 2 Views 801KB Size
Modern SW Developer Explained

© 2012 Tieto Corporation

What skills are needed to survive in tomorrow’s SW development projects?

Jani Lirkki Lead Software Developer Tieto, Devices R&D [email protected]

© 2012 Tieto Corporation

Background

About this presentation • This presentation is supposed to: • Help you understand software development in a big international software company. • Help you understand what kind of skills a software developer needs.

• Length approximately 45 minutes. • Questions are encouraged and valued at any time!

3

© 2012 Tieto Corporation

2012-01-22

About Jani • Mobile SW developer & agile coach • Hobbies: Footbag net, pool, poker, gym

4

2001

2004

• Started studying at JYU

• Summer trainee at Nokia

2011

2007

• Tieto JKL • Espoo

• Tieto Beijing

2003

2005

2009

• Working at Agora Center

• Application project technical adviser • Started at Tieto JKL • Graduated (MSc)

• Tieto Chengdu

© 2012 Tieto Corporation

2012-01-22

About Tieto • • • • • • •

Finnish company IT services 1968 440 5600 18000 Industries Tieto works at: • Automotive, Energy, Finance, Forest, Healthcare and welfare, Logistics, Manufacturing, Media, Public, Telecom, Retail

• http://www.tieto.com/careers

5

© 2012 Tieto Corporation

2012-01-22

© 2012 Tieto Corporation

Processes today

Why do we need a process anyway? • Software project without process is like traffic without rules. • If you are alone and nobody around you, you might do well without. • Distributed projects with multiple companies involved.

• Helps to ensure that nothing important is forgotten. • Leverage experience from previous similar projects.

7

© 2012 Tieto Corporation

2012-01-22

SW Development Processes Overview • Process defines common way of working. • Rough split: There are waterfall and agile processes.

Agile • Working software early • Encourages changes

• Most other ones are variations of these two.

• Process selection should be based on needs. • Typically waterfall process when work can be planned totally, agile process when there is more uncertainty.

8

© 2012 Tieto Corporation

Waterfall • Easy to understand • Emphasizes comprehensive design

2012-01-22

Waterfall processes • Originating from manufacturing, adapted to SW development. • Assumes that the work can be split into phases.

• • • •

Simple to understand. Clear responsibilities Late change is expensive. Customer gets working software relatively late.

Requirements specification

Design

Implementation

Integration

Validation

Installation

Maintenance

9

© 2012 Tieto Corporation

2012-01-22

Agile processes • Iterative and incremental development • Short iterations. • Deliver working SW at the end of each iteration.

• Change is natural • Cross-functional teams • XP practices • TDD • CI • Pair programming



Iteration 3

Iteration 2

Iteration 1

• Customer collaboration • Emphasizes communication and feedback

10

© 2012 Tieto Corporation

2012-01-22

© 2012 Tieto Corporation

Requirements for today’s SW developer

Methods for SW design • Independent from the process, same SW design methods still apply: • UML diagrams • Class diagrams • Sequence diagrams • State diagrams

• Mindmaps • Specifications and plans.

• …and very similar tools are needed • Development tools: IDE, SW design, SDK, Code analyzers (dynamic&static), Version control, Build&Integration, … • Project tools: Office tools, Error DB, Test DB, Backlog/task/release management, Wiki, …

12

© 2012 Tieto Corporation

2012-01-22

Testability • Traditionally: testing is QA team responsibility. • Very late phase in waterfall. • Hard/impossible to automate tests at such late phase.

Automated acceptance + GUI tests

• Nowadays: attention is paid to testability in earlier phases (analysis, design). • Testing doubles: Dummies, Fakes, Stubs and Mocks.

• Most of the testing is programmed (not manual)

Unit tests

Production software

• Amount of test code roughly the same as production code.

13

© 2012 Tieto Corporation

2012-01-22

What a good developer needs • Individual capabilities • • • •

Common sense Flexibility Continuous learning attitude Teamwork skills • Know your strengths, weaknesses

• Personal network of experts • Communication skills • • • •

14

Developer end user Developer customer Developer developer Developer management

© 2012 Tieto Corporation

2012-01-22

Improve your value in job market • Open source contributions • Much like any other SW project. • Learn a little and start contributing. • Start with small contributions (e.g. testing, documentation). • Community supports you – you are not alone.

• Makes your CV more appealing.

• Work with foreign students • Assignments for your studies. • Gives confidence for your language skills.

• Be active • Attitude counts the most • Local interest groups (Geek Collision, Agile JKL, …)

15

© 2012 Tieto Corporation

2012-01-22

© 2012 Tieto Corporation

Summary

Summary Communication skills Processes

Engineering skills

17

© 2012 Tieto Corporation

Tools

SW Developer

Domain knowledge

2012-01-22

Questions & Answers

18

© 2012 Tieto Corporation

2012-01-22

© 2012 Tieto Corporation

Jani Lirkki Lead Software Developer Tieto, Devices R&D [email protected]