How to become a programmer? 12 interviews with russian experts.
How to become a web-developer? How to learn programming? How a programmer can find a job? Does he need a higher education for this? How long should one study to start making money on the development?
I think, almost everyone who considers a career of a programmer wonders this. Relying on my own experience, I did my best to answer the major part of these questions and wrote Self-education for web developers. But my opinion towards self-study and the ways of studying is just the opinion of one particular person (though, certainly, I am sure about its rightness :) ).
That's why the idea came to my head: to take 12 programmers whose professionalism I have no reason to doubt and to ask them how they started out, how they learned everything they know now and how they got a well-paid job. Here below there are 12 stories about the formation of the professionals, people whose work experience exceeds the amount of fingers on one hand (with some reservations). I hope you will make good conclusions from these stories (spoiler: self-study rocks) and find a couple of advices convenient for you.
Programmers
- Maksim Kremnev, Aviasales
- Pavel Khrulev, Ruby on Rails developer, freelancer on odesk, elance.
- Varvara, Ruby and node.js developer, Social Quantum
- Daniil, a programmer, Social Quantum
- Mikhail, team lead, Social Quantum
- Roman Kolesnev, Fullstack Rails developer; Social Quantum
- Sergey Rezvanov, ruby-developer, IkitLab
- Konstantin, technical team lead in one of the start-ups of Saint-Petersburg
- Korneev Evgeniy, team lead, SmartSpace
- Anton Cherepanov, a web-developer in Evrone, a mentor in mdkev.me
- Kirill Shirinkin, a DevOps and Cloud Consultant, a mentor in mkdev.me
- Dmitriy Vasilets, a consultant
Maksim Kremnev, Software Developer, Aviasales
How long have you been working in web-dev?
For 5-6 years.
Why did you choose programming and web-development?
It's an opportunity to make money doing what you like.
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
18-19-20 years old. At that time I was working as a system administrator and at the same time I was taking a great interest in some of the curious things like gentoo, bash, django (the first things that occurred to me). One day I ran against a vacancy of a ruby-programmer from @ipronix on some local job board and decided to try, I thought maybe they needed python-programmers too. As it turned out, they didn't, but ruby-programmers, even juniors (I didn't know this word back then) were needed. Well.. they offered me money, besides, it was more than I was getting as a system administrator, and I decided to combine offline and online job.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
In 1 month. It's all @ipronix
What should a beginner start with?
With How To or Get started
What did you lack at the beginning of your journey?
Time
Can you advise some books, websites?
google.com
How's your self-study going now, what new directions do you explore?
golang, python, chef, different db
Pavel Khrulev, Ruby on Rails developer, freelancer on odesk, elance.
How long have you been working in web-dev?
For 6 years.
Why did you choose programming and web-development?
That's a difficult question. I chose programming because I had a passion for it, this was interesting for me. Web-development - well, It just worked out this way. I had started my career in times when web-development was beginning to gain popularity and the demand for web-developers became huge. The demand bred supply represented by me :)
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
When I started going for a programming I had written a little game. It became necessary to make a website for it. That's how I made my first website in html. Then I was asked to make another website for money by other people, and afterwards I found a job as a web-developer. It was in the end of 2007 - beginning of 2008.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
I received my first money something about 4 months after I had made the first website in html for my own purposes. I got the order easily - my talents were spread, and the customer found me first.
What should a beginner start with?
Passion and thirst for knowledge. Explore something, develop something for yourself, for pleasure, using gained knowledge.
What did you lack at the beginning of your journey?
Information made simple. There weren't many good websites and books on Russian, and I hadn't mastered english so well. I mean, I lacked the knowledge of english, too.
Can you advise some books, websites?
It depends on the subject you are interested in. There are a lot of books on each subject. I can only tell you what one needs for the general development as a programmer.
- For learning and improving english - the books "English for Russians" and the website lingualeo.com
- One can learn about new technologies and trends from habrahabr.ru
- Problem solving - stackoverflow.com
- One can gain practical skills of coding using the new technologies in an entertaining form on codeschool.com
How's your self-study going now, what new directions do you explore?
Now I am learning Cordova and Rhodes framework, i.e. mobile development combined with web-technologies.
I find out about all the news and trends on habrahabr. If something gets me interested, I start digging further, reading books on that subject, articles on websites.
I learn about some methods, engineering practices from developers' blogs which I am subscribed to. Usually these developers are not the worst people in popular open-source projects.
I am constantly working on improving my english grammar, expanding my vocabulary, getting rid of my accent. As I wrote, the books "English for Russians", the website lingualeo.com and the experience of communicating with customers help me with It.
Varvara, Ruby and node.js developer, Social Quantum
How long have you been working in web-dev?
I am not familiar this much with web, but in general - for about 6 years.
Why did you choose programming and web-development?
I was studying at the profession-oriented university, it had been working out and it was interesting for me.
What were the ways you learned this?
The university, self-study.
Tell us a little bit more how you started out: how, when, what?
Right after I had graduated from the university I got a job in the office that had won the tender for the project on Saint-Petersburg's informatization - the state-services booth. I had been working there for almost half a year, I had been writing interfaces and search of addresses in DB for these booths etc.
How long after the start of the education did you earn your first money on web-development? How did I get my first order?
I have never been doing freelance, have always been working in an office.
What should a beginner start with?
Choosing a good company and a team, that in half a year will teach a beginner not to step on the rake typical for beginners), instill a good codestyle and some other useful stuff in the spirit of testing and code profiling.
What did you lack at the beginning of your journey?
Exactly such good team. I sat buried in books and stepped on the common rake. Though this is good in terms of self-discipline.
Can you advise some books, websites?
If I need to find out something, I google. But first of all, of course, read docs.
How's your self-study going now, what new directions do you explore?
ruby & haxe.
Daniil, a programmer, Social Quantum
How long have you been working in web-dev?
For 3 years
Why did you choose programming and web-development?
As for programming - it just came out like this, I have been in front of a computer since 7, starting with spectrum. It's cool to be a magician and an architect at the same time :)
I didn't choose web-development - I have always wanted to devote myself to games, and that's what I am doing now. But before this I had been working with web, don't remember for how long, that's why I wrote for 3 years :)
What were the ways you learned this?
The university, self-study.
Tell us a little bit more how you started out: how, when, what?
7 years old, ZX Spectrum on my birthday, BASIC.
As a teenager - FIDONET, C, a little bit of Pascal.
Adolescence - Linux, Python.
Youth - web-development, Python, JS, Pylons, Zope, a little bit of Django.
The recent years - Python, JavaScript, AS3, C#, Haxe, node.js, Flash, Unity3D.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
When I was about 20, I had just put my CV online and started working in an office as a Python web-developer.
What should a beginner start with?
Understanding the principle - "write less code, but not less than you need"
What did you lack at the beginning of your journey?
Communication with geeks.
Can you advise some books, websites?
Oh, I don't know. In due time I had read quite a lot of interesting books that were one way or another connected with programming, but I won't presume to advise generally.
How's your self-study going now, what new directions do you explore?
Compilers, OCaml.
Mikhail, team lead, Social Quantum
How long have you been working in web-dev?
Web in particular - for 5 years.
Why did you choose programming and web-development?
Programming - because I have been interested in it since childhood.
Web - low barriers to entry: on knowledge (lots of manuals), on practice (you only need a web browser and a notepad, well, and paint, you don't need to pull any heavyweight ide by dialup, etc) and on job (free-lance.ru, suddenly there are people who are ready to pay for the things I have learned just out of interest).
What were the ways you learned this?
The university, self-study.
Tell us a little bit more how you started out: how, when, what?
Secondary school, holidays, i486, my mother brought a disk with video tutorials on visual basic, where it was explained how to make real programs with windows etc. There was no compiler on the disk. I had been salivating for a week. Then I got a compiler and started exploring everything.
Later I borrowed somewhere a book about the basics of html, started experimenting and making a homepage with a website builder - it was very popular back then.
Also - logo study group, pascal courses, php courses, pascal and c on IT lessons in high school, reading xakep.ru, interest in viruses and assembler, flash.
To be honest, I don't remember when exactly it did start.
Once my father told me such story about my preschool childhood: he removed windows from my computer and left me with pure DOS. So he comes back from work at evening and sees me playing computer games. He asks me "how is it possible" and gets an answer that I have typed overseen commands "cd nc", "nc", and then "the blue thing opened", that is norton commander which I was already familiar with (:
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
I had found my first order on freelance sometime when I was in high school. I don't remember exactly what it was - perhaps a flash banner, perhaps a layout rework. Back then, of course, I wasn't so self-confident, and that's why most of the time I was just hanging around on some competitions and I worked mainly not for money but for the portfolio. On Lebedev's advice which I had read in his mandership, I did the works for imaginary clients in order to fill my portfolio and show that I can.
What should a beginner start with?
Easy way:
- learn how to use google
- google a tutorial like "introduction to html"
Hard way:
- school physics course
- electrotechnics
- digital circuitry
- the basics of information technology
- micro controllers programming
- assembler
- structural programming, C, arrays, pointers, dynamic data structures, networking, etc.
- object-oriented programming, C++
- operating systems
- whatever you like
What did you lack at the beginning of your journey?
The dialup speed
Can you advise some books, websites?
How's your self-study going now, what new directions do you explore?
The funny thing is I practically do not read complete books on technologies. Because:
- outdated knowledge
- one-sided view
- doubtful author's competence
- a lot of letters
Instead of it, when I encounter some kind of technology, first of all, I search for the official website, some kind of getting started guide, docs on API, examples.
If it goes slow, then I ask google the specific questions (most of the time it leads me to stackoverflow), and if it goes very slow - then I turn to the thematic community in order to ask a question (but it is an extremity, since waiting for the answer is very annoying).
Now in particular I am experimenting with common node (node.js wrapper, that implements CommonJS standarts and uses fibers) and mongodb. And I need to learn Rails for my job.
Roman Kolesnev, Fullstack Rails developer; Social Quantum
How long have you been working in web-dev?
For 3 years
Why did you choose programming and web-development?
I had written a program, debugged it, made some tests, all tests passed and then you stand up at full height, perk your finger at it saying "now I am your God!"
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
I had tried programming a little when I was in primary school, that's why the information about how I had started out wouldn't help the others. I hadn't quite realized yet what I was getting into, a fool. But, in suma, I can say the following: self-study here is everything, but on first stages a good book or a video tutorial, and an elder team-mate who will direct your thinking the proper way, are very helpful.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
Mastering web was irregular and impermanent, but half a year after I had concentrated on rails I started to earn 500$ at flexible hours and combine work with study on the 3rd course of MIPT. Before the concentration on rails there had been quite a big experience in programming, a basic understanding of JS, CSS, HTML and a little bit of PHP (in total, I had written in PHP something about 40-50 man hours, no more)
What should a beginner start with?
What did you lack at the beginning of your journey?
A mentor
Can you advise some books, websites?
codeschool.com
stackoverflow.com
How's your self-study going now, what new directions do you explore?
Scala, Play framework, Unity 3D, in the nearest future Swift
Sergey Rezvanov, ruby-developer, IkitLab
How long have you been working in web-dev?
For 4 years.
Why did you choose programming and web-development?
I became interested in computer technologies when I was in school, I felt something rather inexplicable and attracting in it, some kind of man-machine symbiosis. These times a computer without a man is just a piece of iron, but a man, too, already can't live without a computer. But together they make a tandem where everyone is in its proper place. For me development and programming in general are the same as, for example, art, i. e. a painter with an easel, a musician with his instrument - these are the equal figures of a creative personality, the same as developer with his skills and knowledge.
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
For me the path of programming had started when I found myself a job as an oracle-developer in a company CompassPlus in my town (this job wasn't connected to web), where I had spent 5 years of my life and career.
In the last year of work I became interested in web-development and the follow-up technologies. All this played a low-down trick - I couldn't bear working in CompassPlus where the stack of technologies was from 90-s. That's when I had decided to find a distributed team with which I could foster my skills as a web-developer. That's how I got a job in Secoint, this was a company in Tver', that was making online-shops on Spee. For sometime I had been working at 2 jobs - in CompassPlus, in office, at day, and in Secoint, remotely, at evenings.
Several months later it became very difficult to combine 2 jobs (I already had a family back then), and I got registered as an IE and quit CompassPlus. I became fully immersed in web-development and studying technologies while still working in Secoint.
Since then I have changed several companies, but I am still loyal to web-development and I work only remotely.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
After two months of studying. I turned to the ruby web-developers company and offered my services as a dislocated worker. They gave me thumb up.
What should a beginner start with?
Think twice if you need all this. If you do, then write code, read smb. else's code and write it again.
What did you lack at the beginning of your journey?
Communication with the same people as I was... Unfortunately, I still know no ruby/rails developers from my town. All the professionals I know are virtual, I haven't met them in life.
Can you advise some books, websites?
My favorite bookstore - PragProg. There I often buy books connected with web-development (mostly e-books). Nothing specific, I am interested in everything.
I often find the answers to my questions on StackOverflow and similar resources. But most often I still look at the sources of some big projects, because sometimes one can find there more useful information than in books and articles.
How's your self-study going now, what new directions do you explore?
For the last couple of months I have been working on one very big project on mobile analytics - https://inside.ly And I can say just one thing: data rules the world, and the future is in those who can collect that data and analyze it. That's why data science is everything to us.
Konstantin, technical team lead in one of the start-ups of Saint-Petersburg
How long have you been working in web-dev?
For 5-7 years.
Why did you choose programming and web-development?
I have always been interested in computers and internet.
What were the ways you learned this?
University, self-study, work with a mentor
Tell us a little bit more how you started out: how, when, what?
I started out with self-study and Delphi, Pascal, C++ programming. Then I became interested in Unix systems and Perl programming. Then, gradually, I turned to web-development and settled upon ruby (well, and JavaScript too, of course). I tried Python (Django), but my heart was not in it.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
I got my first full-fledged order on freelance. I made a little website in Perl. It's hard to say how much time I spent on studying at that time. I suppose that was the "start" for me.
What should a beginner start with?
The basics and algorithms. Books, screencasts, more practice.
What did you lack at the beginning of your journey?
A competent mentor who would tell me how and what I should do. And shouldn't do, too.
Can you advise some books, websites?
The more you read, the better. I personally liked the books "Design patterns in Ruby" (for ruby-developers) and "The art of optimization" (simple, but popular algorithms made easy) very much.
How's your self-study going now, what new directions do you explore?
A little bit here and there. I am planning to study Clojure more seriously and to experiment with Swift a little :)
Korneev Evgeniy, team lead, SmartSpace
How long have you been working in web-dev?
For 5 years
Why did you choose programming and web-development?
Because I like to create something that the others will use later.
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
I became interested in programming back when I was 12, moreover, I didn't even have a computer. When I was about 14, I had already been actively making simple programs for Windows in C++ and Delphi and when I was 16 - I had been making computer games.
Then there was a year of stagnation at the university where I had been entertaining myself only with Warcraft and making course papers for older students. But when I understood that I hadn't been getting any useful information here, I had quit the university and found a job. When I was 17-18, they didn't want to hire me as a programmer, that's why I started selling disks at a computer games store. Half a year after I was already configuring and customizing 1C in the mother company. One more year after, when my brain started to dry up from 1C, I had turned to freelance and started making websites. At first - online shops on php-engines and then, after a while, I got interested in cool frameworks and chose ruby and rails.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
If to speak about early stages, when I had been making "turnkey" websites on stuff like Wordpess, then I don't remember. Probably one of my acquaintances asked me to make something and paid, as it usually happens.
If to speak about Rails, then it turned out mostly the same. I offered to make a good website for the dance studio I was working at, for a small consideration.
I got my first full-time job also thanks to friends - one of the developers I knew shared with me the client of one of his projects.
What should a beginner start with?
First of all, learning english :)
Secondly, some basic things like HTML, CSS. You can try another tack and at first just learn programming - learn pascal, basic or something else. A good programmer is distinguished by his algorithmic thinking. This is a long, but proper way.
What did you lack at the beginning of your journey?
I guess a mentor.
Can you advise some books, websites?
The coolest thing about web-development I saw: https://www.railstutorial.org/book. From general-purpose things - "Code complete" by McConnell
How's your self-study going now, what new directions do you explore?
Right now I am exploring different things: from ios-development to game engines.
If to speak about web: I am constantly looking for and, if needed, studying different trends and technologies, but nothing special.
In general, I try not to get stuck on web, but also to explore different fields.
Anton Cherepanov, web-developer in Evrone, mkdev.me mentor.
How long have you been working in web-dev?
For 3 years
Why did you choose programming and web-development?
Historically, I had been playing wow, and then I desired to have my own web-server and of course, a website.
What were the ways you learned this?
Self-study, work with a mentor
Tell us a little bit more how you started out: how, when, what?
When I was young I enjoyed playing WoW, but then I got bored and I thought: what if I made my own server?
And everything began to take off, at first I was downloading websites and installing them, then I started to copy html from one website to another, then css.
Then I got acquainted with mangos and trinity - they are wow open source engines written in C++. It was very difficult to investigate them without understanding of what and how one should do, but I had definitely learned how to compile and patch :) Then I found out that one can earn good money on it and continued studying, but only web-development, because this was more pleasant for me than taking trouble with C++.
Then I entered a college in "Software engineering for computers and computer-based systems", and it gave a good basis in algorithms and databases. Then a year with php and then the beautiful world of ruby.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
Not very soon, for a long time I didn't even know that one can earn money on it, so maybe in about 2 years)
What should a beginner start with?
Searching for a mentor and reading docs.
What did you lack at the beginning of your journey?
I had everything I needed.
Can you advise some books, websites?
- rusrails.ru
- https://greenruby.org/
- https://rubydaily.org/
- https://www.codeschool.com/
- https://thoughtbot.com/
- https://twitter.com/evrone_ru
- https://www.rubeque.com/
- https://railscasts.com/
- https://www.rubyflow.com/
- https://www.rwpod.com/
- https://rubynoname.ru/
How's your self-study going now, what new directions do you explore?
We are actively gamificating the process of our work using Track2Win.
Employees track some of their actions: watched a conference, read a book, spoke at a meet-up, contributed etc. And, to keep up, you are keeping pace with everyone and trying to distinguish yourself.
Technologies: AngularJS, Go
Kirill Shirinkin, DevOps and Cloud consultant
How long have you been working?
For 7 years
Why did you choose programming and web-development?
An unscratchable itch to make web applications. Was inspired by 37signals and others.
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
At some point between the ages of 13 and 14 my father offered me to make websites. I tried Dreamweaver, looked at CSS and gave up on it for some time. And then, at the age of 15, I had decided, all of a sudden, that, after all, I want to make websites. I started learning HTML, CSS, a little bit of JS. After some time the wording changed to "I want to make cool websites". I heard about Rails, new and popular back then, on habrahabr. I decided not to listen the programmers I knew who recommended me to learn PHP and Java. I started to learn Rails and wrote a couple of applications in it just for myself. One of them I still use every day. In about a year after I had started learning Rails fate brought me together with Dmitriy Vasilets, @pronix who became my mentor and employer for the next year and a half.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
I don't remember the exact time, I can just say that I was 16, so no more than a year of trouble with html and css. I needed to make a layout for https://digitalshop.ru from scratch. The website was made up in table layout back then, and one fellow who worked as a programmer there offered me to make it up again in blocks. Then I experienced the suffer of making up for IE6, the happiness modern developers are deprived of :-)
What should a beginner start with?
Self-education for web developers. This is a free tutorial for those who don't know where to start and what direction to follow written by me. In short, this is a 60-page answer to the question "What should a beginner start with" ;-)
The most important: find your motivation and don't lose it. And concentrate of your goal. This is a universal advice that is proper for any kind of situation, it is easier given than followed :-)
What did you lack at the beginning of your journey?
I will never get tired of repeating that in order to achieve success in web-development field one needs two things: the desire to study constantly and a cool mentor. I was unbelievably lucky: throughout all of my career I had brilliant mentors whom I will always be grateful to. One of them, Evgeniy Yanusov, helped me to gain the first knowledge in web-development (html, css etc.). Another one, Dmitriy Vasilets, not only taught me to work but also played a crucial part in my move to Berlin :-)
Can you advise some books, websites?
This will look like a ruthless self-aggrandizement, but in my free book) I have collected all the links to all the necessary books and websites which I can recommend confidently.
How's your self-study going now, what new directions do you explore?
DevOps and Cloud. Not really new, but I always try to deepend my knowledge there. Also I am trying hard to write more correctly. For example, for some reason it doesn't come easy for me to write "advise" instead of "advice" sometimes.
Dmitriy Vasilets, a consultant
How long have you been working in web-dev?
For 9 years
Why did you choose programming and web-development?
I have never been concentrated on web. I just complete tasks maximally simple and fast.
What were the ways you learned this?
Self-study
Tell us a little bit more how you started out: how, when, what?
I was studying at the university in 2007.
There was a gang of frauds that was providing others with internet and making some money on it in dormitory.
The project was very successful - more than 100 clients and a steady income.
I wrote an operating panel in order not to communicate with clients, right away in Rails. And passed everything to a steady person. He organized the work even better and the income became predictable.
As a result, the project was working without my participation, and I had a secure source of money every month.
It's a pity that all this happiness had lasted only for a year.
Before that I had been writing system scripts and equipment tests on Ruby.
How long after the start of the education did you earn your first money on web-development? How did you get your first order?
Right away. It's shame to work for free. I took a task on a freelance board and said honestly that I will be doing it long, but cheap. And then my appetite started to grow in proportion to the task load.
What should a beginner start with?
With doing something. Close tickets. Parse files. Clocks on js. If one asks questions, but haven't done anything - it's time to give up.
What did you lack at the beginning of your journey?
I had everything I needed. Life is always amazing.
Can you advise some books, websites?
Bible, Litvak, Bulgakov, The Golden Calf.
How's your self-study going now, what new directions do you explore?
Data science, management, finance, math, chemistry.
That's all for now. An attentive reader will notice one and the same pattern in all of the interviews:
- Everyone started out with passion for something, whether it were games or web applications. Thus, most often, programming is not a self-objective but a skill one has to acquire in order to accomplish its goal. But it doesn't mean you can't love programming. :)
- Each and everyone was active at self-study, and for the majority it was the only way of studying.
- Having a mentor is a big advantage and had helped a lot of people (if not the majority of them) to achieve success.
Professionals who have read this article - share your stories with us at the comments below, inspire those who have just taken the path you had traveled and help them not to lose their way.
Beginners who had already taken this path - tell us what techniques, sources, people help you and make your education more productive.