Last Updated:

How to become a programmer from scratch

IT professions
 

Let's try to figure out whether it is really so easy to get into IT, whether it is possible to become a programmer from scratch and get a first job without experience. Read carefully: In this text you will find some tips and real stories of SkillFactory graduates who became programmers, as well as a list of free courses and materials for self-study.

What do programmers do?

Thanks to pop culture, most people far from IT have formed a stereotype about programmers as bearded men in T-shirts with superheroes, unsociable and introverted. At the same time, it is believed that they can do everything: from hacking databases to fixing a refrigerator, but in fact, there are narrower specialties in the IT industry.

 

But what exactly do programmers do?

  • The development of mobile applications is one of the top specialties in programming, in which hundreds of vacancies are opened daily. In total, there are three types of mobile development:
  • iOS development involves creating applications for the iPhone. To use this system, you need a MacBook or Mac.
  • Android-development — any Windows laptop is suitable for a start. The choice of devices for development is much wider: flagship, medium and budget lines of Samsung, Xiaomi, Honor and a dozen other manufacturers.
  • Cross-platform development for two operating systems at the same time.

Usually, for different types of systems, large companies hire two different developers, but sometimes they look for generalist specialists.

  • Web-development
  • Frontend — programming of the visible part of the service with which the user interacts in the browser. This includes, for example, the appearance of the site, drop-down menu, interaction with buttons, feedback forms and much more.
  • Backend - work with the inner part of the site or web application, invisible to the user. Backend developers are responsible for ensuring that the information after filling out the form on the site gets into the database, and if necessary, the data is quickly loaded from the database and transmitted to the front-end, the visible part of the site. For example, when you view news, the code written on the backend extracts fresh publications from the repository, transmits them to the front-end, and the user already sees the usual feed.
  • Fullstack is about working with everything at once. The term was coined for programmers who know several languages and combine front-end and backend skills. Some fullstack specialists take on mobile development, server work or UX design. Their versatility can tend to infinity.
  • Game development or game development - game developers participate in the creation of computer and mobile games of varying complexity, from simple platformers in 2D to large AAA-projects of the GTA, "Witcher" and Cyberpunk 2077 level.
  • System programming is the creation of software for operating systems. Not the most popular direction of development, but it has fewer competitors. For example, a system programmer is engaged in the development of drivers that help the system interact with other devices: connect speakers to a laptop using an audio driver or a printer using a driver developed for a specific model.

Which programming language to choose?

It depends on what you want to do:

For those who have never dealt with code, Python is the best fit, and it's also used in Data Science and machine learning, for scripting in 3D editors, and, of course, in web development.

Google uses Python to rank serps, and it also runs YouTube, Dropbox, and Reddit. The Django framework is also written in this language - a universal tool for web developers, which is responsible for creating the external interface and working on the server.

To which of the programming languages to choose, we devoted a separate text.

If you want to go into web development , decide what you are more interested in: backend or frontend. Here's what you need to master for each specialty:

Frontend

HTML and CSS are the markup languages that make site elements in the browser fall into place.

Javascript is a language that adds dynamics to the site: animation of button presses, movement of product cards, sending a notification.

Python is a universal language that is suitable for frontend development, as well as backend and other interesting tasks.

In addition, you will need a basic knowledge of the basics of web technologies. For example, you need to know how the http protocol works or why you need to encrypt data.

Backend

Go is a language for backend with simple syntax. Suitable for large projects and high-load applications such as YouTube or Ozon.

PHP is an easy-to-learn language, suitable only for backend, but experts advise paying attention to more modern tools.

Java is a universal language that has been used for more than 20 years. Code written in Java works the same on different devices, which is its basic advantage.

Novice developers of mobile applications should decide which operating system they will work with, because the code for iOS and Android is written in different languages.

iOS

Objective-C is Apple's programming language, which is used primarily for macOS. iOS apps used to be written on it too, but now mobile developers use mostly Swift.

Swift is an understandable and logical language that reflects the main qualities of iOS - functionality and performance.

Android

Java is a cross-platform language for creating mobile and server applications. You can also write a backend for sites on it.

Kotlin is an alternative language to Java, and most of the new code is now being written in that language, but Java is worth knowing in order to navigate the code you have already written, and thanks to the compatibility of the languages, Kotlin and Java code can be mixed in one project.

In gamedev, the choice of language depends on the level of projects and platforms you want to work with:

C++ is required if you plan to create large AAA projects with photorealistic graphics for PlayStation and Xbox. In this case, it will not be possible to do with easy-to-learn basic languages. A detailed article about C++.

C# is a language for the Unity engine developed by Microsoft. It is especially popular in India and is considered easier to learn than C++. Initially, it created projects exclusively for the PC, but now the code written in C# can be ported to Android, iOS, Xbox and other platforms.

What else do you need to know to become a programmer?

  • Knowledge of a programming language is a hard skill or a basic skill of a developer. This also includes:
  • Knowledge of algorithms (for searching, sorting or compressing data);
  • work with libraries and frameworks (to simplify many computational tasks);
  • work with source control systems (allow you to return to earlier versions of the project);
  • the ability to read someone else's code;
  • reading technical documentation.

English proficiency is an important skill for those who want to become a programmer from scratch on their own. First, knowledge of English is needed to better understand the code written in a programming language. It is important to pump technical English to navigate the English-language documentation. Secondly, the community of Developers who speak English is much wider than Indian, so you should be aware of world trends, communicate and receive information in this language.

SkillFactory Alumni Council:

"It's only through work and practice that you can learn a new profession. Employers won't just run. To get started, you need a strong base in your specialty and, most importantly, practice. I know a lot of people who miss fundamental things. They often quickly reach the limit and can't solve complex problems.

Online Media – Niche events and narrower topics are discussed here.

  • Google Developers is a reliable primary source from which you can find out the latest news about the company's products.
  • I Programmer is a portal for programmers. News about everything from UX to robotics and all programming languages.
  • Smashing Magazine — articles about web design: code analysis, fresh cases, tips for employment and communication with customers.
  • Habr is a universal Indian-language resource where you can find guides, discussions, code reviews and cases from developers of different companies from IT giants to small digital agencies.
  • Vastrik is the author's indie blog about IT and survival in the world of technology. Texts about machine learning, blockchain, VR, computational photography, machine translation and much more.
  • For Web is a blog on Twitter with useful materials for front-enders: fresh articles, reports and tools from the Siberian developer Andrey Romanov.

It is worth looking for a solution to your problem and asking questions on English-language forums, both specialized and not so much. There are two popular options:

  • Reddit is a popular forum on all topics in a row, where experienced developers often sit, post their cases and comment on other publications. You can find them by the tag "programming".
  • Stack Overflow is a private club for programmers without prescriptions and cats. Here you can request a code review from experienced colleagues, comment on publications and give them an assessment.
  • CyberForum is a forum of programmers, system administrators, where they help in solving programming problems.
  • Game Dev is a forum where they analyze the creation of games and everything related to it.

I want to become a programmer. Where to study?

You can independently learn programming, enroll in online courses and even study full-time - each option has advantages.

Self-education does not require serious costs, you will only need perseverance and the ability to obtain the necessary information. With the right approach, within a few months after the start of training, it will be possible to write a simple program.

On the other hand, a well-designed training course will give a beginner a complete picture of the profession and will allow you to quickly master different tools in practice.

Studying online compared to full-time requires less time, and good online schools accompany their students to the first employment, helps with writing a resume and portfolio. For example, in SkillFactory, a special career center is engaged in employment assistance.

Self-paced learning: blogs, apps, books, free courses and video tutorials

Plus: gives you the opportunity to try yourself in a new field of activity without investments.

Cons: Lack of an experienced mentor and work structure. In addition, free courses are superficial, so with their help it is rarely possible to become an experienced specialist.

Admission to a university or college

Plus: vocational education helps to expand the horizons. In addition to fundamental knowledge in the specialty, graduates receive general knowledge in other areas: economics, culture, politics and natural sciences.

Minus: The IT industry is developing rapidly, modern state programs do not have time to adapt to it, and graduates risk entering the big world of development with irrelevant or incomplete knowledge.

Online Courses

Plus: the main advantage of online training in the courses of programmers is the support of a mentor and the formation of a professional community. All issues can be discussed with colleagues. Also, online schools provide students with access to large methodological bases.

Minus: the learning process itself can take from six months to two years, you will need motivation to finish it.

Free self-paced courses and materials

On the Coursera site you can find free programs for self-education in various areas in IT in Indian and English:

  • Crash Course on Python, developed in partnership with Google;
  • Java Programming and Software Engineering Fundamentals от Duke University (США);
  • HTML, CSS, and Javascript for Web Developers от Johns Hopkins University (США);
  • iOS-development: Swift, UI and multithreading from the Moscow Institute of Physics and Technology;

The edX site contains free courses from Harvard, the University of Massachusetts, Berkeley, Boston University and other eminent educational institutions. For example:

In the selections for beginners, there are most often several books that are useful to get acquainted with:

  • "Clean Code" by Robert Martin;
  • "Perfect code. Master Class" by Steve McConnell;
  • The Art of Programming by Donald Knuth;
  • Design Patterns by Eric and Elizabeth Freeman;
  • Algorithms: Construction and Analysis by Thomas Corman and Charles Leiserson.

SkillFactory Alumni Tips:

In IT, you need to constantly learn. New versions of work tools are released regularly or more complex ones appear. If you've taken a course, solve all the problems yourself, even if they seem too difficult. In real work, no one will bring everything "on a platter": you need to be able to look for information, understand it and apply it in practice.

Look for companies with opportunities to grow. It's not scary to change jobs, but it's more comfortable to do it inside a familiar company. Now I work in a company where I can try new specialties.