Introduction
Beginning your career at any company is going to be challenging, scary and full of “Hi, my name is … and here is a list of my favourite hobbies”. Six new starts who began their career “virtually” as a mix of placement students and graduate software engineers will take you through their joining experience.
The Project Begins
As new starts to Instil, we immediately understood the importance of “Software Engineering Excellence” and that this would be at the forefront of our introduction to a career in software. After the introductions and coffee chats through webcams, the team was briefed on what the following weeks would look like, and behold it was app development. As a team of new starts with senior software engineers and designers on hand, we would be able to grasp the Instil development process by working through the complete end to end process of producing an app.
Before we take you through what we built in the first weeks at Instil, below are some of the key software practices that set us up for success.
Software Practices Used:
1. Agile development
Key to any project at Instil, agile methodologies were included throughout our project including planning and executing sprints. Having daily stand-ups ensured we always had tasks ahead and could discuss blockers if required. The agile development process fed into the following practices we implemented.
2. Importance of Code Readability
By ensuring that your code is self explanatory, then other developers (such as you next month) can understand it and will ultimately cost less to maintain. Things we looked out for included removing accidental complexity, ensuring good code decomposition and a rigorous code style.
3. Version Control and Code Reviews
To help us understand Instil’s team development process, we immediately began using code repositories and version control as would every Instil project that we would move on to. Senior developers performing code reviews to ultimately help us understand what we could improve on was a key part of the training process.
4. Pair Programming
For our app development project, we pair programmed throughout to help us monitor each other's code styles and work closely as a team through the development process.
5. Testing
Learning the importance of testing was a big step for the new starts, with assistance from senior developers this became a core part of our learning and development process. By ensuring tests were implemented throughout we could refactor our code with a clear mind and test with each change.
What is EstiMate?
EstiMate is a planning poker app built using SwiftUI, for iOS 14 and Mac Catalyst. Planning poker is a “game” commonly used in the software engineering industry used to estimate the relative “size” of a ticket from the development backlog. Each team member will be able to use the app on their own device to cast their vote based on their estimation of the ticket size. The app will then take all team members votes and present in a results visualisation on all team members devices. A verbal discussion can then take place based on the results to decide the size to be recorded.
Technologies Implemented
1. XCode 12, SwiftUI and Mac Catalyst
In anticipation of iOS 14 being released in Autumn 2020, the application was built using XCode 12 and iOS 14 features available with SwiftUI, using Mac Catalyst to run the application on MacOS devices. This would form the user application and provide the functionality to communicate with the database storing teams and votes.
Being a new technology, SwiftUI gave us a lot of powerful features in order to make the creation of the app more seamless, such as Matched Geometry Effect for scaling to different device sizes. With XCode 12 still being in beta at the time of development, some issues were encountered along the way but it made working on new technologies much more interesting.
2. Firebase Realtime Database
To provide the communication of teams and votes among multiple devices, Firebase provided a realtime database hosted by Firebase which allowed instant writing and reading of votes among devices.
Firebase Realtime Database was an exciting technology to use within our project, with the instant reading and writing it was possible to follow the card changes in the realtime database as you used the application on your phone.
What did we learn from our training?
As the group was made up of three new graduates and three interns, our previous experience had mostly been as part of groups in university, which whilst they do teach the agile principles, they rarely adhere to them correctly or as rigorously as we have in this project. This project has taught us of the actual day-to-day experience of agile development and what it is like to work in a standard product life cycle with the app iterating towards a finished product. For the interns, this is the most coding we have ever done and the most polished and complete application we have ever worked on. We have learned to work as part of a team and how to employ the agile principles in practice, rather than on paper.