Where did you grow up?
I grew up in the Philippines and studied at the national science high school. I had an inclination towards science and mathematics since I was young and was supported well by the emphasis of the school’s curriculum in those areas. I then moved to Australia for university. I took my first part-time job as a mathematics and reading tutor in my first year at university. However, in my second year, I got caught up in a lot of extra-curricular activities and stopped showing up for university classes. Eventually, I found my way back to university and finished a year and a half later than my original graduation date. Having been delayed, I strived to be more active in my final year in university, so I joined hackathons and meetups and became a demonstrator and tutor in the university. The following year was when I started my first full-time job as a software developer at ThoughtWorks.
How did you get to your current job position?
A friend of mine recommended me to a ThoughtWorks graduate recruiter and the recruiter then contacted me. I have been in my current position for about ten months.
How did you choose your specialisation?
As a graduate software developer, there isn’t an expectation yet to specialise. The type of project you get assigned to mainly shapes what specific area you first get exposed to and learn in-depth. However, if you do want to try out a different area, most graduate developers would start doing online courses on their own and have conversations with other developers in their company who are in those other areas for guidance.
What was your interview process like?
My interview process was comprised of several stages: a take-home coding assignment, a code pairing session, a behavioural interview, and a short presentation on any topic I wanted. There were three problems to choose from for the coding assignment, and on the code pairing session, I had to show my solution, explain how I did test-drive development, and do a small improvement on the code whilst pairing with the interviewer. The behavioural interview spanned questions from being a team player to social causes I cared about. Finally, the ten-minute presentation was a chance to show another side of myself to a group of various ThoughtWorks employees.
What does your employer do?
ThoughtWorks is a software consultancy that enables core technology and digital services uplift to clients in different industries such as finance, healthcare and transport. Most engagements will be focused on software delivery (e.g. building a microservice or migrating legacy applications) while some will be on an advisory (e.g. helping management build a better delivery model and structure for a department of a hundred people).
What are your areas of responsibility?
I work as a developer in a delivery team that is comprised of both ThoughtWorkers and client developers. My primary area of responsibility is to develop quality software that aligns with the prioritised goals of the client. I need to be in constant communication with the team to surface any technical issues or roadblocks and ensure that we are building one cohesive system. I also have the responsibility of giving and receiving feedback amongst my team members for continual improvement of the team dynamics.
Can you describe a typical workday?
I get to work at about 8.45 am and usually start my day by doing some minor code changes or cleanups (e.g. updating our README file or fixing typos in the code). At around 9.00 am when most of the team have arrived, we begin pair programming on core tasks we have left off from the previous day. (Pair programming is an agile development technique where two developers work on one task through writing code and debugging together.) At 9.30 am, we have our standup meeting where we all give an update on the tasks or stories we have been working on and possibly switch pair assignments, so everyone is knowledgeable on the different parts of the codebase. From this point, everyone should have a clear understanding of their primary tasks for the rest of the day, and we move back to our workstations with our pairs and continue working until lunchtime. Our team frequently has lunch together at the office kitchen and it is a mix of takeaways and packed lunches.
In the afternoon, we might have informal tech huddles when a pair realises that there are bigger architecture decisions that have to be made for their task or technical roadblocks to be addressed. Our tech lead is usually a part of those conversations and would bring up further questions or ideas to break down the problem. When a path to move forward is agreed upon, then we would continue our work again. It is common as well to see members asking others for help on an ad-hoc basis when they are uncertain about the code they’re working on and was written by someone else or when they remember that someone has encountered a similar problem before.
There are days that are productive and days that are slow to progress, but I have learned that that is alright—consistency in the long term is better than running out of all your energy in a couple of month’s time. Finally, the day ends at around 5.00 am and everyone packs up.
What are the career prospects with your job?
Being a graduate software developer leads to many positions with different specialisations like front-end development, back-end development, infrastructure, or data engineering. All the different specialisations have good career prospects and I believe it’s a matter of finding out which specialisation you are most interested in.
What would your career be if you weren’t doing what you’re doing now?
I might be an aerospace engineer but I like software engineering a lot right now that I can’t see myself turning away from it, at least not yet.
What do you love the most about your job?
Building things and incrementally adding to their functionality and value are what I love about software engineering. I enjoy understanding how software systems work, how they’re connected and wired up, and how I could use that knowledge to implement what I need to do.
What’s the biggest limitation of your job?
I believe that it is not the limitation but the vastness of software engineering that makes it difficult. I don’t have to work on the weekends and I could freely choose how I want to spend it, but there can be an internal pressure to do extra self-study with how quickly technology changes.
Which three pieces of advice would you give to a current university student?