The path of a smoker: how to enter the profession of a programmer, if you are a humanist

    As a child, Anastasia Birillo dreamed of becoming a teacher of Russian language and literature. Today she is a researcher at JetBrains Research, a methodologist and teacher of Digital Banana, and also a developer of her own startup. “Humanitarian is not a sentence,” says Nastya. At our November conference " Content " she told about how to master programming independently, what direction to choose a beginning developer, where to look for projects, what difficulties can occur on the "smoker's way" and how to overcome them.



    Under the cut - interpretation of her report.

    Two ways to programming


    People often think that programming is very difficult. When you cannot write a couple of lines of code, it seems that programmers are some kind of gods who do incredibly complex things. In fact - nothing like that.



    You can come to this profession in two ways. The classic way is fairly standard, through education at a technical university. I passed it, it's cool, cool. You have plenty of time because you are a student. You are young, you have a lot of strength and energy. Around - your community, you can always ask a question to the teacher or classmates. In addition, you get a technical diploma, which gives many prospects, including those related to working abroad.



    But we will talk about a different way, about the so-called “smoker's way”. This is when you have already received some first degree, you work somewhere in PR, for example, and suddenly you have a desire to become a programmer. This path has several drawbacks. First, you have little time, after work you sit down at textbooks instead of going with friends to a bar or a movie. Secondly, most likely, you will not receive education and you will not have a diploma. But with due diligence, you will surprise your friends, and you will become the very “programming god” of whom they thought: “Lord, this is so difficult.” And now you can do it!



    First steps, first difficulties and successes


    Logging in programming, it seems to me, is easier from the web. At first it won't even be entirely programming, but you can start with layout: structure the pages, color them with styles. With due diligence, you will soon be able to get good money for it by collecting freelancing orders. Then you study JavaScript, HTML, CSS ... You think that you already understood everything - and, of course, you are mistaken.


    This is a real quote from the pretty popular VKontakte. The guys think: “I have mastered the front, I am a super-cool web programmer, now I have to go to the backend”. In fact, it is not.



    The frontend is a very cool area. Very often people think that there is nothing interesting there, you just need to sit and impose pages. Like, even if I learn it, it will become wildly boring. They do not understand that there is a lot of logic in the present frontend. You use programming patterns that are used in conventional development, you understand the algorithms and data structures - and this is quite difficult.



    After javascript, html and css you can start exploring frontend frameworks. In 3-4 months you will be able to write your simple application on Angular or React. Previously, seeing a bunch of errors in the console, you were scared: “Oh my God, what is this?! ..” Now you look at it calmly, you start to google and figure out the reason. At the mention of Github, you are not pierced by a cold sweat: you know that this is such a cute cat, quite a handy thing for all programmers. Perhaps you are already laughing at a friend of humanities who suddenly also wanted to learn how to program. He does not succeed, he sits and does not understand what is happening to him. And you see that he just forgot to put the bracket somewhere.

    Programmer - as an artist


    Now you have mastered programming quite well and can go to the so-called Software Engineering. There are those guys who write all sorts of complicated things in Java, C #, C ++, Python and so on. And this is not very difficult: by this moment you already understand that the programmer is like an artist. He just learned to think like a computer and transfers it to code — with certain strict rules. The artist does not have a rigid framework, and in programming they are. But you already understand: in principle, it is not so difficult, I can deal with it.



    What language to start


    For you opens a lot of ways and programming languages. For example, you can start with Python. It's pretty simple language, it was made for academic purposes, for children. If you know English, you can understand Python code, even if you have never programmed it. Servachki are written on Python - this is the logic on everyones. And if you suddenly discover in yourself a talent for mathematics and find a lot of time, then you can go to the most high-end Data Science and earn 300 thousand per second there. But in this area there are difficulties.



    Learning Kotlin or Java is harder than Python. There it is much more than any subtleties and quite difficult syntax. But it will be much easier to get a job, especially at the beginning of the journey: Junior Java Developer has much more vacancies than there are jobs for beginner Python programmers. There are also many possibilities here. You can just stay in Software Engineering as Java Developer, you can go to mobile development or write the same servers, only in Java or Kotlin.



    And if you see a lot of strength in yourself, you feel like the master of the universe, then learn C ++ or Rust. This is the way of the very people who go on probation at Google, write super-complex applications, constantly talk about some kind of memory leaks or that they can shoot themselves in the foot. But if you really want to study, I am sure that you will not give up, that you can - why not?



    Coolness scale




    I mentioned such a thing as Junior Java Developer. In the IT world, there is the so-called “coolness scale” from Junior to Senior. When you are Junior, you are like a child: you see some kind of mistake and you sit in a panic, you do not understand what is happening. You just cry and call this superhero senor to help: he comes and solves your problem, over which you could sit for several hours or days, literally in one minute. This is not magic, the ability to accumulate over time: gaining experience and increasing knowledge base.

    What to practice




    Now you probably think: “now I’ll choose a sphere, I’ll learn Python or go to the web, sign up for a lot of courses, read a ton of books - and become a cool programmer.” Actually, that doesn't work. The most important is practice. I'm not talking about any banal projects that are set on courses, from the category of "derive the first 10 Fibonacci numbers" or "swap two variables in the array". Solve really interesting problems, do what you like.

    Write your version of the application that you use every day, just try it. What for? It's one thing to read the theory: “Aha, encapsulation, some kind of scary word ... well, I understood about what it is for ...” Another thing is to face this in practice: you will immediately see all the gaps that may not be enough later You will get a job.



    During interviews, we often come across junas who talk about books and courses. You ask this: “What did you do?” He: “Well, I decided there a couple of training projectors who were on Stepik”. It's much cooler to talk about your own application: “I made this kind of architecture ... I didn’t work, I redid it, I ran into such and such problems, solved them like this and that way ...” HR sees this, and this is a pretty cool little sign in karma When applying for a job - yes, they look at knowledge in general. But for the junior, it is important that he could learn and that earlier not only read the theory, but also engage in some kind of practice.

    Where to look for projects




    Finding projects is easy. For example, you decided to do layout. We are all on the Internet, you probably have some favorite resource - Habr, Picab, some website with pictures. You take this site and you make it the same. Yes, it will not be used, no one will buy it. But while you will be engaged in this project, you will come across a heap of problems - and you will learn to solve them: you will try to do something, at first it will not work, and then you will fix it.



    If you want to write some kind of logic - for example, for web applications on the front or on the back, then you are simply looking for a similar resource on the Internet and implement it ... In general, you can write the code for anything. Find a banal tutorial on the Internet - how to make a to-do list. This is advised by many - such a to-do list, in which you mark what has already been done. You can implement some checkers that you will play with that friend who also decided to study. You can even unite and write a project together.

    How to keep up and get paid for the hobby




    Usually I just barely sleep. But in general, you can paint every day. If you have a list of things you want to do, you will most likely do them. The main thing - tight deadlines. If you say “I need to file a test application, I have two weeks for it,” it does not work. But if you need to "gash test application by December 4," then you will sit and saw. I trivially started a calendar on my computer, I put my affairs every day and I try to do them. At the same time I find time to go out with friends, dance and English.



    This will only work if you really like the thing. My colleague became a front-end developer, because he was wildly tired of working in PR. He realized that he really liked to impose sites, and he spent all his free time on them. But he liked it. No wonder they say: find what you like, and then you will not work a day. It sounds pathetic, but it's true. I like so much what I do that I can't call it work. It turns out that I get paid for my hobby.

    Entry point: why the web is better than the game


    Games are also a good entry point. But you need to do what you like. For example, I hate games and would not be able to become a programmer through them, even if I really wanted to. If you use any Construct (it's such a simple thing to make 2D games), then in fact you don't program. And when you start to impose, you are still accustomed to at least some discipline: you see these brackets, you teach yourself not to be afraid to write code, and it will be easier for you to adapt to more complex things. Then you look at large pieces of code calmly: “Well, okay, I also wrote this, it's okay”.

    The main thing - do not be afraid


    - You think: “Yes, she says so, as if everything is easy. In fact, these are all dreams. ” No, not easy - but possible. When I entered the university from the humanities school, I was the worst on the course. But you try, and even if you fail, you try further. I thought I would never understand all these OOPs, graphs, data structures, and so on. But now I work as a programmer and teach children programming. It may sound pathetic, but the humanities is not a sentence.



    If you want to go to IT, the main thing - do not be afraid. It is necessary to overcome fear, not to be afraid to write code. Everyone for some reason thinks about programming, that this, damn it, is very, very difficult. Even the children I teach are sometimes afraid to launch a program that they themselves wrote: “Now there will be a mistake, everything will fall, and I will not be able to understand the reason.” The main thing is to overcome this fear. You can start with the web, it's pretty simple. And remember: practice, practice and lots and lots of practice. Without it, nothing will come of it!



    All reports from “ Content ” - and this is 16 hours of useful information, 26 speeches and 3 discussions about how to make cool content about technologies and using technologies - is in the video format here . Discount for users of Habr on promo code habr_online_promo.

    For the support of the conference, thanks to our sponsors:


    Also popular now: