13 Dec 2016
By Belle

What it's like to be a junior developer in charge of half a company's development

We're a two-person company at Hello Code. Josh handles web and Android development while I handle marketing and iOS development. (We both share things like business admin and customer support.)

When we started Hello Code I didn't do any kind of development. All I knew was marketing. It seemed like a good fit, since Josh didn't like marketing but was a great web developer. He also had some Android experience, so it made sense for him to take that on eventually, too.

While we were working on our first product, Exist, I started learning iOS development. I started learning it for my own benefit, but it didn't take long before we both saw the potential for me to build an iOS app for Exist. The web app had been responsive from the beginning, but there's nothing quite like a native mobile experience.

My very first iOS app of my own was a very trimmed-down version of Exist. That tiny app has grown to become a full-fledged mobile client for Exist over the past couple of years. Which now puts me in the position of being a junior developer—just a couple of years into development, and only doing it part-time, since I have a day job—responsible for a big chunk of what brings in our company's revenue.

Larder is still very new, so its revenue is negligible at this point. Exist is our main money-maker, with just enough income to pay Josh a very paltry full-time salary. I'm working a day job part-time while we build up Hello Code, but Josh relies on the revenue from Exist. And since a lot of our users interact with Exist mainly on mobile, my tiny app has grown into a big responsibility.

This puts me in an interesting position, with a few issues I hadn't expected.

I struggle a lot

Being one of two developers, and the only one working on iOS with Objective-C, I can't always go to Josh for help when I'm stuck. For basic logic problems or thinking through how to implement a new feature, it's really helpful to have another developer to discuss things with. But whenever I'm stuck on something specific to my language or platform, Josh's help is limited.

And as a fairly new developer, I get stuck a lot. I could really use a more senior developer around a lot of the time. But I've had to learn to keep trying until I figure things out when Josh can't help. Because if I don't, development on our iOS app will stop. There's no one to pick up the slack, and a lot of our users are waiting for the bug fixes or new features I'm building.

Sometimes I think it would be nice to work in a company with more senior developers working with the same technology I am, so I could ask questions and get help when I'm stuck. But when I'm not in the middle of a problem it's easier to see the benefits of having to figure things out on my own.

I'm the "expert"

Being the only iOS developer, it's up to me to understand Apple's policies, the nuances of iOS devices, and how to implement features in Objective-C. While this makes sense, I'm so new to development that I often don't know these things. I have a massive amount yet to learn, and new devices, APIs, and even whole languages are popping up all the time.

I find it overwhelming to think about how much I have to learn, and I know it's frustrating for Josh when we need to make a decision about the iOS app for Exist but I don't have all the information a more senior iOS developer would know. It's my job to be the expert in my area of development, but being a beginner means I'm nowhere near that level of knowledge.

I'm building a product that's a huge part of our business

Around 60% of Exist users who use one of our mobile apps are on iOS, at last check. That's over half our mobile users (and mobile users are the majority) for our biggest product that are using my app every day.

On the one hand, that's really cool. That's hundreds of people using an app I made, day in and day out.

On the other hand, wow. The pressure! More than half our mobile users who pay us a recurring subscription are relying on little old me to provide them with a stable, polished, useful experience.

It's simultaneously humbling, exciting, and terrifying.

It's not uncommon for a couple of developers to take on a brand new product or a whole company by themselves. In fact, it's not that uncommon for a new developer to take on building a product all by themselves.

But after three years of building Exist as our main product, we're now at the point that it (just barely) pays one of us a full salary. And we're relying on that salary. Not to mention trying to double that revenue so it can support both of us.

All those factors increase the pressure on me to build a great app—to not let bugs get through to live versions of the app, and to keep up with Josh's progress on Android so my users aren't left behind or missing out.

I've started working on an iOS app for Larder (sign up to hear when it's launched here), but it's still got a long way to go before it's ready for beta testing. When I finally do launch the Larder iOS app, it's going to add to the pressure. I'll be in charge of iOS development across our whole company, which is a huge responsibility.

I can only hope my skills and confidence increase as quickly as my responsibilities do.