eCommerce Site Development: 6 Tips for Better Project Management
If you’re a developer, you understand the many people, systems, and processes that go into developing an eCommerce site. From versioning control to documentation status reports; from avoiding miscommunication to tracking issues; from managing code reviews and releases; developing an eCommerce site is full of potential problems that can derail a project
Because it’s so important to keep all the moving parts in line, finding a tool that can help you and the rest of the development team collaborate effectively and efficiently is critical. Atlassian is just such a tool. A favorite among developers, the software encompasses a suite of technical project management tools including JIRA, Confluence, and Bitbucket/Stash, that that help automate collaboration.
6 Ways to Supercharge Atlassian Tools: JIRA, Confluence, and Bitbucket/Stash
While its wide range of applications is great, the suite has evolved to accommodate a variety of workflows, which can make the feature set quite daunting to some (not to mention the vast array of available add-ons available as well). Keeping that in mind, I’ve developed the following list of six tips to help you take full advantage of the Atlassian software, and in turn, run smoother and better projects.
Use Confluence for Shared Documentation and Versioning
We’ve all been there: a Word or Excel file is getting emailed back-and-forth, each edit appending the author’s own version tag to the file name. “Estimates.doc” quickly becomes “Estimates 3-15-2015 v3.2 – MJJ — FINAL copy 2.doc”. Two people were making adjustments simultaneously, and now whoever lost the race to send out their version first must manually merge the file, possibly overlooking subtle changes now lost in the ether.
Fortunately, wiki software has come to the rescue, and Confluence excels where some other solutions can fail. Some highlights:
- Pages are hierarchical as default structure, but can be easily searched and tagged to combine in different ways.
- Sections and pages can specify different permissions for viewing and editing: drafts can be kept hidden until ready for sharing; sensitive information can be restricted by users or groups on a need-to-know basis.
- Confluence pages are versioned, preventing accidental overwrites. Plus, there’s an audit history to see who actually authored a document and what changes have happened since inception.
Screenshot of a page’s Change Record.
Take Advantage of Page Tagging and Properties
As alluded to above, page tagging is a great feature for supporting multiple organizational structures. A project’s documentation can be grouped into: “To Do Items,” “Specifications,” “Pages That Need IT’s Input,” etc. At a minimum, each label gets its own auto-generated page displaying a table of all its pages.
Even more useful is combining labels with the Page Properties and Page Properties Report modules. A simple table is created on a page to track its status and relevant links (Bonus: JIRA links are dynamically updated to show their current status, too!). This table can have whatever information your team wants to track. The table is then wrapped with the Page Properties module and “specifications” label is applied.
Page Properties module
In itself, the table augments the page, but the Page Properties Report can be used to aggregate this information into a single table (based on labels). Voila, an instant, always updated documentation status report!
Page Properties Report
Wiki Formatting, Sample Code
Confluence also supports a sizable number of modules out-of-the-box. If you needed something custom that’s not included, there’s a vast selection of third-party add-ons, or you can build your own. Some have dynamic functionality like the Page Properties module and others are just for page formatting.
But let’s not downplay the power behind “just nice-looking”. Confluence is meant to help a project’s communications and prevent miscommunication. It boasts one of the smartest WYSIWYG editors I’ve seen and manages to be friendly to beginners and power users alike. This means anyone can author well-formatted, readable, and effective documentation. Many modules have insertion shortcuts, so you can concentrate on the content.
Some of my favorites (as seen below):
- Code blocks: great for showing pseudo code or sample data
- Notes/Warnings: don’t use “NOTE:” to grab attention, use a color-coded text block that jumps from the page!
- Copy/paste images: no need to upload pictures separately, simply paste from your clipboard and Confluence takes care of the rest.
- Tables: they re-size themselves, are sortable on any column, and use appropriate default padding. What’s not to like?
A few favorite formatting module examples
Project managers love this one: each type of JIRA issue can have a defined (customizable) workflow. What does this mean? Let’s take a look at an example:
Sample workflow for a JIRA issue. Transitions to/from the active “In Review” state are displayed.
This JIRA issue is considered a “Development Sub-task” and make it possible that statuses and transitions between each status are laid out in the workflow. Every issue starts in a “Not Started” or similar status and moves towards “Done” or “Closed.” In the middle, there can be programmers working on an “In Dev” ticket or a team lead combing through code while “In Review” or any other state that makes sense for that type of issue (Bugs may have a “Functional Testing” status, for instance).
Notice the connecting arrows and you’ll see how “Done” issue may be sent back to development (“In Dev”) or how it could be marked as “Blocked” at any point. Status is not changed arbitrarily, but transitioned from one state to the next (and logged with each change). Transition options can be restricted by user, too, so, for example, only team leads can “Approve Development” for “In Review” items.
Of course, status is a queryable property of issues, so you can filter to see all the “Blocked” tickets or “In Review” items assigned to the team lead.
Use JIRA and Bitbucket/Stash for Code Reviews
Any well-managed software project ensures that changes to the codebase are linked to requirements and requests. JIRA, of course, integrates with source control repositories (most easily with its siblings Bitbucket and Stash) and takes advantage of this linking.
Code can be related to an issue either using the built-in auto-branching mechanism or committing code with the JIRA issue number in the comments. In either case, JIRA will be able to show the history of the associated code, including a file diff. Comments can be added on a file-by-file basis or on the issue itself, providing some flexibility for code reviews.
Also shown is the status of any pull requests that include an issue’s code, which brings us to the next feature.
Sidebar of a JIRA issue, showing integration with a Git repository.
Pull Requests to Manage Release Branches
Keeping up the spirit of controls to prevent accidents and provide open status reporting, pull requests are a great way to manage code releases. Though pull requests are not unique to Stash and Bitbucket, the user interface provided by Atlassian certainly enhances the process and automates release notes.
In Git, pull requests are used to restrict access to certain code branches (like develop or master in Git Flow). These branches may be tied to Staging or Production environments and therefore require additional review before code is added or merged. A pull request sets up this process by requiring approval of a merge.
Creating a Pull Request
As seen above, pull request creation is very explicit about which branches and commits are submitted for a pull request. Requests can be tagged with reviewers and have comments, so feedback and approval can be given.
Conveniently, a diff of the entire request is available. Like JIRA commits, each individual file can also have its own comments section.
Pull Request Diff
Lastly, the description of a pull request is automatically populated with the JIRA issue numbers and titles, which is a great starter for release notes!
What are your favorite tips or tricks for working in JIRA, Confluence, or Bitbucket/Stash? Feel free to share in the comments!
Rob Grzyb is a Team Lead at LYONSCG, bringing over ten years of consulting experience to the ecommerce implementation crew. He has been engaged with the Demandware platform for nearly five years, including a dozen projects utilizing Atlassian’s tool suite. Rob studied Computer Science at the University of Illinois at Urbana-Champaign and resides in Chicago, where he enjoys lake shore running, strumming along to blues rock, and cheering on the city’s sports clubs.