I feel like I fell into development without even really noticing. I started off working admin roles in digital part-time while studying a conjoint Bachelor of Law and Arts in English and Drama - which all feels pretty irrelevant now! I loved tech but wasn’t getting the creative satisfaction I craved. I started coding a little bit on the side, because I thought it would make me a better project manager, to understand the developers I was working with. I’d always thought that actually being a professional coder was something so unattainable, something that people who looked and acted like me and had my experience just didn’t do, but I loved tinkering around with code.
I remember the moment that I finally realised that this was something I was really excited about and was worth pursuing. My flatmates had some friends over, I think it was about 1am, and I still had my head stuck in my laptop working on a WordPress website for an acquaintance. A friend came over to see what I was doing and pretty much said: “Hey if that’s what you’d rather be doing right now than hanging out with us, you should do that all the time!” It didn’t take me much longer than that to quit my successful project management job and go back to school to study development. It took me till I was 25 to have this epiphany, and starting again completely from scratch at that age was one of the hardest things I’ve ever done but boy oh boy do I count my lucky stars I did!
I have a keyboard shortcut that is just muscle memory now and gets me to the private repos I use for work, including the wetransfer.com project I’m partially responsible for which is by far my most go-to repo. As far as open source goes though, let’s see…
Right this minute it would be feature flagging. It’s been around for ages but I don’t think the community is using it to its full extent. I’ve become what I’ve recently started calling a “feature flagging evangelist”! There’s so much power behind this one little concept and as someone who is directly responsible for the code my team ships, I’m extremely passionate about getting value out to users as fast as possible, mitigating risk, with as few dependencies as possible, with the ability to experiment in production.
Assuming we’re talking about the build phase only and I’m starting with a fully formed user story with acceptance criteria and designs and subtasks refined with teammates (a thing of beauty!) then I would say:
- Diving into the codebase to figure out which files and functions I might be touching, maybe adding comments here and there, maybe with a little pseudocode, so I can get my head around the whole thing
- Deciding on what my first task will be
- Writing a couple of unit tests for it
- Writing the code for it
- Rinse and repeat until I feel like an atomic commit is in order
- Rinse and repeat that until my first shippable increment is done, including integration tests
- Deploying that to my personal development environment for QA to test
- Making a pull request, which is reviewed by two teammates (and QA and designer if applicable) ideally that day
- Making any necessary changes, re-review and merge to master
- Which starts off unit and integration tests and a deploy to staging where I can sanity check the changes alongside whatever other work is being deployed
- And then a one-click deploy to production!
On the tech side, Ruby! The backend of wetransfer.com is written in Ruby and I’m lucky enough to be surrounded by some extremely talented Ruby developers. On the human side, I’m working on the balance between enabling and challenging my team to be the very best and most effective it can be and celebrating my teammates for already being the best teammates a girl could ever ask for :D
If I look at my whole developer career, there’s one project that really comes to mind as the one I worked the hardest on, that was the most challenging, and that changed everything for me. That would be the project I did in my spare time as an intern product developer having come from a year-long part-time polytech degree, trying to prove that I should be accepted into the graduate programme alongside people who had just come from 5yr software engineering degrees. If I remember correctly I worked on it Christmas Day that year. I’m so grateful to have been given that opportunity as I wouldn’t be where I am without it.
Patience! Hah that feels like a silly answer but in this industry, it’s so important. Things change so quickly and we’ll all still be learning how to do this job for the rest of our careers, so panicking about how much we do or don’t know and how fast we can do everything is not only pointless but can be really damaging. I think the two most useful pieces of advice I can give to beginner developers is 1) spend no more than an hour on trying to solve a problem on your own and 2) ask as many questions as you can, but bundle them together once or twice a day so you’re not distracting others. Being passionate and ambitious and driven is amazing, but rather than worrying about what others expect of us, we all need to take good, honest, simple time to ask for help and develop ourselves before we can be truly valuable contributors.
From a purely technical perspective, I think the most challenging thing about working on wetransfer.com is just the size that we operate at. Millions of people use our site every day, uploading and downloading millions of files, meaning that although the site looks very simple from the outside there is a lot of engineering expertise that goes into keeping that thing running, especially when we deploy changes to it multiple times a day. As with most challenges, it also presents us with amazing opportunities. It means that performance is really important for us, it means that we can run really interesting experiments to provide our users with the best possible user experience, it means that I get to work with extremely intelligent people who love big challenges - all of which I’m really passionate about!
As for WeTransfer, did you know that we actually have a whole bunch of really beautiful tools for creativity? Check out WePresent for instance. Every day I go on there I can’t believe the cool people I get to work with and promote. Speaking of which, of course we’re hiring!