Axa Assurance Maroc - Insurer Innovation Award 2024
Jira and Confluence - How the company behind those products works - Anatoli Kazatchkov
1.
2. About me
• Anatoli Kazatchkov
akazatchkov@atlassian.com
Confluence dev manager
• Software developer for 11 years
• Shipped 13 major, 50+ minor releases
of Confluence since 2007
• … but still learning how to write and
ship better software!
6. JIRA: when do you use it?
• When you have too many bugs to keep in
your head
• When you are working with more than
two or three people
• When you want to let other people report
issues with your software
8. Confluence:
when do you use it?
when do you use it?
• When you have too many detailed ideas to
keep in your head
• When you are working with more than
two or three people
• When you want to share your ideas with
other people
10. Bamboo:
when do you use it?
when do you use it?
• When your software is too big to test
manually every time you change something
… you write automated tests.
• When you need someone to know when
they’ve broken something ASAP
… you set up Bamboo.
12. FishEye & Crucible:
when do you use them?
when do you use them?
• When you want to see the history of your
project
• When you want changes to the software
reviewed by multiple people
22. How do you get (working)
software out the door?
23. Track your issues
• All software has bugs, feature ideas
• Keep a list: in your head, on a piece of
paper, in a spreadsheet, in a system
24. Use version control
• Many teams still operate without proper
version control system
• No excuses
• Free or commercial, hosted or self-service
25. Write automated tests
• Software can test itself
• Developers write tests
• that live with the code
• Open source: JUnit,
• JWebUnit, Selenium
26. Run the tests often
• Nightly builds:
cron & shell scripts
• Email developers
when they fail
• More configurations:
use a build server
• Free or commercial
27. Allow for mistakes
• Tests catch them
• Builds catch them
• Reviews catch them, too
• Use pair programming or
code reviews for
important changes
28. Release often!
• Once it works, package it up for download
• Have a one-step process
• Use a build tool: Maven,Ant, Rake
• Go for release lunch (often)!
29. What should I take home?
• Make sure you’re working
with the right tools –
most of them are free!
• Work should be fun
Started uni, tried a few things. Dev tools software, dragged into business.
Roughly 1.5-2x each year, no venture capital. Continued growth through downturn.
It's quite easy, really.
Essential for any software project is a way of tracking bugs and improvement requests. Most projects start with a piece of paper or spreadsheet on the author's computer. Once you get several developers involved, you need a shared system to keep track of it. There are many free bug trackers available, you can download one from the internet. For bigger teams, the commercial tools support workflow, better reporting and better management of large numbers of projects.
Of all the tools we use, the version control system is the most important. There are no excuses for not using a proper VCS. There are several great free ones - Subversion, git and mercurial, which are all used on massive projects. Equally good or better packages are available commercially. If you don't have the experience to maintain your own server, there are services which offer very cheap VCS hosting on the internet. Beanstalk offers private SVN hosting, Github is a popular option for open source Git projects.
Having automated tests is essential to ensuring quality in large software systems. Confluence has over 2000 automated tests. These include unit tests to test individual components in the system as well as automated web tests to ensure the user interface works correctly. Before shipping, we run the automated tests on more than a dozen different configurations that our customers use. Atlassian uses several open source frameworks for testing: jUnit for unit testing, jWebUnit for web-based testing, and Selenium for testing dynamic functionality in IE and Firefox.
When you have a few automated tests written, you need a way to run them. Running them overnight is a good starting point, and many teams set up simple scripts to run their build and email the results to the team. Once you have more configurations though, you need a system to manage the builds and when they run, let you send instant messages as well as emails. Perhaps the most useful functionality is hooking in to your version control system so you can trigger builds when a developer commits.
Big software systems are often too big for anyone to know all aspects of the system. Hence, reviews by other developers help a lot, even for experienced people. At Atlassian, we try to pair program on important stuff, and where that's not possible we do over-the-shoulder or post-commit code reviews.
Once you've written the code and it’s been tested, you're ready to ship it. We use an open source tool called Maven to build our software in one step—other teams use Ant or NAnt. Once it's built, we put it up on the website for people to download. In the Confluence team we have a release lunch to celebrate each major release.