Programming is difficult. It's a unique career that has you staring at your computer, alone, for somewhere between eight to infinity hours a day.
Some programmers compound this isolation-and-computer-induced headache by running their own software company where they have to triple as a programmer/client acquisition/big boss hybrid. I was one of those programmers.
After I graduated from university, I began with freelance work before I moved on to founding and running a software company. Working for myself meant that I got to tackle interesting projects with people from all over the world. I analysed the community impact of an aluminium refinery in Mozambique and programmed for a military laser cutting manufacturer in Germany. I made good money and found good work in a field that I dreamed about working in since I was a kid.
But I wasn’t happy. There were so many underlying issues that came with working independently that I didn’t realise existed until I began working with Arcurve. These are the three major problems I faced as an independent programmer.
1. Teams tackle better problems.
Operating my own development firm, I learned a hard truth: big companies get big contracts. While I had a great opportunity to get to know my clients one-on-one, as a small company I often worked primarily with other small companies. This doesn’t mean that I never got to tackle interesting problems, but major contracts that offered new challenges were few and far between. While searching for another major contract, I often found myself working on smaller, more repetitive tasks like creating high-end blogs or running a low budget Alpha test for a local start up.
Humans don’t work well in isolation. We are social creatures that are driven by the urge to solve problems. When the contracts I found became too repetitive and boring, I would sometimes take a paycut and hire out another freelancer to complete the project. The moment I took a job at Arcurve, the feelings of monotony and isolation disappeared.
My passion has always been developing. I enjoy putting in the work to create something and seeing that creation change the world, even if it’s only in a small way. At Arcurve, they have built a reputation that allows the company to gain big contracts that feature interesting problems. This means I get to focus on doing what I love: programming.
2. Teams offer broad and in-depth learning experiences.
As a student, I always learned best by reading through the textbook on my own. This was a great approach to learning when the information was relatively static. However, you can’t learn to program out of a textbook. It’s too new a field. New technologies, frameworks, and languages are constantly being invented which means that the best place to learn programming is a place where programming happens.
At Arcurve, I work in a team. This means that I do not need to hold all of the knowledge of programming in my own head, something that is fairly impossible to do unless you’re studying a static topic out of a textbook. Instead, I get to learn from my team members and share with them the knowledge that I have gained.
A great example of this is one of my team members who has been monitoring the development of graph style databases, such as neo4j, since their early onset. Prior to my job at Arcurve I believed that SQL relational databases were the best solution to data storage. However, thanks to my conversations with this teammate, I found out the benefits of graph style databases and went on to learn neo4j myself!
3. Structure ensures success.
Now that I've worked with Arcurve, I have realised that I ran my company like it was the Wild West. Tasks were assigned based on my gut feeling for who could handle it the best and tasks were tracked by my gut memory which was often insufficient. Meetings were infrequent and contractors that I hired worked in silos, often not touching any of the other production code. We didn't have tickets, we didn't have sprints, and we didn't have stories. That we accomplished anything at all is a testament to how much I loved programming.
I believed that a structureless approach to development would allow for flexibility in how I worked. While this was true, there were many benefits to structure that I didn’t know. One of these benefits is that monumental jobs are broken down into manageable stories and subtasks so that each developer has a clear idea of their path through the project. Frequent check-ins ensure that developers work efficiently so that the project is completed.
Productivity doesn’t happen because individuals are excited and tackle projects in a frenzied manner. Productivity happens because individuals have clear goals that are set and are empowered and excited to work within a team to achieve those goals.
Building a company was so much fun and I don’t regret doing it. However, working at Arcurve has given me all the things I was lacking. It’s given me big, more interesting projects. It’s given me a team to learn with. And it’s given me success.
If you find yourself in a similar position to mine, then I recommend you give Arcurve a shot.