I joined UVD at the start of this month as a placement student. When I started working here a month ago I knew very basic PHP and had never worked with an API, in just two weeks I had built my first API and i was familiar with TDD (Test Driven Development) and BDD (Behaviour Driven Development).
My first week began with doing code katas: small programming exercises designed to learn development methodologies such as TDD, and BDD.
“Code Kata provides us with a quicker way to iterate through the whole cycle.”
– Kirsten (Using Code Kata practice sessions to become a better developer)
I did these exercises in normal PHP then Alex reviewed my code and gave me suggestions on how to improve it. We also did a couple of katas together using TDD. This was very beneficial as I had no prior knowledge of TDD. At the end of the first week I started building my first API with VJ. We built a simple library API to introduce myself to the api structure and Symfony commands. Once he thought I could confidently use symfony commands and do things on my own, we started on a music API but this time we began with BDD tests written in Gherkin followed by TDD spec tests and implemented a database.
After first couple of weeks Kirsten suggested I start on my first project which was to improve existing Slackbot so we could manage holidays using slack, so Kirsten, Alex, VJ and I arranged a meeting to talk about the features to add and created user stories which will help me write the behat feature files when I start coding.
In the third week I started learning about deploying the API to testing environment and running TDD and BDD tests on Jenkins as well as calling the API using node. I also worked with Slackbot kit to interact with users and executing certain function based on the message user sends.
Besides work we have had a few trips to park to play frisbee or football. I look forward to a year full of fun outings and working on cool projects.
I have made significant amount of progress on Botty this month, and have started testing new features on Limpid Markets. We have also moved into our new office.
Botty can now tell us how much holidays we have left, list the holidays taken and if we change our minds we can delete any future holidays. We can also book multiple days off.
I have been adding quite a lot of validation on the API. One of the more complex ones was to correctly count number of holidays left as it has to exclude bank holidays and weekends from holidays taken.
I’ve had a few code reviews with Alex and VJ to get feedback on the API code and refactored it to make it more readable and efficient. James has helped me improve my Node by introducing me to ‘call back functions’ and ‘promises’ which was difficult to get my head around but I think I’ve finally understood how it works.
I did my first proper QA with the whole team and showed them what I was working on. I received some great feedback and suggestion to improve Botty: everyone suggested that Botty should be able to book half days off so that’s the next feature I’ll start working on. Rachael is going to help me change the copy to make Botty more informal.
I’ve started testing small Limpid Markets features to increase my domain knowledge and have pair tested on features requiring more domain knowledge. This has been insightful as I’m learning the rules and logic of how Limpid Market works. Next month I’ll start pair programming with Alex on new product we’re adding to Limpid Markets.
Just last week we moved into Perseverance Works on Hackney Road and with the new office we’ve also got a new team member Dave – a frontend dev and racing enthusiast.
This past month has been very educational as I started working on Limpid Markets. It’s a trading platform with large code base, Alex and I have been pair programming for the most parts and I would work on Botty in between deployments and when we are waiting for tests to run.
I learnt that every feature on Limid Markets follows a pattern: from specifying the feature to deploying it. First we start by writing a behat feature file to outline how the new feature should behave, followed by unit tests and actual coding, then we refactor the code if needed. At this point the implementation of a feature is done and someone from the team could test it, and if all acceptance criteria passes we move forward and QA with the client. If all goes well we deploy the feature and it’s ready for users.
Previously I haven’t quite followed this structure when adding features to Botty, however If I had to do it again I would follow the structure as it improves the end product and it means the users get exactly what they want. I’ve found working on Botty much easier after working on Limpid Markets and I believe it’s improved my coding skills and given me insight on alternative ways I could implement the existing features on Botty’s API.
Pair programming was particularly helpful as I learnt about the structure and started to familiarise myself with Limpid Markets code base. This will help in coming weeks when I start contributing to Limpid Market on my own. It also meant that I could receive a lot more feedback because Alex and I would talk about how to fix a bug or he would advise me on how to improve code that I’ve written. I was also introduced to Limpid Markets End2End tests which tests the application’s behaviour including it’s UI (User Interface).
I haven’t worked on Botty as much this month but I finished the booking half days feature and have been making small changes to improve the way we interact with Botty such as adding a help command which will list all the things you can ask Botty. One challenge I faced this month was to modify the number of days holiday remaining calculator as adding the ‘book half days’ feature broke the calculator and I couldn’t figure out how to fix it so I removed the code and structured the unit tests and added more tests to check the edge cases. This forced me to think about exactly what I want the code to do and programming the logic became a piece of cake once the tests were written.
With Christmas coming closer Rachael has started planning the Christmas party and every detail of it has been confidential apart of the date of the party. Hopefully in coming weeks we will get more clues and can figure out the plan for the party.