Becoming a software developer: mission impossible?
If you’ve ever dreamed of changing careers and becoming a software developer like I did, the first question you might have is where do you start? After all, there’s a firm belief that you need a computer science degree to be a software developer. And people think you need to learn a lot of mathematics, computer science and other technical disciplines at university before you can start writing even simple code. Or you need to be certified maths genius to even contemplate it.
But I know for a fact that these are misconceptions because I have been through all of them. This is my story about how I ended up working as a developer at Exasol, with my language degree and a complete lack of mathematical knowledge.
Oh, one more thing – I’m a woman.
Born and raised in a small Russian village, I went to Moscow to study foreign languages at university. I majored in Japanese as I like the Japanese language and culture, and English translations.
I don’t regret my decision to study languages. But after graduating, I realized that appealing employment opportunities were few and far between. There are two types of work for a language graduate in Russia:
I tried both and didn’t like either. There were only a few translator roles in Moscow. The vast majority of them only required minimal Japanese language proficiency and were at assistant level. And working as a teacher at a private language school also didn’t work out – inconvenient working hours combined with a pressured atmosphere weren’t for me.
It was time to move on.
To program or not to program
My husband had graduated from the same university with the same degree two years earlier and started taking programming courses straight after. He was already working as a software developer when I graduated. This inspired me to follow the same path.
A career in software development looked appealing, because:
- Programmers are needed everywhere – not just in your home country, but also abroad
- You only need a laptop and an internet connection to get started
- You can constantly develop and improve your programming skills throughout your career
- It’s well paid
- Programming doesn’t require any special skills – you don’t even need to be a mathematician
I could go on but I’m sure you get the idea.
A new focus
I decided to learn programming while I was at the private language school. My skill level at that time:
- Computer science – I knew how to turn on my Windows laptop, install games and play them. What else do people use computers for?
- Programming – I once created an HTML page just for fun. I also had some basic C programming language knowledge so could display “Hello world” in a console.
- Mathematics – I successfully forgot all my high-school level math once I started my degree.
I signed up for a three-part online Java home-study course. It was programming in the mornings and teaching in the evenings. But studying while working proved very hard and I quit my job to focus on learning Java. I watched video lectures, read books and completed the required code exercises that the course trainer checked. The course covered:
|1||Java syntax, OOP||~ 1 month|
|2||Data structures, sorting algorithms, algorithm complexity, clean-coding conventions, SQL, etc.||~ 4 months|
|3||Advanced Java (concurrency, network access, database access, web applications, unit testing, etc.)||~ 6 months|
I spent four to eight hours studying nearly every day. While I was preparing for a job interview in Moscow, my husband got a job offer from a German company. So we packed up everything – including our cat – and moved to Germany.
I faced quite a daunting task to find my first programming job:
- I had no work experience.
- I didn’t have a degree in computer science.
- I couldn’t speak German very well. I spent the last month before we moved studying German and passed the A1 exam, but it wasn’t enough even for everyday use.
- I didn’t have a certificate from my programming course. They had only provided a recommendation for that potential employer in Moscow, not very useful in my situation.
But I could write code and was sure that my programming skills were as good as, if not better, than computer science graduates fresh out of university. The problem was, there weren’t many vacancies for an inexperienced programmer who didn’t speak German in the small city we had moved to.
I sent my CV to several places including Exasol. Their advertised ‘Junior Java Developer’ role sounded perfect for me and I was lucky to be invited for an interview.
I prepared for tricky questions about concurrency, framework features and so on, but I was mostly asked about the coding examples I had sent in together with my CV. In my second interview, I was asked to implement solutions to algorithmic coding questions. After that I received a job offer and accepted it on the same day.
Personal development at Exasol
I joined a small integration team of four developers with me being the only junior one. All my colleagues already have many years of experience and I think it’s a great environment for a junior developer.
I can ask for help when I’m stuck or don’t understand something – somebody will always help. We also have a great manager who encourages and guides us on our personal career development. I really appreciate all the support I get from my team.
Currently, I mainly work on our open-source project Virtual Schemas. I’m developing it together with a senior architect who’s mentoring me. All my code gets reviewed in detail and I keep on polishing it until my mentor is happy. Once it’s approved, I merge and release my changes. I think mentoring is very effective to improve anybody’s programming skills.
Let’s see at what I’ve achieved after seven months:
- I continually improve my Java skills, learn best practices and patterns, how to write clean code, and use various new libraries and frameworks.
- I work with many different databases – Exasol, Oracle, Postgres, SAP Hana, Google BigQuery and many others. It helped a lot that I had already learned some SQL during my home-studies. Now I understand databases and SQL much better.
- I use Linux as an operating system and its tools.
- I got to know Docker, virtual machines and computer networks in general.
- I’m learning Python, a second programming language.
- I have a better understanding of data science, machine learning and mathematics such as linear algebra.
Exasol lets me choose my own personal development path inside the company, so I picked Python and data science. This isn’t necessary for my current Java specialization, but my team needs these skills. So I’m able to explore a new interesting field and apply my new skills immediately to help my team with existing tasks.
Of course I still have a lot to learn, but I’m improving every day and gaining experience. I’ve completed my mission to switch from being a linguist to work as a programmer. And all within in a year. Maybe my story inspires you to do the same.