My Path in Software Engineering
Early days
In the 80s my native country Bulgaria was in the grip of communism and import was kept to a minimum. It was a common practice in the communist block to reverse engineer Western technology and produce replicas under a different brand. This was the case with the Pravetz home computers — analogues of popular Apple, IBM and Oric machines.
In the early 90s, Pravetz computers were still too expensive for most families to have at home. They were mostly available in universities and schools. There was an aura of excitement around them.
Around that time I was 11 and I joined an after-school sciences club in my home town Ruse that had a computer hall with Pravetz 8As and an enthusiastic teacher. On the first Informatics class, I learned how to write a BASIC program that prints on the screen something resembling a squirrel using ASCII characters. I was enthralled.
I continued going to the club through my primary and high school years. Things got more serious — the 8-bit Pravetz computers were replaced with 16-bit ones, we were programming complex graph algorithms in Pascal and I was competing with other kids on the national Informatics Olympiads fighting problems that even our teachers could not solve. I was often the only girl to compete among 70–80 kids from around the country and once I got an award for the best girl performance!
University
The Bulgarian education system provides almost free university education. To get into uni students take acceptance exams in different subjects. Once you get accepted in a program you have little flexibility in the classes you take. I wanted to study Informatics but got into an Applied Mathematics program at Sofia University. All I wanted to do was programming, so I needed to get high grades in my first year to be able to move to the program that I wanted. I did that and moved to the Informatics program in the second year.
Looking back now continuing with Applied Maths or getting a completely different degree could actually be better for getting more breadth of knowledge.
I learned a few useful things at uni — among them, Java foundations, a bit of functional programming, did some very low-level programming in C and even Assembler but overall I found it mostly too theoretical and was keen to do the real thing… It would be good if there were internships back then…
Anyway, the university program was quite lenient about attendance and the IT industry in the country was hungry for fresh talent. I applied for a junior programmer job after my second year, got the job and started working full time while somehow keeping my uni studies just alive.
First Job
The company I joined is called MusalaSoft (Musala is the highest peak in Bulgaria and the whole Balkans — 2925m).
Its business model is to hire enthusiastic kids still in uni and sometimes straight out of high school, give them some time and guidance to polish their skills up and sell their consultancy services at the US and Western European market.
That was a good environment for me. I spent my first few weeks there self-studying — getting a deeper knowledge of Java and SQL and getting certified as a Java programmer and a SQL Server administrator.
Then I joined my first project — just me and one more experienced programmer. I was surprised that I had to use technologies that are quite different from what I had just learnt. We were building financial reports pulling data from a database using a technology called ColdFusion. I am not even sure if ColdFusion is a thing anymore… In a few months, I moved to another project with a larger team where my newly acquired Java skills were employed. I learned about using a version control system, talking to customers, planning, coding conventions. Then another project and another…
I spent 7 years in MusalaSoft working with 6 teams, picking up whatever technology was needed on the go. I grew from junior to mid-level to senior programmer, made some friends and helped other programmers start and learn. I stayed until I felt challenged and growing. Then I moved to the UK in 2013.
The Lessons I Learned
So that is my journey in short. The way was not straight and up, neither fast, but I have found a lot of enjoyment and satisfaction in it. Here are the most important things that I learned:
- learn your technical foundations well, the rest you can pick up on the go
- learn how to deal with people, not only technology
- study by practising
- don’t rush — it is not a race for speed
- higher education is overestimated
- find the environment that will help you thrive
- when stuck — pivot
- keep in touch with the people you enjoyed working with
- keep your mind open to knowledge outside of IT
- enjoy yourself