Jira and Confluence - How the company behind those products works - Anatoli Kazatchkov


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 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.
  • Jira and Confluence - How the company behind those products works - Anatoli Kazatchkov

    1. 1. 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!
    2. 2. Atlassian
    3. 3. Sexier than Google?
    4. 4. JIRA Issue tracking, workflow and project management.
    5. 5. 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
    6. 6. Confluence World’s most widely-used enterprise wiki.
    7. 7. 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
    8. 8. Bamboo Software telemetry & build server.
    9. 9. 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.
    10. 10. FishEye & Crucible Collaborative, peer code review. Source insight & analysis. Code coverage and test improvement.
    11. 11. 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
    12. 12. Atlassian Stash Distributed version control, pull requests.
    13. 13. Atlassian OnDemand Hosted all-in-one development suite.
    14. 14. Recent additions • Bitbucket – hosted source repository • Team Calendars – add-on for Confluence • Bonfire – testing add-on for JIRA
    15. 15. Growth
    16. 16. Development Roles •Graduate Learns to write the code •Developer Writes the code •Architect Designs the code structure
    17. 17. Problem Roles •QA Engineer Prevents customer problems •Performance Engineer Solves performance problems •Support Engineer Solves customer problems
    18. 18. Customer Roles •Product Manager Divines customer needs •Technical Writer Documents the solution •Marketing Specialist Demos how needs are met
    19. 19. “Real artists ship”
    20. 20. How do you get (working) software out the door?
    21. 21. 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
    22. 22. Use version control • Many teams still operate without proper version control system • No excuses • Free or commercial, hosted or self-service
    23. 23. Write automated tests • Software can test itself • Developers write tests • that live with the code • Open source: JUnit, • JWebUnit, Selenium
    24. 24. Run the tests often • Nightly builds: cron & shell scripts • Email developers when they fail • More configurations: use a build server • Free or commercial
    25. 25. Allow for mistakes • Tests catch them • Builds catch them • Reviews catch them, too • Use pair programming or code reviews for important changes
    26. 26. 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)!
    27. 27. What should I take home? • Make sure you’re working with the right tools – most of them are free! • Work should be fun
    28. 28. akazatchov@atlassian.com Questions