Growing up, I always liked visual arts; every aspect of it- from doing things as simple as doodling in my notes, to building paper mache sculptures. Instead of dolls and toys, my parents would buy me legos and a set of 48 colour pencils even before I even knew how to use them. Studying art movements, understanding why past artists did what they did, and then synthesizing that knowledge to tell my own story turned out to be a game of puzzles that I really liked to play.
I eventually realised that I liked what I created more when it actually served a purpose; be it to support a cause or visualise a narrative. When I was thinking about career paths, I craved for even more of that structure and tangible measures of success, but I did not want to give up the opportunity to be creative. For a short period, I pursued the idea of being an architect.
During the time that I was preparing to pursue that career, I dabbled in blogging to share the work that I had done. One day, I was curious to see if I could personalise the layout of my blog to reflect my story better, and that was my first exposure to code. (It was PHP and CSS in case you’re wondering). Then, it was the simple question of “What else can I do with code?” that lured me into IT. Eventually, I stayed in the industry and chose to be a developer because of the reasons that I loved arts growing up- it constantly allows me to be creative, to solve the puzzles my way while serving a purpose.
What does a Graduate Software Developer actually do?
When I think about what my responsibilities are, I think about myself putting on two different hats:
Being a graduate, I have the opportunity to learn on the job from some of the smartest people in the industry, while focusing on adding as much value as I can to Thoughtworks. This could be addressed by being involved in an initiative like LevelUp or by pitching into internal office projects (software development or otherwise).
As a software developer, I believe that it is my job to contribute to delivering technical solutions to business problems while advocating for software engineering best practices and agile ways of working.
When merged into a single role, I think my main focus as a graduate developer has been to be a team player and to continue to upskill technically (in programming or otherwise).
What does your typical day look like?
Coffees are crucial to start my morning. More often than not, a stand up would shortly follow that, and if it’s a Monday, I would send out an email with a list of meetups that are happening in Melbourne that week.
That said, I think those are probably the most constant routine of my days, because they really vary, regardless of whether or not I am on a client. Sometimes I would find myself spending the day watching tutorials on a new technology that I am interested in. Other times, I would find myself pair programming, doing a spike, or fixing tech debt. As a graduate, I tend to go about my day reactively, offering a helping hand where needed as opposed to having a solid, personal agenda to follow.
What’s the most challenging part of your job?
The most challenging part for me is actually something that I love about my job as well, which is the fact I more or less get to define my own career path. As a graduate developer, it is my job to define what I can bring to the team; not in a “are you good enough?” kind of way, but more like a “what are you so passionate to learn about that you’d do anything to master it?” way.
With the amount of context switching and all of these exciting technologies around me, I find it a little difficult to find that path, one that allows me to bring the most value to Thoughtworks first and foremost, but also one that allows me to do things that bring me the most joy.
What’s your favourite part about your role?
The constant exposure to new technologies and ridiculously smart individuals. I love the feeling of being surrounded by people who are passionate about what they do and are more than happy to share that with others. Perhaps it’s the fact that I am quite a novice in this industry, but I feel like I have been learning something new every day that I come to work.
In the short year that I have been at Thoughtworks, I have been involved in engagements that required different specialisations (e.g., infrastructure, front-end development, data visualisation), not to mention knowledge of different domains, and I was always exposed to new tools and frameworks every time.
What are you measured on?
I ask myself the questions, “How have I been adding value to the team? What tangible evidence can I collect to support that?” To answer those, I usually ask for feedback directly from the people that I work with. It’s not just about how strong my technical skills are, (although that is quite important), but it’s also about my development as a well-rounded consultant.
What makes a good Graduate Software Developer?
Having the ability to learn and adapt quickly is probably one of the most important traits. One piece of advice that I always get as a graduate is to hang on to the core software engineering principles, design patterns, and best practices instead of clinging onto a specific tech stack.
I love programming, I really do, but I think it’s also important not to forget about being a consultant as well. My job is not just to write code; it also involves facilitating a workshop, speaking in a showcase, conducting user testing sessions. Being proactive, interactive, and taking initiative are good traits to have as a team member, as well as having the courage to challenge the status quo where appropriate.
How do you manage different stakeholder needs?
As a graduate, I haven’t been exposed to situations where I handle external stakeholders frequently, but when I do, I would identify what role that stakeholder plays in that particular situation and who else is involved in it. These questions help me to identify whether I should involve a more senior Thoughtworker in the conversation. When the situation requires me to handle it myself, I would express honestly and transparently about what I’m currently doing, what the blockers are, and what I think needs to be done in the effort of satisfying their needs.
On your current project, what has you most excited?
The chance to stretch both my consultant and developer muscles. I’ve had the opportunity to interact directly with potential end users of the product while having the creative liberty to code a prototype (using React!).
I love being a consultant because…
Switching contexts excites me; I believe no two engagements have been the same for me so far. I love playing that puzzle of how to best design/develop/synthesize a solution to solve a specific problem.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.