Hey guys, I’m Cxuan. In this article, I’m going to talk to you about how to learn programming. There are so many contents in this article. So let’s get started.

Introduction to programming

First of all, we need to solve the problem of how to get started, which is also a lot of novice/white confusion, how to start? Where do I start?

If you are interested in learning how to program, it is helpful to develop a correct concept of programming. This short film is a good introduction www.youtube.com/watch?v=mvK… “This video explains how you should start programming with a proper perspective.

After you set up the correct concept of programming, you need to realize that a problem, that is the way to learn programming, there is no universal and so on the market most the method advocated by the training institutions is not for everyone, this is just a method of study, most of them are accepted but does not apply to you, you have to find a suitable way of programming.


Two phenomena need to be mentioned here:

Many friends have asked me about the way of programming. There is no guarantee. Some people like to program in the morning, because they are more awake and clear. For some people, online programming is great. There’s no interruptions at night, and there’s a magic to the night: empty cup mentality, where you can see yourself more clearly and reach a state of flow. But there is a special taboo at night, that is to stay up late. Life is not all about programming. Programming can’t completely replace life, at least in China.


So you need to find a way to program that works for you, and I strongly recommend that you do so in the following ways:

  1. Start by finding problems or projects that interest you. You can try to build tools to solve small problems in your life, or implement programs that discover fun from the ground up. This project will help motivate you to continue learning the coding experience and provide you with the opportunity to practice applying what you have learned.
  2. Do some research to determine which programming language is best for your project. (I will introduce it below)
  3. Find high quality programming resources for beginners. (Again, I’ll cover that below)
  4. Use Google search to ask questions or supplement learning resources. If you don’t have TZ, you can use Bing and Sogou (wechat official account).
  5. Several meaningful projects were completed using the language

In fact, the above points boil down to this

Avoiding these bad programming habits is strongly recommended at first !!!!!!

  1. Don’t just passively use the resources you’re using. Practice is an absolutely necessary part of learning to code.
  2. Avoid switching back and forth between programming languages; Pick a language and stick with it. This is because programming is ultimately about problem solving, not programming language. Learning to solve problems is challenging and is a skill that can only be honed with practice. You’re wasting time every time you switch languages. Take the time to practice using what you’ve learned to improve your problem-solving skills.
  3. After completing the tutorial, don’t stop learning. Programming is an area that is always in need of new knowledge

Finally, keep in mind that learning to code is bound to be a long and difficult process, and if you find coding difficult, don’t be discouraged at all. It’s perfectly normal, because many people spend years learning and practicing before they think they’ll be able to find a job or contribute to a major open source project. Fortunately, getting started with programming isn’t that hard.

How to choose a programming language

So now it’s time to explain some of the points mentioned above in the introduction to programming.

First of all, finding the right programming project that interests you depends on the individual, so it’s a matter of choosing a programming language.

I am often asked this question, which language should I choose to start with?

There are two mistakes people make when asking this question. First, you subconsciously believe that there must be a perfect programming language to learn. The second is that the first programming language you learn seems to last a lifetime…

In fact, there is no such thing as the best programming language. (PHP is the best programming language. And your first programming language wasn’t decisive in your career, so if it was, are you too lazy to get into a new programming language?

I’ll tell you one thing. Learning a language is the hardest thing to do at first, because there are so many complex concepts that you don’t understand, but most of the basic concepts are common to all languages. As time passes and you get deeper into programming, learning a new language becomes easier. While it may take you months to learn a programming language, an experienced programmer can learn a new language in a matter of days.

Ideally, all programmers should have experience in multiple languages. Once you are satisfied with one language, you can move on to another that is different in some fundamental way. As you learn more languages, you’ll become more able to choose the right tool for the task at hand, which is the mark of a good programmer. Because programming concepts are so important, I recommend that beginners choose one of the major languages from the table below. All of these languages allow beginners to start writing simple applications and practice programming without having to use any of the more complex language features.

If you already have a project and a goal in mind and apply your skills to the problem you’re solving, you’ll learn faster. Here are some examples of common programming languages to give you more options.

If you look at these if you still feel confused, it might as well use a simple and easy-to-use programming language Python, Python is a kind of good, suitable for beginners of language, has a huge community and many libraries, can do almost anything you want to do, from making the game to make things automation in the home or workplace, From doing data analysis to making websites and more. Before moving on to more complex applications, you need to find some good learning resources

So where can I find these resources

I’ve listed some sources for you below

  • Books, before learning any skill, reading is one of the most effective way, which is also the way I recommend to you, because I like reading, hoarding books is also one of my fun.

    • Free programming books, this github list includes almost all programming books, I read after the great!! Github.com/EbookFounda… The English version is as follows github.com/EbookFounda…

    • Some books for beginners

      • C# : dirty little book by Rob Miles www.csharpcourse.com/ – C# programming for beginners.

      • Python: Al Sweigart ‘s written in the Python automation series automatetheboringstuff.com/, also have the Chinese version, namely “Python programming from entry to practice”

      • Also by Al Sweigart’s Invention of Python series inventwithpython.com/, which is based on the use of Pyth…

      • Abelson and Sussman written in the construction and interpretation of computer programs, below is the programming website mitpress.mit.edu/sites/defau…

      • Python programming game programarcadegames.com/

      • C Primer Plus is a classic guide to the C language

      • C programming language, is also a classic book, although the book is not thick, but concentrated is the essence!!

      • Java: Head First Java, this is the simplest book to get started with Java, nothing is easier than this. In fact, the Head First series can be used as a primer

      • Java Core Technology Volume ONE (Volume two as an enhancement) can be viewed through Head First in this series. These few books are enough to get started with Java.

      • C + + : that must be still c + + Primer Plus, learning c + + some common problems can be the reference here www.reddit.com/r/learnprog…

    • In addition, some authoritative C++ books and guides are listed in the following link. Stackoverflow.com/questions/3…

    • Some of the most authoritative C books and guides are in the link below. Stackoverflow.com/questions/5…

    • These are some recommended books to developers blog.codinghorror.com/recommended…

    • Every programmer should read what is one of the most influential books web.archive.org/web/2015051…

    • Algorithm book recommendation: there are a lot of books on algorithm in the market, recently very popular “Labuladong algorithm Cheat sheet”, easy to understand “Xiao Grey algorithm Journey” and so on, but I only say two of the most classic algorithm book: “Introduction to algorithm” and “algorithm fourth edition”

  • Online resources: I will recommend some high-quality programming resources below, these programming resources are very good tutorials, go!

    • Hackr.io /
    • C#
      • C# online programming practice community, what better authority than Microsoft? Dotnet.microsoft.com/learn/dotne…
      • The quality of C# systematic tutorial, of course, can not leave Tutoriaispoint. www.tutorialspoint.com/csharp/inde…
      • C# high quality programming practice website www.learncs.org/
    • Ruby: learning Ruby here recommend you three sites: rubymonk.com/, www.pluralsight.com/search?q=ru…
    • Here are two recommended resources for you: www.codecademy.com/, https://el…
    • Java
      • What could be more authoritative than the official website? Docs.oracle.com/javase/tuto…
      • Java’s biggest characteristic is the object-oriented design philosophy, here you can refer to the University of Helsinki (never heard of? On Linux his father’s that school) www.mooc.fi/en
      • John Purcell Java beginners free version courses.caveofprogramming.com/p/java-for-…
      • The author has some more language tutorial www.youtube.com/channel/UCw…
      • Java design patterns and architecture, reference John Purcell www.udemy.com/course/java…
    • Python: you can browse www.reddit.com/r/learnpyth… Find out more detailed, more comprehensive list of resources, especially the www.reddit.com/r/learnpyth… The more newbie friendly part.
    • Web learning
      • Web learning includes some front-end content, which is a great site www.snoopcode.com/
      • CSS 3 css3please.com/
      • I love the PHP, ha ha ha ha ilovephp. Jondh. Me. UK/en/tutorial…
      • The introduction of Web development www.thesoftwareguild.com/coding-boot…
  • Featured programming resources, this github github.com/Michael0x2a… Very good, selected a lot of very good programming language resources

  • Did not go up good university, mean oneself have no competition ability? Of course not! The site www.infocobuild.com/education/a… A collection of excellent university courses

  • As far as I know, 99.9% of domestic universities are in a terrible state of CS teaching, including some universities such as Tsinghua university and Peking University. I have also heard some videos in STATION B, which are really a long story, so the most reliable one is self-study. Here’s github github.com/ossu/comput…

How to improve

How to transition from the beginning to the medium level

I had this phenomenon when I was starting out, which was, what do I do now? This is especially true if you read a few books and tutorials dealing with the problem of the century, but in the end it is difficult to understand if… Else and for loops and things like that segue to understanding how to use what you’ve learned in applications to make more complex and interesting programs, which is where most programmers have problems.

Between the introductory tutorial and complex code this transition can be difficult, www.thinkful.com/blog/why-le… This article describes this phenomenon very well. Many tutorials, including some of the ones I’ve listed above, tend to give you knowledge of a particular language, but once you get there, you don’t want to go any further… This puts many beginner programmers in a bind.

Here are some suggestions for improving the situation.

  • Change from passive to active learning

    Take the initiative of learning from what you want others to teach you to what you actively/actively learn/absorb. For example, if you don’t know how to make a website, Google will show you how to make a website in X language, and Google will show you a series of tutorials on HTML5, CSS, JavaScript, etc. Then find a large tutorial or online programming course to start.

    You can usually find tutorials that you want to perform, or at least articles that give you an overview and clues on how to compose more specific search queries. More broadly, learning for search shouldn’t shame you; in fact, it’s an entry-level and advanced job for all programmers.

    When I first started my job, I often felt ashamed because I didn’t know how to write the code. I was ashamed to search on the Internet. I often tried to find a solution by myself, but when the correct result appeared, INSTEAD of CTRL + C + V, I typed down the code one by one. It’s a waste of time and energy, and it’s a vicious cycle of self-doubt.

  • practice

    Programming is a bit like exercise, because the main way to improve is constant practice. Start simple, then try writing a basic game like Rock-paper-Scissors on the command line. When you’re done, try to pick a more ambitious project and finish the job. If you want to mix things up a bit, maybe try some programming exercises.

    Ultimately, programming is really about application problem solving, and the best way to learn how to solve problems is to constantly solve problems large and small.

  • Know how to break things down

    Whether you’re trying to solve a difficult problem at work or trying to find some big open source project, you’re likely to get frustrated because of how big or daunting the task seems. Don’t be intimidated, but break the problem down into smaller and smaller sub-problems until each sub-problem seems relatively easy to learn and solve.

    For example, if you’re learning Java and want to learn how to write games, but don’t know where to start or how to solve the problem, a search for Java game tutorials will yield several good results, often showing you how to break down the process of writing games into smaller parts.

    In essence, you’re trying to build an engineer’s mindset. If the problem is big, don’t give up. Constantly breaking it down into smaller and smaller pieces and searching for seemingly impossible tasks. Then repeat, continue the cycle: decompose, search, decompose, search…

    This is a very effective self-teaching strategy, by the way! As you practice, you will have a better understanding of how to solve problems and will expand your knowledge/library of possible problem solutions.

  • Learn how to systematize

    When we programmers encounter problems and debug, we often do this: change the size of border to refresh the page, change the size of margin to refresh the page to see if it works, just like this kind of debugging and solving problems by guessing, this habit should not be formed. You need to use what you’ve learned, analyze as much as you can, make mistakes, learn, re-analyze, re-judge, re-learn… Be as systematic as possible and avoid trial and error.

    When debugging, do not aimlessly. Try to think like a scientist – conduct experiments to try to fix errors or narrow down the possible range of errors, and document the results. If your assumptions/attempted changes turn out to be wrong, or if you think some changes don’t work, please stop, pause and find out why.

    Mistakes happen when your assumptions don’t match reality. If something feels wrong, don’t ignore it – go all the way back to determining what the problem was/what the wrong assumption you made.

    This kind of learning is meaningful, it keeps you thinking, it’s hard, but it makes you want to solve problems, and it keeps learning.

    Don’t be smug because you got the right result in a blind test.

  • Don’t get discouraged by having to debug or Google

    Not all beginners realize that, even among professional programmers, it’s perfectly normal to spend more time debugging or googling.

    Debugging (and hard!) Is an important part of coding. If possible, try to avoid being overly nervous or impatient. See it as a fun exploration and Mosaic of knowledge!!

    Even if your actual code doesn’t make any progress because of some mistake, as long as you’re learning systematically, you can practice your problem-solving skills, albeit in a different way.

    As a result, even if you spend a lot of time fixing a bug, you still have to consider that time well spent, and debugging is one of the best ways to be good at solving problems!

    This becomes more true as you become more experienced. As it turns out, the difficulty of encountering errors increases with your level of experience. It’s not uncommon for experienced programmers to have to spend months sometimes tracking down bugs. If it turns out to be a particularly nasty mistake.

  • Don’t be afraid to ask for help

    Finally, if you are completely stuck and don’t know what to do next, don’t forget that there are other people you can turn to for help!

    Programmers are often very helpful. Many of us are also self-taught, so we know what it’s like to struggle as a beginner and to be completely bogged down.

    As much as possible, but to ask for help before, you need to describe the problem clearly, asking the questions skill is also very much, this article about how to ask questions, should be very helpful to you www.reddit.com/r/learnprog…

Where can I find programming exercises and projects

If you want to create a project, consider the following ideas for inspiration:

  • Some of the listing
    • www.dreamincode.net/forums/topi…
    • Github.com/karan/Proje…
    • Github.com/NirantK/awe…
    • Github.com/florinpop17… Growing list of
  • Project ideas and tutorials or writing
    • Advanced beginners oriented programming projects – blog robertheaton.com/2018/12/08/…
    • Github.com/tuvtran/pro…
    • Aosabook.org/en/index.ht…
    • Build your own programming language github.com/danistefano…
  • A particular theme project inventwithpython.com/blog/2012/0…

If you want to do something challenging, then you can try writing

  • Command line utilities (ls, wget, curl, etc.)
  • Text editor
  • Integrated development environment
  • Image browser
  • Office Suite (similar to Microsoft Office or Libreoffice)
  • Programming language (writing an interpreter or compiler)
  • Web browser
  • Database (relational or non-relational)
  • Web server
  • Version control system

How to improve your ability to translate tasks/problems into program code (algorithmic thinking)

This is one of the most common problems.

The general answer is: write lots of programs.

However, there is a technique that can help you build this skill:

  • Pick one thing you should do every day, like making breakfast or something similar. It should not be too easy, but not too difficult.
  • Write down the steps you should perform for the activity, but run out of memory at a different time from when the activity was actually performed.
  • The next time you perform this activity, take notes and try to follow these steps carefully. Try not to deviate from the steps you wrote down, and note the differences if necessary.
  • Improve the algorithm until you are satisfied.
  • Try different activities. The task gets easier and easier.

As silly as it sounds, it works. The above method has been tried on many students and has been shown to lead to significant improvements.

I have a hard time coming up with cool new ideas for a project, am I just not creative? How are other programmers inspired

For starters, en.wikipedia.org/wiki/Chuck_… Chuck_Close a great idea

My advice to young artists, or anyone who will listen to me, is not to wait for inspiration. Inspiration is for amateurs; The rest of us just show up and get to work. If you wait for the clouds to clear and a bolt of lightning to hit your brain, you won’t get much work done. All the best ideas come from the process. They come from the work itself. Things happen to you. If you want to dream up a great artistic idea, then you can sit there for a long time before you do anything. But, if you just start working, you’ll imagine some things, but something else will actually happen, and those other things will push you in another direction. Inspiration is absolutely unnecessary and in some ways deceptive. You think you need this great idea to get started.

It’s rare to come up with novel ideas just sitting there waiting for the spark. If you just keep trying to build something (anything!) Even if your idea seems silly or finished, it’s worth your time.

After all, that’s what artists and musicians do – they don’t necessarily start by trying to create highly creative paintings or create their own music. Instead, they painted landscapes or vases, or overlaid existing songs. Likewise, don’t feel pressured to come up with project ideas. Re-implementing existing procedures is a time-honored tradition – see what you can achieve!

However, here are a few more ideas and techniques for you to follow

  • Try to re-implement an existing project: Just as a budding musician starts by reporting on someone else’s song, it’s best to re-implement a program someone else has written.

  • Try linking programming to another hobby: Programming is a very useful skill because you can apply it to a wide range of fields, even ones that have nothing to do with computer science at all. For example, if you’re interested in politics, try analyzing voting pools and trends; If you’re interested in music, try writing a digital soundboard. If you’re interested in sports, try writing fantasy football trackers or predictive variables, or if you run a business, writing something to help you keep track of inventory.

  • Try to keep track of things that annoy you: If you find things in your life that you don’t like or things that repeat, ask yourself if you can automate them. I remember mouse tertiary (left mouse ear) is also mentioned the idea, such as using Python to complete some of the boring work, this automatetheboringstuff.com/ website may help, you can also search for home automation tutorial or more solutions

How to complete a large project

We’ve also talked about training for large projects: break them down, break them down

But first, you need to have a thorough understanding of the project, and maybe rubber duck debugging can be very useful. Explaining a problem or concept to someone (or something) with zero knowledge or understanding helps to get deeper into the problem. By doing so, one must give more thought to the problem, which will lead to a deeper understanding.

Then, don’t go directly to the computer.

You spend a lot of time thinking about problems/tasks. It helps to draw some sketches, some pseudocode, some easy-to-understand language hints, and write your ideas on paper or on a drawing board.

Keep one thing in mind when working on large projects on your own

Everything in the world is made up of smaller parts.

This means that basically what you see is that any large machine, house, skyscraper, car, train, computer, etc., is made up of many smaller structures that together make up the final product. Smaller structures are made up of smaller structures, and so on.

The same goes for big programs. They consist of many smaller units that are coupled together to form a whole. Ideally (but usually not), each smaller unit should work (and be tested) independently of the others.

Start with small units and see if problems or projects can be broken down until they become unbreakable.

Instead of looking at the final project and the big picture, which will overwhelm you, just work on one individual piece at a time.

The biggest problem inexperienced programmers face is that when they tackle large tasks, most of them are overwhelmed. But the problem isn’t that hard to overcome:

Don’t try to see the end of all programs. Focus on one small, manageable piece, get it done and move on. Even the most complex programs/systems contain small, simple modules.

Imagine that you are working for a client who needs to review and approve your design before they can start writing code because they need to make sure that you understand their ideas correctly.

  • Prepare a detailed description of the project, known as the functional design specification.
  • Discuss the functional design specification with your imaginary client (i.e., explain it to some inanimate object, or if you can afford it, explain it to them).
  • Perfect the functional design specification – go back to the previous step – cycle until you are satisfied.
  • Prepare the project schedule before the deadline.
  • Adhere to the above provisions.

Some other suggestions

  • First, forget about writing code altogether and imagine the program from the user’s point of view.
  • Write down a list of functions performed by the software.
  • Write down a list of features the software doesn’t have. (This will allow you to avoid requirements changes)
  • Write out some graphics about what screens the user will see and how they work. These are not blueprints, nor are they meant to show what they look like, but more “first the user is on this page, then they can go to this page”. Sketching will help you not miss out on details.
  • Find out how to use Git and get a Github account. This is great for backups and code reviews. (Ignore any comments about code style, it’s a futile debate 99% of the time.)

Some worries and fears

Many readers have asked me if I can learn XXX languages, so why not? And who stopped you from learning? Isn’t that what your worries and fears are holding you back? There are also questions like the following

Am I too old to code

No, you can learn programming at any age and possibly pursue it.

We have this 35-year crisis all the time, and it happens in virtually every industry. Last week, my family moved house. I talked with the mover. He was 40 years old and still doing the moving work. After the age of 35, the decline of physical function is the biggest consideration factor for enterprises to measure employment, so there is no phenomenon of 35 years old not to be dismissed? Yes, so there is a question like which one to choose when getting the offer from Pinduoduo or State Grid.

And why worry about a 35-year crisis? That’s because your job is fungible. If you were an architect in a company and you built the core architecture of the company, do you think the company would fire you? Maybe, because the company is going out of business… Of course, these are all unexpected circumstances.

So, we worry about the 35-year-old crisis, because we don’t want to learn any more, want to make some money, but enterprises don’t think so, if they don’t develop, they will be replaced, so why will enterprises spend a lot of money to support you? I’m not talking about getting in bed with corporations here, but you have to understand why we have a 35-year crisis.

A common myth is that the only way to be good at programming is to learn to code at an early age. This is wrong – while some people start learning to code early (and thus may have some first mover advantage), most people will start learning to code in college or later. So what is similar to letting children win at the starting line, just seize the weak psychology of some parents, the subtext is that your children do not enroll in classes early, as good as other children, and the parents are love their children, since the parents grasp this psychology, then the training class can not make money?

While learning is something people of any age can do – stop focusing on others and just focus on yourself and your personal rate of progress. This article is useful www.edglossary.org/growth-mind…

Other friends like to ask the following questions

Is there anything I should learn first

There are very few prerequisites for programming, the only prerequisite is

  • Do you know how to type
  • You own a computer, and your computer has Internet access
  • Do you know how to search for answers independently

OK, so that’s it, so you can program directly, if you know some math, no more than basic algebra; And you have a basic English background, which is certainly the icing on the cake.

All of the above is similar if you want to get a formal college degree. Most universities and colleges expect to enroll students who know nothing about computer science or programming and will teach you from scratch (although in some cases you can skip an introductory course or two if you pass a test or prove sufficient prior skills). If you’re in high school or earlier and want to study computer science in college, it’s best to start early to get a head start.

Do I have to be good at math

Not necessarily. Programming and computer science is a wide field, and whether you need to be proficient in math depends on what subject you choose to specialize in.

For example, some programming disciplines do require strong math skills. 2D and 3D plays will make frequent use of vectors, matrices and linear algebra; Data analysis and machine learning leverage many concepts from statistics and calculus; If you have a good understanding of algebra and basic calculus, calculating the complexity of algorithms becomes much easier.

In general, the more advanced and complex the topic, the more likely it is to require a solid mathematical foundation. If your goal is to be able to solve these types of complex problems, having a good foundation will be invaluable.

But just as computer science and many aspects of programming do not require an in-depth understanding of mathematics. The only thing you really * need to know is how to add, subtract, multiply and divide, and maybe some basic algebra. Many programmers go through their entire careers without having to do almost any math.

In particular, many product-oriented roles (e.g., Web development, mobile development) require very little mathematical knowledge. Of these sub-disciplines, the most important is your ability to write robust and maintainable code, and to figure out how to build something of value to users.

Anyway, if you’re not very good at math, then you can definitely learn and improve! After all, you may not be very good at programming either, but you’re learning to code.

To be precise, CS degrees vary in mathematics from school to school. Some schools overemphasize coverage theory, while others de-emphasize both and focus only on application. (Some schools emphasize both). If you want more information, you should directly investigate the degree requirements and structure of any college or university you are interested in attending.

All in all, if you want to be a successful developer, you don’t necessarily need to be proficient in math. If you want to be a computer scientist, you’ll end up learning a lot of math. Mathematics can be a useful tool if you want to solve more difficult problems/in certain areas.

Programming is difficult?

Programming, like most skills, is relatively easy to learn the basics and apply them. But if you want to become a competitive bowler, you’ll need years to master the skill, and so will coding: you’ll need a lot of time to figure out why this stupid program still won’t work even though you’ve checked it three times. You will need to read books, sit in class and discuss solutions with people.

That’s why it’s so easy to get started, but it’s really hard to dive into a field and learn more and more.

Is it normal for beginners to have trouble with questions and exercises

I don’t want to give you the obvious answer.

Is it normal for beginners to fall off their bikes several times? Is it normal for beginners to sink several times when learning to swim? Is it normal for beginners to miss notes or play the wrong ones when learning an instrument? When gym takes exercise, what abecedarian wants to practice chest however is 3 head normal?

Absolutely!

Failure and suffering are an important and natural part of the learning process. Every beginner will experience failure and suffering. So instead of losing heart, embrace what’s burning you: struggle is a sign that you’re challenging yourself. Using it as a guide can help you figure out what material to read and study next, or what questions to ask.

Even experts fail and struggle when they need to learn something new (although they tend to be better at recovering/using failure as a way to help them speed up their learning).

In fact, if you’re not suffering, you’re definitely doing something wrong. If everything was easy, that would mean

  1. You’re not challenging yourself
  2. You’re not forcing yourself to learn something really new
  3. You don’t force yourself to try it out to really make sure you understand it

It’s similar to exercise. If you don’t feel physically tired after a workout, are you really getting a workout? Similarly, if you don’t feel mentally fatigued or mentally challenged after completing some coding challenge, have you really learned anything?

Questions about learning

I have just started learning language X, should I start learning language Y

Especially when you’re starting to learn programming, it’s best to learn a language and stick with it for a while, even if the particular problem is in a particular language you don’t know yet. Once you understand the basics (flow control, error handling, I/O, algorithm implementation, data structures, etc.), you can start thinking about using different languages.

Should I learn more than one programming language at a time

Unless you have a good reason, most beginners should only use one language for at least a few months. This is a more effective way to learn for several reasons:

  1. The basics of most languages are very similar. For example, most languages handle if statements in much the same way. Taking the time to learn two basic grammars is not always a good habit and can be confusing for beginners.
  2. The hardest part of learning how to programnotLearning how programming languages work: Learning howTo solvecodeThe problem. Therefore, you want to make the most of your time practicing code solving problems, rather than spending more time learning language-specific details/you must waste mental energy tracking language differences.
  3. Once you are proficient in your first language and have strong problem-solving skills, choosing a second language is much easier.

With some exceptions, you can learn both the first language and the second language directly

  1. The second language is not a programming language. For example, it is best to learn markup languages (such as HTML or CSS) with programming languages (such as C, C ++, C #, Java, JavaScript, Python, Ruby).

  2. This is necessary for all kinds of projects that interest you. It’s important to keep yourself motivated to keep learning, and if that means learning two programming languages at once, so be it.

  3. If you have a teacher or mentor to guide you. Qualified teachers and mentors can greatly simplify your learning process, which will more than compensate for any inefficiencies.

If you don’t consider yourself a beginner and feel comfortable using a programming language for moderately complex projects, it’s certainly a good idea to try learning more than one language at a time. At this point, you should know enough about programming to start learning the new language faster, and you should have a good idea of how much you’re learning at once.

How do I get/keep motivated to learn programming

It’s a good question to look at what other people do, right

  • redd.it/uzt31
  • redd.it/1c1bnj
  • redd.it/2j6b7i
  • redd.it/1s347g
  • redd.it/javfv
  • redd.it/gy0xa
  • redd.it/1xvdte
  • redd.it/1hh76b

How to use X

How do I start making video games

Modern video games is the use of the game engine production en.wikipedia.org/wiki/Game_e… www.reddit.com/r/gamedev/w…

  • Unity (C#) : suitable for 2D and 3D mobile, desktop, browser/online and console games
  • Construct2 (JavaScript) : For 2D mobile, desktop, browser/online
  • Pygame (Python) : Engine for 2D board games
  • LOVE (LUA) : Suitable for 2D board games

Always remember that your goal is to develop a game, not a game engine.

The engine can help you get started with your game’s graphics and user controls, but you still need to thoroughly learn the programming language to write your game’s logic, so check out the books or online resources I recommend above.

Most important: Start simple. You may want to directly into the water and immediately create your dream game, but remember, the only way to climb the mountain is many small steps www.reddit.com/r/gamedev/c… Below is a list of simple practice games in ascending order of difficulty:

  • Guess the Numbers game www.funbrain.com/games/guess…

  • Blackjack en.wikipedia.org/wiki/Blackj… Or tic-tac-toe en.wikipedia.org/wiki/Tic-ta…

  • The hunting of squid www.ifiction.org/games/playz… Rules en.wikipedia.org/wiki/Hunt_t…

  • Choose your own adventure or Zork en.wikipedia.org/wiki/Zork cloning

  • Pong, Tetris or Minsweeper clone

  • Horizontal/vertical scrolling space shooter

  • Simple Doom, Mario or Zelda

How do I get started making a website/making a Web application/developing a website

There are many ways to learn about Web development, but in general the core skills you need to master are usually divided into front-end skills (code running on a user’s Web browser) and back-end skills (code running on a server).

In general, most people would recommend that you first learn HTML, CSS, and Javascript (in that order), the three core languages that run on every Web browser and make up every website.

You can be in www.reddit.com/r/webdev/wi… For more information. This is another set of online courses, tutorials and resource listings for beginners github.com/Michael0x2a…

How do I start making mobile/Android/iOS/Windows Phone apps

You’ll need to learn different programming languages for each type of smartphone.

  • Android applications mainly use Kotlin or Java coding – for more information, you can refer to www.reddit.com/r/androidde…
  • IOS applications use the Objective – C code or Swift – for more information, can be found at www.reddit.com/r/iOSProgra… Or github.com/thomasdenne…
  • Windows Phone applications are coded using C#, Visual Basic or Javascript – for more information, check out www.reddit.com/r/WPDev/

You can also use technologies like Phonegap and Titanium to make apps that run on all three major smartphones – they allow you to write an application once using HTML, CSS, and Javascript, and run the application on any platform.

For more information, you can refer to mobile application development resource list www.reddit.com/r/learnprog…

However, keep in mind that many of the above resources are aimed at people who already have some programming experience. If you’ve never programmed before, you might want to start learning a language that has more resources for beginners. Once you gain some experience and understand the basic concepts behind programming, you will often find it much easier to learn a new language and start learning about mobile development.

How do you automate things

For Windows, there are two specialized programming languages, such as Autohotkey and AutoIt.

Another viable alternative is cross-platform Python www.python.org/, using the Python is easier to build automation and do some boring working automatetheboringstuff.com/

If you want to automate MS-Office, use the built-in programming language Visual Basic for Applications (VBA) www.reddit.com/r/vba dedicated to VBA programming.

What is the best, the best, the best

This article www.reddit.com/r/learnprog… A summary of 150 questions and answers about what is the “best”, including language tools and topics.

Terms and Vocabulary

What are the differences between computer science, computer engineering, software engineering, programming and coding

Computer science (CS), computer engineering (CE), software engineering (SE), programming and coding are all related terms, but are subtly different from each other, which often makes it difficult for beginners to tell them apart.

The first distinction you should make is between CS/CE/SE and programming/coding. CS, CE and SE are all fields of study, and saying “I am studying computer science” would be similar to saying “I am studying chemistry” or “I am studying literature”. Instead, programming and coding are activities – they are things you do. To use metaphors, learning CS/CE/SE is like learning music theory, and learning programming/coding is like learning how to play a specific instrument.

In theory, you can learn one without learning the other, but your experience will be richer if you learn both.

Another difference is that while CS/CE/SE is something you can learn, learning to program is only done through practice. In fact, what most universities and schools will do is formally teach a language to teach the basics of coding, and then focus on teaching CS, CE, and SE, allowing students to learn how to program through practice and homework.

CS vs CE vs SE

You should make the next distinction between CS, CE and SE. In short, despite much overlap, “computer science” is not about computers or science, but more about the field of applied mathematics that deals with the concept of computability. Computer engineering is similar to CS, but tends to focus more on low-level hardware, as is the crossover between computer science and electrical engineering. Finally, software engineering is more about how to build large and complex programs while preventing them from crashing because of some factors, and less about software engineering theory.

Of the three concepts, you can be in www.reddit.com/r/learnprog… Find more details.

Programming and coding

Finally, programming vs coding, the difference between the two terms is small – many people can use them interchangeably. In general, the term “programming” seems to have a more positive meaning than “coding.” If you say “I’m a programmer”, you have a level of expertise — this means you can not only write code, but also have a solid understanding of fundamentals and theories, how to communicate with customers and work with others.

On the other hand, saying “I’m a coder” usually means you’re focused on writing code and less on anything else.

However, the difference here is still small – in most cases, you can use the two terms interchangeably.

What is the difference between C, C ++, Objective-C and C #

C is the smallest and earliest of these languages. It was originally created as a system programming language for the Unix operating system and is still widely used today for application programming.

C++ is a very popular general-purpose programming language, originally based on C. With a few tweaks, most C code can compile to C++ code. But C++ adds a number of language features that dramatically change the way the language is used compared to the way C is used. Writing C-style code in C++ is generally considered bad practice.

Objective-c is a strict superset of C, which means that all valid C code is also valid Objective-C code. Objective-c is not as popular as C or C++ and is currently used in development for Apple OS X and iOS platforms.

C# is not based on C in any technical sense. C# is a general-purpose language designed by Microsoft that is similar to Java in many ways. It can be compiled into an intermediate form to run in a virtual machine, unlike the previous three languages, which were all compiled into native machine code. Although C# borrots syntactic elements from C and C++ (as Java does), it has no real technical relationship to those languages.

What’s the difference between Java and JavaScript

Java is often confused with JavaScript, but the two languages are not related in any technical sense except by name. They share some syntax, because they are all influenced by C, and that’s it. Wikipedia explains why exist well name similarity: en.wikipedia.org/wiki/JavaSc…

Tools and version control

What is source/version/version control? Should I use it

Software development is a collaborative skill. A version control system (VCS) is a tool that tracks code changes, allowing you to perform handy tasks like undoing coding errors and see how your code changes over time. Modern distributed version control systems (DVCS) also make it easy for you to use the same code as other programmers. You should definitely use version control!

By far the most popular is Git.

You can read the introduction to git cgordini.blogspot.com/2013/05/git… And the free Gitbok git-scm.com/book/en/v2 to use Git.

Of course Liao Xuefeng git explanation is also very good www.liaoxuefeng.com/wiki/896043…

What is an IDE and should I use it

An IDE is an integrated development environment, which is a GUI application that typically includes a text editor with code completion and syntax highlighting, some project management capabilities, a compiler or interpreter (configurable or included), and many other nifty features for writing. Running and testing code is easier. The alternative to using an IDE is to automate what the IDE does for you. This approach requires programmers to use separate tools and have a deeper understanding of the development process.

For starters, both approaches are controversial:

  • Using an IDE means you don’t have to know much about the development process, use a command line interface, and configure these tools to work. Ides provide a quick way to build code and even write some code for you!
  • On the other hand, working from the command line means that you don’t have to adapt to the IDE designer’s way of thinking, and because there are fewer development processes hidden, you can better understand the software build process.

Using an IDE rather than a separate tool is usually a matter of personal preference (unless of course your employer/school needs to use a specific development environment). If you have never used an IDE before, download a popular IDE and make changes. Also, if you’ve never used vim or compiled code on the command line, give it a try and see if you like it.

Common IDE and lightweight text editor can be found in www.reddit.com/r/learnprog… Found.

Computers and operating systems

Which operating system should I use

One problem that many beginners often encounter is which operating system they should use – Windows, Mac or Linux.

Frankly, it doesn’t matter – in this day and age, the quality and maturity of the tools available to you will be roughly the same on all platforms, and any well-established programming language will be available on all operating systems.

That being said, you should eventually have some level of familiarity with all three operating systems so you don’t get confused when you encounter a new one.

There are two exceptions to this rule

  • If you want to develop on a Windows platform, select Windows Computer
  • If you want to develop on Mac or iOS, get a Mac

Some Microsoft and.NET tools are still focused on Windows.

While Mac and iOS applications can be developed on any computer, Xcode must be used on the Mac machine to compile the application and submit it to the App store.

Finally, it’s also worth noting that if I have a Windows computer, it would be very easy to set up a Linux virtual machine that I can use without worrying about it interfering with my existing Windows operating system.

What kind of COMPUTER/laptop should I choose

Again, it doesn’t matter – any mid-range laptop or computer will do. If you already own a computer or laptop, you should use it instead of buying a new computer. Basically, you can learn to program, and you can write complex and interesting programs on almost any computer in existence.

However, if you happen to need to buy a new computer and want to use it for programming, prioritize CPU, RAM, and hard disk drives. If possible, try to obtain a computer with the following specifications or higher:

  • Intel I5 CPU (3.0+ GHz) +
  • More than 4 GB of RAM
  • 200 + GB hard disk
  • (Optional) Solid state drive

If you can upgrade, prioritize getting a better CPU and more RAM over getting a bigger hard drive – a more powerful CPU always helps.

If you want to buy a desktop computer, these specifications are really the only relevant specifications. If you want portability, buy a laptop and make sure it comes with a screen and keyboard big enough to program easily. However, portable computers strike a fine balance between usability and portability:

  • The bigger the screen, the shorter the battery life (but the longer the battery life if you’re willing to set a dimmer for screen brightness)
  • The smaller the screen, the less room you can fit in, and the more flipping you have to do between Windows/desktops.
  • Ideally, you should be able to use both Windows comfortably
  • The bigger the laptop, the heavier it is, and the heavier it is to carry around

Also ask yourself how you plan to use your laptop. Do you plan to sit at your desk all day or carry it around campus?

If you’re particularly interested in machine learning, natural language processing, or graphics (including game development), you might want to consider buying a GPU-equipped machine. Although you don’t need a GPU to perform any of these operations, you can usually make the most of your GPU by writing code carefully to speed up your code.

If you’re interested in machine learning or NLP, you can rent a machine with a GPU in the cloud for a relatively inexpensive price through Services like Amazon Web Services (AWS) or Google Compute Engine (GCE).

Career and Work

Do programmers make money

This varies from person to person, now 360 line to line programmers, resulting in the industry’s threshold is getting lower and lower, so the average programmer’s salary level is similar, the Internet’s salary compared to the traditional industry will be much higher, but the Internet’s requirements for programmers are relatively high.

How to get into the industry and get an entry level job

Assuming you already know a language and know how to code, there are two main stages to getting an entry-level job. Right

  • Create a resume that will get you invited for an interview
  • Through the interview

These two phases require some different strategies.

Stage 1: Build a compelling resume

In phase 1, your goal is to steadily start adding items to your resume that will help you stand out (or at least compare you to other applicants who are applying).

One particularly useful strategy for this is to start building a portfolio of projects to show off to potential employers.

  • Independent sideline
  • Volunteer work, such as building websites for nonprofit organizations
  • Class project
  • The work you do in your job, finding ways to integrate programming
  • Research independent projects, or research you’ve done in your school lab
  • Past jobs or internship programs

Having a strong portfolio of projects enables employers to successfully use programming languages, libraries, and technologies to solve problems and gives them a way to assess your skill level more accurately.

Some considerations

  • Your project doesn’t have to be gorgeous. Recruiters with a technical background will understand that not all interesting projects have or need a beautiful interface. More importantly, you can describe what you do, what you are responsible for, to show the complexity of what you do

    Perhaps the main exception is if you are applying for a position that requires some visual ability. For example, if you’re applying for a front-end Web designer role, it helps to have projects that show you can build a beautiful and usable website.

  • Of course, working on projects isn’t the only thing you can do. Things like getting a degree (preferably in a subject related to computer science) will certainly help, too.

  • Some also attend boot camps in part to speed up the process of building a relevant resume/portfolio. Just be sure to do your research before going to boot camp: some are great, some are outright scams. This one needs to be screened by you.

Stage 2: Pass the interview

This is where you and the interviewer get into a real fight! However, there are two main types of interviews in China: traditional software industry and Internet companies. General traditional software companies or some Internet companies will ask some interview questions about whether you can get started quickly to solve problems, while some of the top Internet companies in China prefer to focus on the in-depth use of basic knowledge and framework

Some common interview prototypes you may encounter include:

  • Give you some form of coding challenge, usually about data structures and algorithms, commonly known asBrush the topic. You can do this on Niuke or LeetCode.
  • Ask questions related to the specific position you are interviewing for – front-end web design, network security, middleware principles, JVM principles, in-depth use of frameworks, etc
  • You are asked to try to design the architecture for some larger projects
  • Ask about projects listed on your resume (sometimes, usually sometimes dig deep into a single project)
  • Just talking about technology in general

conclusion

This article I introduce you to a small white new content content step by step how to learn programming, to advanced programmers will experience what steps, the list for you very much high quality programming resources, as well as learn from China’s confused, how to improve, in the final for your explains some common problems in programming, which need pay attention to resume, etc.

This article serves as an instruction manual that you can follow step by step to plan your programming career. Finally, I wish you to become a great bull as soon as possible.

If you have any questions or questions, you can add my wechat lX252279279, which is free of course!

I have uploaded six PDFS by myself, and the spread has exceeded 10W + on the Internet. After searching the public account of “Programmer Cxuan” on wechat, I reply to CXuan on the background and get all PDFS. These PDFS are as follows

Six PDF links