Series "How to become a programmer: stories of our mentors "
- How to become a RoR web developer: Ivan Takarlikov’s story
- Where to begin as a programmer: Ilya Konovalov’s story
- How to become a RoR Developer: Stas Mehonoshin’s story
- How to become a programmer: Kirill Shirinkin's story
- How to become a Python Developer: Aleksey Kurylev's story
- How to become a Java & Spring Developer: Rinat Muhamedgaliev’s story
- How to become a QA Engineer: Pavel Konev’s story
- How to become a PHP-developer: Ruslan Kuptsov’s story
How to become a Java & Spring Developer: Rinat Muhamedgaliev’s story
I took my first look at computers in elementary school, at information technology electives. We were writing some simple stuff in Basic and it was really cool to write commands and see simple geometric figures on the screen as a result. This is how I got acquainted with programming.
In a little while I got my own personal PC. After I screwed up the OS twice I was told that if I wanted everything to work properly, I had to fix that. My parents always encouraged my curiosity and spared neither trouble nor expense for my self-development. They also taught me to solve the problems I faced by myself. That’s how I discovered the OS world.
After that I found a weird disc with Mandrake Linux on it and my mom and dad allowed me to buy it. The same night I deleted Windows from my computer and an awesome penguin was able to settle down there. At that moment I fell in love with Linux as it was really simple and I had an opportunity to make everything in my own way.
I was a part of the Hacker magazine (the biggest Russian printed magazine about programming and data security – translator’s note) fandom and a regular at their message board. By that time I knew Perl and wrote in it, but couldn’t grasp C at all. Being a middle schooler, I was also learning Python and creating plain CGI websites. I was interested in PHP as well, but we couldn’t get along for a long time.
I went to vocational school to catch up on my studies and there were lots of people like me around. We used to write mini programs together so that the homework would be more fun to do. At that time I also started working as a freelancer and got my first real tasks. I improved my C knowledge which allowed me to move on and learn new similar languages.
I entered the college, but my major was hardware, not programming. We had classes about mostly everything: microcontrollers, system programming, networks, hardware etc. My professors helped me learn the basics and understand the low-level design of computer networks and thus, I was able to continue my self-education with that.
There was a time when I was really into pirate servers of some popular MMO games and helped the team with technical issues. I had to decompile game clients and analyze network packets to catch up with the game developers. The tasks were really complex and versatile, from bug fixing to creating additional content for the games and anti-cheat systems. Because of that I was advancing at a drastic pace. At that point I got the gist of C++ and started playing around with Java.
At the second year in college some company mentioned in their social media that they were in need of developers. I vividly remember how nervous I was. I had no commercial experience and was a student. I passed an interview as a Java developer, got the job and started working and studying intensively. At risk of looking ahead, let me tell you that working in the very same company I got two degrees, a bachelor’s and a master’s ones. As there were only young people in the team, including me, we were growing up together.
I’ve been working in Citronium for more than 5 years now. I started as an intern and after a while became a backend lead. I’m incredibly grateful to my company and colleagues I’ve been growing with and still grow now. Here we’re doing the meetups dedicated to some specific topics as well as industry news and adopt best practices to implement them into our everyday routine later.
During the studies it might be that there’s no information about some topic which leads to a dead-lock situation. Since I’m always excited about everything new, right now I’m beta testing different technologies and practices. That’s why I love StackExchange. There you can ask questions yourself or help others. Basically, the only difficulty I can remember is insufficient information, but this one might be easily solved as the search algorithms in your head might direct you to the place where to look for it in a quick and effective way. I help to search for some info pretty often and I’m always glad to do that.
When I was at school, I was showing my classmates how to work with office programs. This is how my work as a mentor started. At the vocational school I was helping my groupmates as well. We were spending a lot of time in the library, trying to figure out how to solve different programming problems and helping each other with that. At college I acted as a substitute teacher for programming and system administration classes assisting the students with the problems. That has always been fascinating for me to see how others learn tagging along with them. At my work you’re even obliged to help and mentor others as mentoring is the easiest way to grow inside the company. At each stage we develop new practices and approaches.
It has always been a lot of fun for me help others and give clues about how everything should work. Mentorship helps me to broaden my horizons and deepen the knowledge in the fields I might have never come across with. It lets the ones who learn advance and allows me to evolve professionally too. And I’m always over the moon when I discover something new!
Can you give some advice that is usually considered to be controversial?
Don’t believe the ones who say that what you wish is impossible. You can go far and achieve anything you want to. You just need to move in the right direction.
How do you maintain your skills to be relevant? How do you grow and get better as a developer?
You need to regularly work with unfamiliar tasks to grow. If you deal with the things you don’t know yet every day, you polish up your skills and develop consequently. You might as well have curiosity and be willing to learn.
If I see an article, I save it to Instapaper and leave it there for a while. Then, when I manage my unread queue, I read the article and highlight important things. Thus I summarize the articles interesting for me.
Your top 3 books for a newbie?
I read a lot of non-fiction literature. If we’re talking about software generally, I would recommend these books:
- Bruce Eckel - Thinking in Java
- Brian W. Kernighan, Dennis M. Ritchie - The C Programming Language
- Andrew Hunt, David Thomas - The Pragmatic Programmer: From Journeyman to Master
Your top 3 sites/newsletters/information sources that every developer should read?
I would highly discourage anyone from reading newsletters and groups in social media as they act as white noise mostly and make your newsfeed impossible to read. Read Hacker News (https://news.ycombinator.com/) and there you’ll always find something useful.
Your working area photo