+ All Categories
Transcript
Page 1: Development Practices at Inventive Designers

Development practicesat Inventive Designers

Tars Joris – Development Manager 3 December 2013

www.inventivedesigners.com

Page 2: Development Practices at Inventive Designers

Who am I?

Tars Joris

• 1997-2001: Master in Computer Science: University of Antwerp

• 2001-2006: Developer at eVision bvba: Software for the furniture industry

• 2006-2008: Developer at Inventive Designers

• 2008-now : Development Manager at Inventive Designers

3 December 2013

www.inventivedesigners.com

2

Page 3: Development Practices at Inventive Designers

Agenda

General

• About Inventive

Designers

• The team

• The software

products

Tools

• IDE

• VCS

• Bug tracking

• Continuous

integration

Processes

• Planning

• Meetings

• Code reviews

• Testing

• New features

3 December 2013

www.inventivedesigners.com

3

Page 4: Development Practices at Inventive Designers

About Inventive Designers nv

• Software Product Company: all in-house development

• Services around these products: Integration + Customization

• Focus on innovation

• Participate in and organize meetings for working groups and communities

• W3C: XSL-FO, XForms, Web Crypto

• Other: AFP Color Consortium, Belgian Eclipse User Group, Scala, Big data, …

3 December 2013

www.inventivedesigners.com

4

Page 5: Development Practices at Inventive Designers

Organization

3 December 2013

www.inventivedesigners.com

5

Development

Services

Support

Sales

Marketing

HR/Legal/…

Page 6: Development Practices at Inventive Designers

The development team

4 team leads

• 2 Research & Development Managers

• 1 Release / Quality Assurance Manager

• 1 Development Manager / SCRUM Master

3 December 2013

www.inventivedesigners.com

6

Page 7: Development Practices at Inventive Designers

Products

Working actively on the last 2

products

3 December 2013

www.inventivedesigners.com

7

Scriptura Engage

IntelliStamp

Page 8: Development Practices at Inventive Designers

Some metrics on Scriptura Engage

• Working on 8th major release

• 6 major platforms

• 87133 automated tests running across 24 builds on 18 servers for combinations of 5 java versions, 9 OSes, 3 CPU architectures, 5 browser versions and 5 databases

• 3.7 Gb codebase in 289.811 files and 86.007 folders

• 2 million lines of code

• 1564 libraries

• 12 years of development

• 200+ releases

3 December 2013

www.inventivedesigners.com

8

Page 9: Development Practices at Inventive Designers

Without processes / tools

3 December 2013

www.inventivedesigners.com

9

When will that feature be available?

When it’s ready.

Will it work?

It might.

Can we get a new version?

Sure, in 5 minutes.

But it broke last week’s fix.

Oh yeah, oops. What was the problem again?

Page 10: Development Practices at Inventive Designers

3 December 2013

www.inventivedesigners.com

10

Development

Tools

Page 11: Development Practices at Inventive Designers

Tools

IDE - Eclipse

3 December 2013

www.inventivedesigners.com

11

Page 12: Development Practices at Inventive Designers

IDE - Eclipse

• Integrated Development

Environment

• Most of the code is Java

• Also XSLT, XForms,

Javascript, SQL, XQuery,

Xcode, …

3 December 2013

www.inventivedesigners.com

12

Page 13: Development Practices at Inventive Designers

Tools

Version Control System - Git

3 December 2013

www.inventivedesigners.com

13

Page 14: Development Practices at Inventive Designers

VCS - Git: What?

• Version Control System

• Distributed

• Eclipse plug-in /

Powerful command-line

3 December 2013

www.inventivedesigners.com

14

Page 15: Development Practices at Inventive Designers

VCS - Git: What?

Atlassian Stash

• On own hardware

• Central repository

• Single point of truth (not required by Git)

• Web interface

3 December 2013

www.inventivedesigners.com

15

Page 16: Development Practices at Inventive Designers

VCS - Git: Why?

• Code sharing and collaboration

• History: when was this changed? By who? Why?

• Backup: Change/delete code as much as you

want

• Tagging: what exactly was in a certain release?

• Branching: work on different versions of a

product at the same time

3 December 2013

www.inventivedesigners.com

16

Page 17: Development Practices at Inventive Designers

VCS - Git: Nice features

• Local commits

• Local history

• Light-weight branching

• work on several issues at the same

time (commit what you have and

switch to another branch)

• No manual management of patches

3 December 2013

www.inventivedesigners.com

17

Page 18: Development Practices at Inventive Designers

Tools

Bug Tracking - Jira

3 December 2013

www.inventivedesigners.com

18

Page 19: Development Practices at Inventive Designers

Bug Tracking - Jira: What?

System for tracking

• Bugs

• Filed by customers (external)

• Filed by services/development (internal)

• Tasks

• Changes to test-infrastructure

• Small enhancements

• Actual parts of a new feature implementation

• New features

• Requests filed by customers

• Strategic features

3 December 2013

www.inventivedesigners.com

19

Page 20: Development Practices at Inventive Designers

Bug Tracking - Jira: What?

• Link with support cases

• Comments by developers

• Code changes automatically linked

• Time tracking

• To do list (assigned issues)

• Bugs/tasks

• Review subtasks

• Test subtasks

• Describe subtasks

3 December 2013

www.inventivedesigners.com

20

Page 21: Development Practices at Inventive Designers

3 December 2013

www.inventivedesigners.com

21

Page 22: Development Practices at Inventive Designers

Bug Tracking - Jira: Why?

• Trail/history of a code-change

• Link from code-change to

• Jira issue

• Comments

• wiki-pages

• support case

• customer e-mails

• Mark issues related / duplicate

• Estimate work / plan sprint / assign work

• Workflow: review / test / research / describe

3 December 2013

www.inventivedesigners.com

22

Page 23: Development Practices at Inventive Designers

Tools

Continuous Integration - Hudson

3 December 2013

www.inventivedesigners.com

23

Page 24: Development Practices at Inventive Designers

Continuous Integration – Hudson: What?

• Runs automated builds

• at scheduled times

• manual

• triggered by another build (chain)

• Compiles all code when there’s a change (throughout the day)

• Runs automated tests with different combinations of OS, JDK, database, …

• Unit tests: verify result of a Java-method

• End-to-end tests: verify files written on disk or interrogate public APIs of the system

• Browser tests: Automatically launch a browser and interact (type text, click buttons, verify HTML)

• GUI tests: Launch eclipse, …

3 December 2013

www.inventivedesigners.com

24

Page 25: Development Practices at Inventive Designers

3 December 2013

www.inventivedesigners.com

25

Page 26: Development Practices at Inventive Designers

Continuous Integration – Hudson: Why?

• Controlled environment for running tests: consistency

• History of test results

• Statistics: code coverage, …

• Produces nightly builds

• Useful for beta testing

• Closer to an actual release then a development

environment

• Use it to test against, to catch build-problems early

(obfuscation, …)

3 December 2013

www.inventivedesigners.com

26

Page 27: Development Practices at Inventive Designers

3 December 2013

www.inventivedesigners.com

27

Development

Processes

Page 28: Development Practices at Inventive Designers

Processes

Planning

3 December 2013

www.inventivedesigners.com

28

Page 29: Development Practices at Inventive Designers

Planning

Sprints of 4 weeks (20 days)

• 17 days of development

• 3 days of manual testing

• 5 days later: release x

3 December 2013

www.inventivedesigners.com

29

R Testing R

Sprint x Sprint x + 1

Week 1 Week 2 Week 3 Week 4 Week 1

Development Testing Development

Code freeze

Page 30: Development Practices at Inventive Designers

Planning

How do we decide what to do next?

• Bugs

• Backlog (input from customers, services, development)

• New features

• Roadmap

• Input from stakeholders

• Customers

• Other departments (services, …)

• Strategic (management)

3 December 2013

www.inventivedesigners.com

30

Page 31: Development Practices at Inventive Designers

Processes

Meetings

3 December 2013

www.inventivedesigners.com

31

Page 32: Development Practices at Inventive Designers

Meetings

3 December 2013

www.inventivedesigners.com

32

R Testing R

Sprint x Sprint x + 1

Week 1 Week 2 Week 3 Week 4 Week 1

Development Testing Development

Sprint review• 1st day of sprint• developers + stakeholders• demo’s last sprint

Technical meeting• 1st day of sprint• team leaders• planning/priorities/…

Sign-Off• last day of sprint• developers• knowledge sharing• explain next sprint

Stand-up• every day• developers• yesterday/today/impediments

Page 33: Development Practices at Inventive Designers

Processes

Code Reviews

3 December 2013

www.inventivedesigners.com

33

Page 34: Development Practices at Inventive Designers

Code Reviews: What?

Before a code change makes it into the product, reviewed by another

developer

• All bug-fixes are reviewed

• New features are not formally reviewed, but behavior and design is

discussed with team leads (another process)

3 December 2013

www.inventivedesigners.com

34

Page 35: Development Practices at Inventive Designers

Code Reviews: Why?

• 4 eyes see more than 2

• Trace down mistakes (typos, oversights,

reasoning errors) early on

• A fresh look on the problem

• Guard coding guidelines and best

practices

• Helps when coaching junior developers

3 December 2013

www.inventivedesigners.com

35

Page 36: Development Practices at Inventive Designers

Code Reviews: How?

• New branch in Git

• Commit until your code is ready

• Push to stash

• Open a “pull request” (request for pulling my branch in the main branch)

• Reviewer gives remarks and ultimately accepts patch

• Pull request is merged in main branch

3 December 2013

www.inventivedesigners.com

36

Page 37: Development Practices at Inventive Designers

3 December 2013

www.inventivedesigners.com

37

Page 38: Development Practices at Inventive Designers

Processes

Testing

3 December 2013

www.inventivedesigners.com

38

Page 39: Development Practices at Inventive Designers

Testing: Automated tests

• Hudson builds

• Add automated tests while developing

New Features

• Add automated tests when fixing a bug

(regression tests)

3 December 2013

www.inventivedesigners.com

39

Page 40: Development Practices at Inventive Designers

Testing: Manual testsAt the end of each sprint, every issue (bug, task, new feature) is tested by another developer

• Again, a fresh look on the problem (like review)

• Was the customer’s problem actually fixed?

3 December 2013

www.inventivedesigners.com

40

R Testing R

Sprint x Sprint x + 1

Week 1 Week 2 Week 3 Week 4 Week 1

Development Testing Development

Beta testing

• Scenarios that are tested manually, just before a major release

• User can see other problems that are not captured in testsR Testing

Sprint x

Week 1 Week 2 Week 3 Week 4

Development Testing

R Testing R

Sprint x Sprint x + 1

Week 1 Week 2 Week 3 Week 4 Week 1

Development Testing Development

R Testing

Sprint x

Week 1 Week 2 Week 3 Week 4

Development Testing

Page 41: Development Practices at Inventive Designers

Processes

New features

3 December 2013

www.inventivedesigners.com

41

Page 42: Development Practices at Inventive Designers

New features

4 phases

• Research

• Describe

• Estimate

• Implement (+ write tests and documentation)

Resembles “Waterfall”, but no “Big Design Up Front” because we split

features and deliver increments.

3 December 2013

www.inventivedesigners.com

42

Page 43: Development Practices at Inventive Designers

New features

“Definition of Done” (SCRUM-principle)

We saw a shift:

• Works in developer’s workspace

• Builds and the automated tests succeed

• Documentation is available

• Is deployed on a live instance (cloud)

3 December 2013

www.inventivedesigners.com

43

Page 44: Development Practices at Inventive Designers

With processes / tools

3 December 2013

www.inventivedesigners.com

44

When will that feature be available?

The first 2 sub-features in 3 weeks.

Will it work?

The discussed scenarios are tested every night, your output with sample data is still the same.

Can we get a new version?

Sure, in 3 weeks.

But it introduced a bug.

We’re sorry. It’s a corner case we didn’t think of. We’ll add an automatic test to make sure it

won’t break again.

Page 45: Development Practices at Inventive Designers

Questions?

3 December 2013

www.inventivedesigners.com

45

Page 46: Development Practices at Inventive Designers

More info? Contact us:EU phone: +32 3 425 40 00

US phone: 011 32 3 425 40 00

email: [email protected]

3 December 2013

www.inventivedesigners.com

Comics were taken from Geek & Poke and are licensed under Create Commons 3.0


Top Related