Hi all! I’m Stan, and I did a year long industrial placement with Couchbase in their Manchester office. Read on to find out what working at a software company is like, discover some of the skills you need to succeed in the industry, and finally, learn some unexpected things about careers in software!
I picked Couchbase mainly because I wanted to work in a company where software development is the primary subject, and not just a department on the side enabling other business to occur. Couchbase is headquartered in Santa Clara, California, the heart of Silicon Valley. It touts itself as a “big company with a start-up mindset”. I wasn’t sure if I could totally believed them (turned out I could), but still, it sounded exciting!
The product Couchbase delivers is a high-performance distributed database, delivered both as a software package, and as an SaaS cloud offering. Some similar products you may have heard of are MySQL, MongoDB, PostgreSQL, Redis, and the like. Databases power the “innards” of nearly every application on the market, and so they are a big business sector with many competitors. While you may not have heard of Couchbase, it is used by many big companies such as Tesco, Sky, LinkedIn, and many more.
Fun fact: the voice chat used in Fortnite is powered by Couchbase! Epic Games incorporates VoIP software from a third party vendor that uses Couchbase internally.
Working in the software industry
I won’t sugar coat it! Like every other intern, I started off on the Support Engineering team. This is probably not what you’re imagining when you think of software development, but it was a genuinely useful experience that helped me learn and solidify the skills I would need later on (more on that below).
A few months in, I transitioned to my permanent role: SRE – Site Reliability Engineer on the Reliability & Observability team. You may not have heard of SRE before (but look it up – it’s very hot right now!), but the crux of it is that you’re tasked with making sure that the product – a cloud hosted database in my case – is reliable, available, front-end loads swiftly without errors… and when inevitably, there are errors, there is enough data available to know what’s wrong and how to fix it.
During my placement, I was tasked with spearheading a company wide project: the integration of a third party service provider that would help the Support and SRE teams have more powerful tools at hand for fixing any issues the customers may encounter. My journey took me from piloting this project through the Proof of Concept stage, presenting it in a Zoom meeting to the Senior VP of Engineering in California, and all the way to rolling it out across the three major cloud providers, AWS, GCP, and Azure.
I was involved with writing Go code and Terraform configuration to manage the full SDLC (Software Development Life Cycle) of the agent necessary for this integration, from deployment across the three cloud providers to programmatically handling upgrades and backend communication. I also got a lot of practice in soft skills: I needed to communicate with both senior leadership on the Couchbase side, as well as the engineering team of the third party provider. I also had to document all the work that I’ve done – I needed to hand it off at the end of my internship and onboard other engineers to enable the project’s maintenance.
Skills you’ll develop
You’re wrong if you think being a software engineer only involves writing code! There’s a wide variety of other technical and soft skills that you must possess to succeed in this role:
- Linux command line: don’t get too comfy spending your time in Windows and VSCode!
Software is commonly hosted on Linux virtual machines, so you need to get handy with logging in remotely via SSH and using the command line to troubleshoot any issues
- Infrastructure: software has to run on something!
And that something – whether VMs or Kubernetes pods – is provisioned and managed via Infrastructure as Code languages like Terraform and CLI tools like kubectl. You can specialise in this area as an engineer, too: look up DevOps as a job title.
- Debugging across a wide surface area: a skill I could not have picked up outside this internship.
The Couchbase Server is made up of seven independent-yet-interlinked services – and the software that makes it available in SaaS fashion is a separate layer atop it all! Any issue you encounter could reside in one of these services – or occur as a result of how they communicate together. Debugging these kinds of issues was something that my time on the Support team really helped me with.
- Communication: written, oral… and via Confluence wiki pages, too!
When you are a part of a 400-strong Engineering organisation, split across the UK, Poland, United States, and India, communication is key. I’d often need to send questions or updates to people in other timezones, working async, across many different channels: Jira tickets, Slack messages, Zoom meetings. The topics were technical – learning to discuss them clearly and concisely is not a trivial task. Again, my time communicating with customers as part of the Support team has really helped me develop at this.
Diversity of available software careers
When the going got tough and exams were upon us in the second year, one topic often came up on Discord: what if I don’t actually want to spend 40 hours a week writing code for the rest of my life? Good news! You really don’t have to. There is a wide gamut of software-related careers that you could opt to pursue.
- Technical writing and documentation: nothing at all like doing English Lit at college!
People in this specialisation have to spin up the software, learn how it works, and transmit this knowledge in a correct, coherent, easy to interpret manner for its end users.
- Sales, solutions, and field engineering: a piece of software is ultimately a solution to a client’s problem.
The people on these teams have to interact with the clients, identify how Couchbase can help them – aka scope out a use case – and then demonstrate and implement Couchbase Server as a solution for their problems. Engineers in these roles have to have both excellent people skills and the deep engineering knowledge to implement Couchbase Server as part of the overall software package for their clients.
- Developer relations: the questions posed on StackOverflow and social media don’t just answer themselves!
As part of DevRel, you may be involved in discussions on Twitter and Discord with potential clients or open source hobbyists, or flown across to various locations to present the Couchbase product at technical conferences and meetups.
Future full of possibilities
Congratulations if you’ve made it this far! Hopefully you’ve enjoyed my recap of my internship experience, and of the wide array of both the skills and the opportunities that are a part of the software business. To recap:
- As part of a placement year during your University of York studies, you can experience making real impact and learning a wide variety of in-demand technical skills.
- Software development isn’t just writing code! You have infra, docs – and real people in different roles and locations that you will need to talk and work alongside in your role.
- Software isn’t just software development! Many more roles are involved in making money delivering software. If you are technical, but crave more people interaction than a pure dev role can provide, there are still plenty of fulfilling career opportunities that a Computer Science degree could enable you for.