"Time really flies when you’re having fun. It’s hard to believe that I have nearly finished my summer internship as a software developer at TechTime Initiative Group." 


Getting Started


Let’s wind the clock for a minute back to the middle of November when the summer internships began. After a thrilling week of orientation and introduction to the Atlassian universe where TechTime resides, we were split into small squads to work on different projects. I was lucky enough to be put on a team with Gene - one of the Senior Developers at TechTime, and Stephen - one of the other interns. We were assigned to work on the 'My Day' project, which is a new part of TechTime’s EasyTime product. I was really excited to have the opportunity to work on a tangible product that I would get to release to real customers. 

EasyTime is an automated time-tracking plugin for Jira and other Atlassian products. EasyTime does all this automatic time tracking in the background, and it is designed to be unobtrusive and unattended. For example, when you are looking at an issue in Jira, it will automatically log time against that issue for you! However, up until now, EasyTime hasn't included a graphical interface for interacting with the automatically logged work. The 'My Day' project overcomes this problem by providing users with an interface where they can view all of their work logs for any given day at a glance in a nifty calendar panel from within a Jira issue page. This allows them to edit or delete their logged work and even log additional work manually. 'My Day' levels up the convenience and accuracy of EasyTime’s automated time tracking by empowering users to have full control over their tracked time without ever having to leave the main page of an issue in Jira. Having this 'My Day' Panel on the issue page while the automated time tracking is happening means users can fix any mistakes immediately, which removes the need for cleanup further down the line. 

The 'My Day' project was in a state of semi-completion when we started the internship. The previous summer interns had made a good start on the project, but business, as usual, had taken priority during the rest of last year.  One of the main challenges coming into this project was getting my head around this existing codebase and understanding how everything works. I was delighted to see that a lot of the front end used the React framework, which I was already very familiar with. Armed with this experience, we decided to tackle a simple feature to begin with - ensuring that the calendar page scrolls down automatically to an intuitive place like the current time or the latest work logged. During this process, I identified that it would be good to have a line showing the current time, like in many calendar apps. I got the green light from Ed - the product owner and CTO - to include this feature, and I went ahead and implemented it. Being able to take ownership of a feature and see it to completion was really satisfying and motivating in only the second week of the internship. We were off to a good start. 

Carefully made plans


I’ve really come to appreciate the value of planning while working on this project. For many of the smaller-scale projects I’ve worked on previously I’ve been able to get away with jumping in and writing code straight away. This hasty approach doesn’t scale particularly well. With more complexity and more team members, careful planning ensures you can identify and mitigate risks early and also means you end up with more robust and future-proof code. 

During many brainstorming sessions with post-it notes and countless cups of coffee, we broke our features down into smaller steps and identified the definition of ready and definition of done for each one. This kept us on track to continuously deliver improvements to the 'My Day' project to get it ready for release. The product owners identified the next top priority would be allowing users to log work manually from within the 'My Day' panel. We approached this incrementally by starting with a very stripped-down default work log. Once we had this working, we added the ability to customise the Jira issue, the duration, as well as allowing users to write comments and notes for each bit of work logged. By breaking it down and releasing each incremental version of the feature internally, we were able to quickly pick up on any bugs and problems with integration with the existing codebase. For each small part of the feature we applied rigorous automated testing and had our pull requests peer-reviewed by developers from outside our squad. By shortening the feedback cycle like this we were able to improve the overall quality and effectiveness of our code, all while improving the efficiency with which we were able to deliver the feature. 

 Continuous Experimentation



From the very start of the internship, our squad has tried to keep an open mind to new ways to improve how we work. One of the best ways we've achieved this is through running regular experiments. If something works, then we keep doing it, and if not, we move on and run another experiment. During our first few weeks, while we were still getting to know each other, I suggested an idea that I borrowed from my time teaching at Dev Academy Aotearoa called 'speedbacking'. This was a really short five-minute session at the end of each day where we had the opportunity to take turns giving each other feedback and any thoughts on how we worked during that day. Having short feedback cycles is not just helpful for improving software outcomes but also for improving how we can collaborate and work in a team. One of the challenges of the summer internship was the short timeframe of only two and a half months. Getting that daily feedback was instrumental in establishing a way of working that suited our individual communication styles within that time. After a few weeks, we found the daily 'speedbacking' experiment had run its course and was eating into the time we could spend planning and implementing features. We moved on to the next iteration of that experiment which was using an automated poll daily in slack asking how we felt as a team. By doing this, we kept the feedback there but in a less intrusive way. 

We tried to make the experiments fun and stay curious about how they could improve our experience. One time we tried having a favourite dessert-themed Miro board for feature planning. This was a nice little team-building exercise and lightened the mood for everyone on a hot afternoon stuck in the office. Another slightly more practical experiment involved bringing a small whiteboard to meetings to note down any tangential topics outside of scope. This one was a huge success. It's very easy to be carried down sidetracks in meetings, especially when so many features are interconnected. No one likes a meeting that drags on, so by introducing this experiment, we managed to find the balance between keeping meetings brief and within scope while also ensuring we address important tangential issues. Continuously experimenting and staying curious about new things has been a driving force behind our growth during this summer project.

There's no time like the present


Finding the balance between carefully made plans, but also being adaptable and open to spontaneous experiments has been a theme of my time during the internship. I've learned that there's no perfect solution to finding this balance; it's something you have to constantly reevaluate and update as you go. After a brief pause to reflect during Christmas and New Year's and recovering from catching Covid, I have found myself in the present moment. Most of the features we have planned for the 'My Day' project have been completed. We are putting the finishing touches to ensure the user interface is clean and intuitive and doing lots more testing, of course. We will be ready to release it to the world by the end of February. Stay tuned. I can't wait to tell you even more about it then! 

Here's a sneak peak of what i've been working on - Check out EasyTime on the Atlassian Marketplace for more!


Return to blog