development practices at inventive designers
Post on 14-Sep-2014
236 views
DESCRIPTION
I talked at the University of Antwerp about the way we organize our development team at Inventive Designers. EESTEC LC Antwerp organizes such presentations from time to time for the students. We try to develop our software efficiently, with an emphasis on quality, but still being able to deliver features in a timely fashion. We try out new techniques regularly and see if we can benefit from them. It was a good opportunity for the audience to get some idea of how things could work in the field. It's not always clear what to expect when starting at your first job, and a lot of processes are applicable when doing school projects also. I got some interesting questions and had the opportunity to elaborate some more after the presentation. I was impressed with their initiatives for organizing their teams. We are also involved in projects at the University of Antwerp, as an industrial partner. We like to stay in touch with the academical world, to stimulate innovation and good education, and to attract new talent.TRANSCRIPT
Development practicesat Inventive Designers
Tars Joris – Development Manager 3 December 2013
www.inventivedesigners.com
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
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
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
Organization
3 December 2013
www.inventivedesigners.com
5
Development
Services
Support
Sales
Marketing
HR/Legal/…
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
Products
Working actively on the last 2
products
3 December 2013
www.inventivedesigners.com
7
Scriptura Engage
IntelliStamp
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
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?
3 December 2013
www.inventivedesigners.com
10
Development
Tools
Tools
IDE - Eclipse
3 December 2013
www.inventivedesigners.com
11
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
Tools
Version Control System - Git
3 December 2013
www.inventivedesigners.com
13
VCS - Git: What?
• Version Control System
• Distributed
• Eclipse plug-in /
Powerful command-line
3 December 2013
www.inventivedesigners.com
14
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
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
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
Tools
Bug Tracking - Jira
3 December 2013
www.inventivedesigners.com
18
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
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
3 December 2013
www.inventivedesigners.com
21
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
Tools
Continuous Integration - Hudson
3 December 2013
www.inventivedesigners.com
23
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
3 December 2013
www.inventivedesigners.com
25
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
3 December 2013
www.inventivedesigners.com
27
Development
Processes
Processes
Planning
3 December 2013
www.inventivedesigners.com
28
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
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
Processes
Meetings
3 December 2013
www.inventivedesigners.com
31
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
Processes
Code Reviews
3 December 2013
www.inventivedesigners.com
33
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
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
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
3 December 2013
www.inventivedesigners.com
37
Processes
Testing
3 December 2013
www.inventivedesigners.com
38
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
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
Processes
New features
3 December 2013
www.inventivedesigners.com
41
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
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
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.
Questions?
3 December 2013
www.inventivedesigners.com
45
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