CodeGym/Java Blog/Success Stories/There's no need to fight evil in development, but neither...
Level 34

There's no need to fight evil in development, but neither should you touch it: the story of Irina the Programmer

Published in the Success Stories group
We know that CodeGym students want to hear the stories of those who are already working in IT. So we've taken matters into our own hands and launched a series about developers from various countries and companies, who completed our Java training. This story is about Irina. At school and university, she loved the technical sciences. She knew a little about programming but chose to take a job in contextual advertising. Still, Irina wanted to try her hand at development. One day, she received an email informing her that developer interns were being hired for a particular service. And although our heroine didn't pass the interview, the experience motivated her to start learning Java."There's no need to fight evil in development, but neither should you touch it": the story of Irina the Programmer - 1

"I definitely wanted to try myself in development"

After 9th grade, when I had to make a choice of direction for further studies (i.e. technical, humanitarian, economic, and medical tracks), I was torn between the humanitarian and technical tracks. For me, the humanities represented a career as a journalist, denouncing evil and championing good causes all over the world. As I contemplated the technical track, I thought, if I'm not fighting evil, at least I won't be touching it. I followed the path of least resistance and chose the technical track. After school, I entered university, majoring in Computer Science and Computer Engineering. Alas, the university did not provide any skills in any specific language. In a disjointed fashion, I learned some things about C++, C#, JavaScript, and UI layout. In my third year, I randomly became interested in contextual advertising and just happened to get a job at a fairly well-known company. As a result, I remained in advertising for 2 years. I enjoyed decent successes, but I definitely wanted to try myself in development. My return to programming was also without a well-thought-out plan: I received an email at work about a new service looking to hire Java developer interns. I decided to go to an interview. Of course, at that time my basic knowledge was not enough to get an offer, but this episode prompted me to look for some resources about Java. I stumbled across this course on the Internet. They didn't hook me at first: all the funny pictures and robot stories made it seem unserious to me, but I really liked the chance to practice and check my tasks. I lingered and decided to try it, and then I got pulled in.

"I failed the first few interviews"

I studied without a rigid schedule, in fits and starts: during breaks at work, sometimes at night. At about Level 16-17, I began to try to look for a job. By that time, I had been studying for about three months with some breaks. If you don't have work experience, then they like to ask about algorithms, but I also hardly knew them. So I failed the first few interviews. I had to prepare more, look for the most frequently asked questions, and memorize the answers to them. I urgently learned SQL, studied code versioning systems (IMO, CodeGym mentions Git at an unreasonably advanced level, not until Level 30) and SOLID principles, and learned sorting algorithms. In the end, I was hired as a junior dev at a small company. My tasks in my first job were super trivial: developing new system functionality, polishing existing functionality, fixing bugs. We used the waterfall methodology: a business person sends a task, an analyst describes it in a little more detail, a developer implements it, an analyst tests it, and then the developer rolls it into the product. We didn't use any special technologies: we wrote everything in pure Java — a monolith instead of microservices. To work with the database, we used our own proprietary closed-source framework. There was an ocean of difficulties at the very beginning — from learning how to upload the project to the repository, to how to write a request to the database so that it does not time out. I had to google a lot about working with JSON, SOAP, about what Maven is, and about how to build a Maven project. I didn't abandon learning. I tried to study at least every other day, but there were a couple of times when I had to set it aside for a month. But my goal was to finish the cherished 40 levels. In parallel, I took a course on the Spring framework. Spring has opened up a lot of new opportunities for me, and the offers I receive thanks to my resume have multiplied many times over. During quarantine, I changed jobs and switched to a project with a microservice architecture. We're creating a service for searching for, selling, buying, and leasing residential and commercial real estate, as well as applying for and servicing mortgages. 80% of our services are written in Kotlin. The other 20% are written in Java.

My plans for the near future are:

  1. Deeper immersion in architecture. I would like to do a deep dive into the design of backend architecture.

  2. Learning C++. I think this will definitely be useful for any programmer — to be able, if necessary, to write the parts of an application that need to run exceptionally fast. This will be useful for any complex mathematical calculations.

  3. DevOps. Some companies even make this skill a mandatory requirement for programmers. And it will definitely be useful at any other company.

I have no regrets at all that back in 9th grade I opted for the technical track and that two years ago I was brave enough to leave advertising and start a programming career. Development is a kind of magic, a way to make complex things simple for people, to replace confusion with clarity. I'm currently trying to get my 12-year-old younger brother interested in programming. A year ago I gave him an Arduino starter kit and I'm thinking of buying a book for him about Python coding for Minecraft. When he gets a little older, I'll introduce him to CodeGym. I think he'll like it. One important thing I got from CodeGym is my realization that you really shouldn't be afraid to pay for good materials. It will pay off a hundredfold.

Tips for beginner developers:

  • Continue programming. A programmer's work consists entirely of solving certain problems, and finding certain errors, and correcting them. Sometimes this may (and definitely will!) seem unbearably difficult, boring, and vexing, but when you finally solve the problem, it feels like a real breakthrough, a victory, almost a discovery. And this cycle repeats itself. Anger, acceptance, long attempts, and endless failures, then victory. The thrill of a programmer's work lies in the anticipation of the next breakthrough and victory. "There's no need to fight evil in development, but neither should you touch it": the story of Irina the Programmer - 2
  • Continue learning whenever and wherever possible. Read articles and books. Find and take courses in various areas of software development. Be sure to try new technologies. Apply them to your personal projects. Interact with others who are passionate about software development. Exchange experiences and ideas. Once upon a time, it was talking to such ambitious folks that helped me to not languish at my first company and not be afraid of moving on.

  • Hence my third tip — Don't be afraid of changing things up: a new job, a new framework, a new language (forgive me, CodeGym). All my major victories over myself happened at exactly the moment when I changed jobs. Initially, it seems scary to go somewhere without fully mastering the technology or language, but this stimulates a lot of growth, as you study this unknown technology or language. Your second wind kicks in, and you find special meaning in understanding and studying something new.

  • Be reasonable in assessing your strengths. Even if you can combine employment, independent study at home, some online courses, university, and maybe a family, for a time, there is a great chance that you will get exhausted. Unfortunately, I know a few guys who burned out and abandoned programming after a prolonged period of combining university, being gainfully employed, and also working as an unpaid developer intern. If they had taken an extra day off or academic leave at the university, if they had taken one day for a vacation and set aside studying if they had taken a break from their online courses for a few weeks, then perhaps everything would have turned out differently.

Comments (1)
  • Popular
  • New
  • Old
You must be signed in to leave a comment
Derick Asane
Level 2 , Cameroon
13 August 2022, 22:12