What you need to study to become a programmer. Know algorithms and data structures

In the article we will tell you what steps to take, where to start and how to structure your training to become an IT specialist if you are far from IT.

Decide on a specialization

First of all, you need to decide why you are going into IT. Do you like making websites, creating programs for operating systems, thinking through design or testing? This decision will become the starting point in the learning process.

Depending on your choice, you will be able to determine a training program for yourself, prepare a plan and select the first sources: books, websites or online courses.

If your knowledge of the language is not enough for fluent reading, you should start with it. English will be needed not only for communications, you will have to read a lot and search the Internet in English. It could be like technical documentation or an answer on StackOverflow, or just an interesting thematic article on Medium.

This is the second most important skill, after knowledge foreign language, which is vital in learning. It is important to learn how to formulate requests correctly and filter out unnecessary information still on the search page.

Master the basic concepts

First, find out how a bit differs from a byte, study basic terms and computer science concepts, learn about conditions, loops and interrupts. How a processor works, why a web server is needed, and what kind of ascii is - you need to know all this to start delving into the area that interests you.

Data structures and algorithms are fundamental concepts for development and IT. You won't be taught these things properly in applied programming courses, so learn these things on your own.

First, understand the terms stack, tree, queue, hash. To understand algorithms, it is not necessary to delve into graph theory, but at least understanding should be your goal.

It will be useful to become familiar with the concepts of object-oriented programming no matter what language you choose or how you plan to use it. OOP is one of the most popular development styles, so you not only need to know the definitions of the main concepts (inheritance, encapsulation, polymorphism), but also understand how they work and be able to implement them in the program code.

If you have confidently mastered the syntax of the programming language you are interested in, it is worth learning how it works with different types databases, and at the same time learn about the types of databases and their differences.

Even if your language doesn't typically interact with the database directly (JavaScript, for example), you need to know what's going on in this area of ​​development: you'll have a better understanding of how the program as a whole works.

So how to become an IT specialist?

You can always retrain and change your profession at any age. It is only important to remember that this is a very long and complex process. And the later you take up this, the more difficult it will be for you.

To become an IT specialist, you need to set yourself up for a long process of learning the basics and continuous self-training throughout your career. Be patient, because many months and even years may pass between the start of training.

Almost every day, while at our computer or laptop, we use various developments in the IT field. When we run the program, we see it beautiful interface and a well-thought-out logical part, on the Internet we see many interesting sites with various additions to them, or we use utilities for modern gadgets, which allow us to expand the capabilities of our device. And for many since childhood or more mature age there is an interest in knowing how it all works from the inside. And for many, this becomes a serious motivation for choosing a future profession.

Indeed, today the demand for the services of programmers of various spectrums is so extensive that it is far ahead of other previously popular professions. In this article we will try to talk quite popularly about what kind of programmers there are, what skills they must have in order to be in demand on the market, and how to learn programming in their chosen field.

Types of programming

So, asking yourself the question: “How to become a programmer,” you need to decide for yourself the following: what, exactly, will we develop? After all, there are no universal programmers; each of them works in his own industry and does his own thing.

For example…

  1. Web programmers. People who create various websites and sales pages. Thanks to this category of developers, many different useful resources with various useful or entertaining information. Online stores, message boards, social networks are the work of this category of programmers.
  2. Developers of operating systems and applications without reference to any specific platform. These people do something without which not a single computer or gadget in the world will work. Windows, Linux, Android and other systems are born thanks to this category of citizens.
  3. Application development and programming distributed systems and DBMS. An example of this type of programming is all the information displayed on the departure and arrival of trains at the station, as well as data on check-in for a flight at the airport and the availability of free seats.
  4. Framework programming, dll libraries, platforms and cores. Simply put, creating aids for further development various programs, software, games, etc.
  5. Another direction for developing auxiliary software is system programming. Programmers in this industry create software tied to a particular operating system. Drivers for computer hardware, games, various compilers, programming system kernels and much more and no less interesting.
  6. If all of the above is not of interest to you, you can go headlong into the field of scientific programming and develop artificial intelligence, systems virtual reality in a deeper understanding than computer games; The development of interfaces and automation systems for biologists, astronauts, and scientists will fill your life with new colors.

Each of these areas is interesting and in demand in its own way, which one to choose is up to you. And the choice of studying each of these areas also offers various options. Either you enroll in a university, or enroll in programming courses, or study on your own, getting information from the Internet.

How to become a programmer. Where to start?

It's never too late to start. As mentioned above, today there are quite a lot of ways to learn programming; it is only important to choose a direction and start studying it. But speaking of self-learning, this type Not suitable for every field of activity. Let’s say self-study will help you become a website developer or gain superficial knowledge in other areas. One of the most profitable solutions- still enroll at least in courses, thanks to which you will have more complete concept about the logic of work various systems and applications, learn the programming language you need (for example, C++, Java, Perl, Core, etc.) and be able to apply it in practice, and also gain knowledge in discrete mathematics.

Learn various tables, the concepts of querying them, and the algorithm for executing them. Good examples Excel, MySQL, Paradox can serve.

Web programming

What is web programming? By and large, this is all we see in our browsers. All sites, all applications for downloading something, payment modules for online stores, plugins that complement the functionality of the site, cloud storage, order forms, personnel management systems working on the client side and on the server side - all this is only a small part of the entire web -industry.

Speaking scientific language, web programming is all applications and program components that are built on top of the structure global network Internet, and access to them is provided only using web browsers. Moreover, the browser’s connection to the Internet is not prerequisite, but only in the case where the application must be opened locally (roughly speaking, from the computer on which it is located or developed). For example, HTML page markup or a local server (Denver) allows you to work with applications without a network connection.

All web documents work on the basis of simple technologies, such as:

  • HTTP - hypertext transfer protocol;
  • HTML - hypertext markup language;
  • PHP is one of the main programming languages;
  • SMTP - mail server for exchange text messages between other servers and clients, including Microsoft office programs;
  • various IP protocols;
  • FTP is a client for exchanging data between local server and hosting.

In order to have an initial understanding of web programming, you can open the HTML markup of the site by right-clicking on the page. And you will see its hypertext markup with styles connected to it. Try to examine elements of the site by looking at its source code and appearance site. For more in-depth study explore the sources of several sites on various topics, that is, any social network, cloud storage and mail site. In some ways they will be similar at first glance, but upon further study you will see that each of the site components performs its specific task and in general the logic of work differs from the previous site.

Before becoming a web programmer, follow these steps.

  • Learn at least one program for working with images and graphics (Photoshop will be enough). Because in the process of designing the project, you will have to process and optimize the weight of the pictures for a more advantageous presentation of them, plus creating some of your own additional images, logos and infographics.

  • Study the website building algorithm. With what tools and auxiliary tools they are created, what is a sitemap and why is it needed, what is navigation and what is a web diagram.
  • Familiarize yourself with the Internet infrastructure in detail. Gain basic knowledge and initial skills in using web protocols (HTTP, SSL, POP3, FTP) of the platform on which you will work the bulk of your activities, familiarize yourself with mail servers electronic messages.
  • Understand how the major browsers work (IE, Opera, Chrome, Mozilla).

  • First, learn the hypertext language HTML markup And cascading table CSS styles(note the WYSIWYG package).
  • It is necessary to have an understanding of XSL and related technologies.
  • Once you have acquired the skills to work with hypertext, begin to put it into practice little by little, gradually complicating the task.
  • You will also need scripting languages ​​that work on both the client and server sides (Java Script, JQuery). Don’t pay attention to VBScript, which everyone likes to advise beginners because of its simplicity, they don’t see it modern versions all browsers. By the way, pay special attention to these languages. With their help, all modern unusual 3D effects that work on websites are created. But be careful, this language is quite complex, so start with something very simple and, as in other cases, gradually follow to more complex procedures.
  • Learn how to implement third-party modules on a website, for example, a payment aggregator in an online store.

  • Learn the website logic and application programming language PHP. With its help, you will be able to create more complex and profitable projects.

Development of programs for PC

Before you start developing software, you need to figure out in which direction you will have to work. Basically it's commercial activity, therefore, it will be necessary to understand how business works in this area, and the principles of operation of its financial component.

Before learning programming itself, the last thing to do is to understand the basics of how it works. digital circuits and knowledge of computer architecture.

Never hesitate to take on entry level, which is taught in computer science classes at school. Yes, you have grown out of this a long time ago, but it is unlikely that you remember all of it, and certainly after many years (unless, of course, there was appropriate practice) you will not be able to apply it in practice. Start with the elementary languages ​​Stratch or Basic. This action is not so much mandatory as it is desirable in order to facilitate further process training. Do you remember how a little spider was running across the monitor in your class after we had written the necessary algorithm of actions in the editor? So remember this one more time. Repetition is the mother of learning!

The next step on the path to victory will be the mastery of object-oriented, procedural and functional programming paradigms. For a clearer understanding of these functions, it is, of course, better to take the necessary courses. Also, according to experts, the study procedural programming is one of fundamentals further training.

Continue your practice by studying advanced modeling systems (UML, ORM).

After all this, you can already try to write console scripts and use them similar applications using methodological examples and exercises. Decide which coding tools are best suited for your language.

Take advanced courses for the language you will be working with. To understand how to write code in your language, you need to know and understand the following:

  • how and by means the client inputs and outputs data;
  • logical and executable threads in procedural language and how this happens;
  • how variables are selected, assigned and compared at all stages of action;
  • how key constructs are created and looped;
  • what syntax is chosen for writing and naming procedures;
  • existing types of data and how they are processed;
  • application of user-defined data types;
  • a thorough understanding of the overload functions supported by your language;
  • memory analysis techniques;
  • be able to understand function pointers.

Next, start practicing in object-oriented paradigms. Take introductory courses to programming in different paradigms. I advise experts to know at least one language in different paradigms. After gaining sufficient experience at this point, look towards the logical and functional programming separately.

Do you already know two languages? Wonderful! Now try to compare them to identify the pros and cons for yourself in order to choose the most practical one. Usually it is done this way...

  • We write a program in one of the languages. We checked. Works? We write it the same way, but in a different language. After everything, we look at which language was more effective in terms of speed of writing code and the result obtained.
  • Start writing new code, but already use both of your languages. It may happen that some algorithm cannot be executed in one language, then a second one will come to the rescue.
  • Do pivot table and use a cheat sheet to compare the constructions of both languages.
  • Try repeating one of the program blocks using different languages.

Now we are learning how to visually program in one of the languages ​​of your choice. Almost all programming languages ​​have versions or add-ons that allow visual and console programming. Here they will help you:

  • courses on event management programming, which is the basis of visual programming;
  • work with various computer software. To understand the work and track changes made, it is better to use different versions programs;
  • read teaching materials By this profile and watch training videos.

A good practice would be to create different programs for your home computer performing various functions and actions. Or make your own virtual thesis, applying learned visual programming techniques.

Gradually hone your skills by studying libraries and packages in detail, increasingly paying attention to those things that you previously considered insignificant or unimportant at the time. Master various methods application of frameworks. Find and explore other packages visual components for your language.

If you plan to create a beautiful user interface, take a graphics course. Just don't confuse this with graphic design. You are a programmer.

As a result, you will begin to create more and more complex programs and games and will be able to gradually reach a commercial level.

Development and programming of applied distributed systems and DBMS

This kind of programming is one of the most complex species, to master it you need excellent knowledge in the field of computer and IT development. Also, to study it, you need to take a course on telephony and related equipment for more extensive knowledge of network topologies.

First, pay attention to your home network environment. How is the computer connected to the network? This can be a direct connection via network card, modem, switch or Wi-Fi router. What network protocol connecting?

Find out what Open System Interconnection is (we'll give you a hint - it's international format standardization of data exchange between various devices. T.n. OSI). Next, familiarize yourself with the terms TCP, IP, Ethernet, LAN, WAN, UDP and move on.

Learn what XML is, why it is needed, what functions it performs, learn how to use it. By the way, it will also be useful for web programmers.

And we went to study a distributed programming language. If you plan to write code under OS Windows, Any will do a language that WSH supports. Under Linux they use Perl and Bash.

You will also need JavaScript to work. Why? There are several reasons for this.

  1. It is supported by all script hosts of all operating systems. Windows supports packages by default, and Linux modifications have add-ons to support JavaScript.
  2. This script is the simplest of all existing ones.
  3. Java is based on ALGOL syntax, which will allow you to further study other languages ​​and choose a second language to simplify your work.
  4. WITH using JavaScript You can take a closer look at programming web documents on the client side.

To start, use one language to write code, gradually increasing the complexity of the task and using more and more complex techniques and paradigms that your script supports. Note: most scripting languages programming support various procedural programming.

Try creating a data exchange system using your script. Write a program to interface various landline and portable devices with different operating systems and different configurations.

Switch to programming languages ​​for desktop PCs. Choose a language that allows you to work with different paradigms (for example, Python), learn its basics. IN lately The combination of JavaScript + C# is popular. According to the same experts, this combination has the following advantages.

  • These languages ​​free performers working in large teams from the need to implement code, which is sometimes difficult compatible languages. The Java + C combination has ready-made, already combined code blocks that allow you to complete the assigned tasks in other programs.
  • They support event-driven, object-oriented and procedural programming methods.
  • Framework add-on distributed by default.
  • You can use ready-made packages of open source code and built-in frames, which makes it possible to use “boilerplate” code.

When we're talking about O network environment and its configuration, look carefully at key points language. In this case, you can “save” on user interfaces, including data input/output, visual design and so on.

An important point will be the study of application distribution system architectures. For this stage It’s enough to read the relevant material, watch training videos, or seek help from more experienced comrades.

Learn how to develop services and components in your language.

Start practicing multiple technologies. In general, we recommend knowing 2-3 of them quite well, and having at least a superficial understanding of the rest. Many of your future competitors do not limit themselves to knowing one or two languages. Their knowledge is at least one language per operating system. More advanced programmers have in their arsenal several languages ​​for each OS. And, yes, they know how to use them, that’s right!

DLLs, platforms and kernels

This is a caste of programmers who have already outgrown application programming and moved on to a more complex development format. They create all platforms, including the web, and various supporting libraries. Surely, when installing software on your computer, you observed the installation of applications such as Microsoft Visual C++ Redistributable, MS Framework and the like. These are the programmers who develop these applications; they also do programming various CMS and website hosting.

What do you need to join this category of developers?


You will achieve greater success if you learn the ways of work of more experienced colleagues. Always pay special attention to code comments.

System programming


  1. First, you need to clearly understand what exactly system programming includes. System programmers primarily deal not with specific tasks, but with scientific field programming, so you shouldn't get hung up on a specific platform.
  2. It would be advisable to follow the recommendations in the first three points for desktop application programmers.
  3. It also makes sense to go through at least initial course in linear algebra.
  4. It is definitely worth taking a course on calculation methods.

  5. Additionally, take a course in discrete mathematics and/or logic.
  6. Familiarize yourself with different operating systems without add-ons. Such an acquaintance can be done in this way:
  7. Familiarize yourself with educational literature containing the basics of architecture computer equipment or take a relevant thematic course.
  8. Analyze the differences between different hardware platforms.
  9. Learn the basics of the assembly language of your preferred hardware platform or operating system. After some time, you will need to learn the assembly language of other systems and platforms.
  10. Take a course to learn ANSI C and C++ languages, along with this master basic principles procedural programming.
  11. Explore the core C and C++ libraries and start using them on your platform of choice. Should be given increased attention at the same time, the Active Templates Library (ATL) and the library standard templates(STL).
  12. To thoroughly understand exactly how C and C++ will work on your chosen platform, you should contact necessary information to Internet sources, literature and relevant thematic courses.
  13. Start creating higher complexity code in C/C++.
  14. Get to know the nuances of Assembly at a more complex level.
  15. Take a course in operating systems development.
  16. Find and review documentation specific to your chosen platform. You will find it much easier to use a Unix-based operating system. But for this you need to understand this system well enough.
  17. Start using the knowledge you have acquired. Start by making small ones. system utilities. To do this, it would be advisable to do the following:
  18. Learn languages ​​in the most logical order. Only in this case will it matter which programming language is your first. To begin with, it is advisable to master ANSI C, and not C#, Java or D. After that, you can start C++. A system programmer must have the following skills:

Scientific programming


Programmers become in demand and popular not because they know how to write good code, but because they have certain knowledge, additional skills and some character traits. There are many ways to achieve this level of skill, for example, you can use the following.

  1. Don't be afraid to seek advice from more experienced colleagues. If independent searches solutions to the problem that have arisen do not bring the expected results and you cannot move for a long time because of this, it is advisable to seek help from more experienced colleagues. The opportunity to learn from your colleagues cannot be overestimated. The most important thing: formulate the question as clearly as possible; it often happens that it contains the necessary hint.
  2. Appreciate your own work. You should not treat the task at hand as a favor or an unpleasant but inevitable necessity; there will be no benefit from it. Carefully approach the design of the code, structure it, making it understandable and readable not only for yourself, while not forgetting to coordinate it with the standards accepted in the team or company. Carefully clean up the result, correcting even the slightest, not particularly noticeable defects. For example, if during work the interface has shifted a few pixels to the left beyond the norm, take the time to return it to its proper place. Be sure to spend full check the final result of the work. As a result, your efforts will certainly be noticed and appreciated.
  3. Constantly develop yourself. In order to become a truly sought-after specialist in this field, you will need to constantly develop, follow the latest innovations in innovative technologies, constantly analyze new trends. Since the younger generation is developing quite quickly and creates significant competition, it is necessary to constantly hone one’s own skills in order to quickly and effectively master technology.
  4. Learn to clearly formulate your thoughts and convey your ideas correctly. According to the founder of Fog Greek Software, famous programmer Joel Spolsky, the main difference between relatively good and truly outstanding programmers is not the number of programming languages ​​they have learned or which one they prefer, but the ability to convince others and competently convey their own ideas to them. This is their main skill. Programmers of this level write comments that are easy to understand and technical specifications, so the code they create is clear enough for other programmers, who can subsequently use and develop it without much difficulty.

Find out what you will have to do. Typically, programmers write codes for applications that are used in businesses, so you should find out how the business works, how it is organized and how its financial system is structured.

Explore various types computer hardware architecture. It will be useful to learn the basics of digital circuit design and computer architecture. However, some experts believe that this is not necessary at the initial stage, so it will be enough to read 2-3 articles on this topic (for example, this and this). You can come back to this once you master your first programming language.

Learn a basic level programming language. Don't be shy about learning something that's considered childish just because you're older. An example of such a language is Scratch. Such languages ​​will make it easier to work with your first real programming language. However, this step should not be considered mandatory. In addition, you can do this before the previous step.

Learn one of the advanced modeling systems (for example, UML or ORM).

Start writing small console or console-like applications. You can use exercises from programming textbooks. Choose a tool for writing programs in the programming language you work with.

Start applying what you have learned.

  • Object-oriented paradigm.
  • Pass introductory course at least one programming language in another programming paradigm. One language should be learned in each paradigm, and, as a rule, all good programmers that's what they do, but all you have to do is start with one, work with it, practice, and then move on to others when you already have real experience in programming. Take a closer look at one of the following areas:

    • Logic programming paradigm.
    • Functional programming paradigm.
  • Try comparing two programming languages ​​that you have already mastered. Evaluate the strengths and weaknesses each of them. Usually they do it like this:

    • Take a simple example of your early work in a first programming language and rewrite it using a second language.
    • Create new project and use both languages ​​there. You may not be able to do some things in one of the languages ​​- it will all depend on the project and languages ​​you choose.
    • Make cheat sheets or compare similar constructions in both languages ​​and their differences in a summary table.
    • Find a way to replicate constructs found in one language using another language.
  • Learn visual programming concepts using one of your chosen languages. Almost all programming languages ​​have versions or libraries that support visual programming and other types of console or console-like programming. You can do this as follows:

    • Take an introductory course to event-driven programming. Basically, visual programming is based on events and event processing (using the programming language of choice).
    • Try working with a large number software For desktop computers to understand what these programs do. Most development companies offer beta versions of applications that you can try out. Follow the development of the user interface.
    • Read articles or tutorials on working with graphical user interfaces.
  • Start applying your knowledge by developing simple applications. Try to use the acquired knowledge to solve everyday problems. For example, write programs that will massively rename files, compare text files visually, copy document names to a specific location in separate file memory or text file and so on. To begin with, keep things simple.

    Programming is one of the most valuable skills for career growth, self-development and creating something amazing. Ten tips for those just starting their journey into the world of programming, from Lifehacker.

    10. Find out why you want to program

    The chosen direction of study will depend to a large extent on why exactly you want to learn to program and how much time you are willing to devote to this process. If you want to become a programmer, the first thing you should do is sign up for professional courses(Google has compiled a list of skills and courses for those who want to become software engineers). If you want to create games and websites for fun... free time, best choice are interactive courses. Bloc has created a comparison chart of courses based on download, cost, and reason to learn programming.

    9. Choose the right language

    7. Try apps for kids

    Nowadays even kids are learning programming. Although many children's learning programs are quite simple, some (like Scratch) are suitable for all ages. It doesn't matter how old you are, even kids' animation apps can teach the basics of coding (edX has a new Scratch tutorial).

    6. Take advantage of free online training

    Free online trainings and projects (Codecademy, Hour of Code, etc.) can help you write your first program. Tutorials from Khan Academy, Codecademy, Code.org and others will introduce you to the basics of programming and everything you need to create a game, website or other project. Find the right source depending on the programming language, using . This is a good starting point, but further learning is your responsibility.

    5. Take an online course

    Online programming courses provide more extensive educational training than sites that offer online training in a single language. These courses are designed to teach basic skills over several months in university-level classes. I'm a big fan of Harvard's online course CS50 (it's free to take). There are also other possibilities. You can even get a university-level education by choosing one of 15 online courses.

    4. Free books on programming

    If you are stuck on a problem or need to find the answer to your question, don't forget about reference books. You can find a huge collection of over 500 on GitHub free books on programming. Collection also available e-books, covering 24 programming languages.

    3. Learn by playing

    Sometimes the best way learning are games. While many programming tutorials teach you how to program simple or complex games, some tutorial sites are games themselves: Code Combat and CodinGame are tools you can use to have fun.

    2. Find or become a mentor.

    The programming community is full of people willing to help the next generation of programmers. Hack.pledge() is a site that will help you find a mentor. Or you can become a mentor for someone else. Teaching what you've learned will help you remember the information better.

    1. Parse someone else's code

    This section will be updated with articles and video materials, after reading and studying which you will be able to understand how to become a programmer from scratch on your own. All articles are written personally by a practicing programmer with many years of experience. Moreover, mine will be of value to you. personal experience, because I was initially self-taught, I learned everything by trial and error.

    Then, of course, I also graduated from university. That is, in theory I also became proficient. But that was later, when I was already working as a programmer. That is, I managed to get a job without having not only a higher education, but even without even a special education in the field of programming.

    And all because...

    However, I will talk about all this in separate articles. In the meantime, check out the structure of this section:


    This subsection will contain articles for the most inexperienced, for those who are just thinking about becoming a programmer. Here I will talk about where it is better to start learning programming and what mistakes it is advisable to avoid.

    Education
    In this section, I will talk about what, where and how to study to become a professional programmer.


    Articles about programming languages, their features, advantages and disadvantages, comparison of programming languages.


    Here I will talk about different development tools. Both about those that I use myself, and about special programs - text editors, compilers, different useful tools, which programmers use in their work. Including old ones that are practically no longer used, because you need to know the history of your profession.


    Here we will talk about programming technologies. What is it, where, how and what is it used for, etc.

    Algorithms
    Here I will talk about the simple and most commonly used algorithms in practice. Of course, there will be examples too.


    There will be various tricks and tricks that professional programmers use in their work, and which help them solve various tasks. In general, this section can also be called “Exchange of Experience”.

    Stories
    So that life does not consist only of studying boring materials, I will sometimes break up the stories about programming different stories, both real and not so real...


    Will be available for download here various documents, source codes, programs and other similar things.

    Main task this section- help beginners become a programmer from scratch. Moreover, the main focus will be on self-education. Because I understand that not everyone is already determined to become programmers. Someone else is indecisively trying to decide whether he needs it at all, or is it better to try himself in another specialty.

    So I decided to do everything possible to complete newbie by reading these articles and studying the videos:

    1. Was able to decide whether he wants to be a programmer
    2. And if so, then I could choose right direction and start consistent and effective training programming

    So subscribe to site updates and wait for news. Articles and videos will appear regularly. And you can study those that already exist right now. I advise you to start from the very beginning. But first, read my book “How to Become a Programmer,” which will allow you to learn the basic areas of programming and even write your first few programs.

    The book is absolutely free. Distributed by subscription. You can get it here, right on this page. Just enter your address email and click the GET button.

    In the letter that will be sent to the address you specified, you need to confirm your subscription by clicking on the link. After this you will receive a link to download the book. It's simple...



  •