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.
2. 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
3. Agenda
General
Tools
Processes
• About Inventive
Designers
• IDE
• Planning
• VCS
• Meetings
• The team
• Bug tracking
• Code reviews
• The software
products
• Continuous
integration
• Testing
3 December 2013
www.inventivedesigners.com
3
• New features
4. 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
6. 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
8. 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
9. Without processes / tools
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
9
12. 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
14. VCS - Git: What?
• Version Control System
• Distributed
• Eclipse plug-in /
Powerful command-line
3 December 2013
www.inventivedesigners.com
14
15. 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
16. 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
17. 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
19. 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
20. 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
22. 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
24. 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
26. 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
29. Planning
Sprints of 4 weeks (20 days)
• 17 days of development
• 3 days of manual testing
Code freeze
• 5 days later: release x
R
Sprint x
Week 1
Development
3 December 2013
www.inventivedesigners.com
29
Testing
Week 2
Week 3
R
Week 4
Testing
Sprint x + 1
Week 1
Development
30. 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
32. Meetings
Sign-Off
• last day of sprint
• developers
• knowledge sharing
• explain next sprint
Sprint review
• 1st day of sprint
• developers + stakeholders
• demo’s last sprint
R
Sprint x
Week 1
Development
Technical meeting
• 1st day of sprint
• team leaders
3 December 2013
www.inventivedesigners.com
• planning/priorities/…
32
Testing
Week 2
Week 3
R
Week 4
Testing
Sprint x + 1
Week 1
Development
Stand-up
• every day
• developers
• yesterday/today/impediments
34. 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
35. 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
36. 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
39. 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
40. Testing: Manual tests
At 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?
R
Testing
Sprint x
R
Sprint x + 1
Week 1
Week 2
Week 3
Week 4
Development
Testing
Week 1
Development
Beta testing
• Scenarios that are tested manually, just before a major release
• User can see other problems that are not captured in tests
R
Testing
Sprint x
Week 1
R
Testing
Sprint x
Week 2
Week 3
Development
Week 4
Week 1
Testing
3 December 2013
www.inventivedesigners.com
40
Development
R
Testing
Sprint x
Week 2
Week 3
Week 4
Week 1
Testing
Development
R
Sprint x + 1
Week 2
Week 3
Week 4
Week 1
Testing
Development
42. 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
43. 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
44. With processes / tools
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.
3 December 2013
www.inventivedesigners.com
44
46. More info? Contact us:
EU phone: +32 3 425 40 00
US phone: 011 32 3 425 40 00
email: info@inventivedesigners.com
3 December 2013
www.inventivedesigners.com
Comics were taken from Geek & Poke and are licensed under Create Commons 3.0