Advice for beginners from a programming teacherI taught programming to absolute beginners for several years, and even developed my own curriculum that has worked well for absolute beginners. I’ve seen a lot of vague and questionable advice here, so I wanted to share what I’ve learned from my teaching experience in a short and direct post.
Start with an easy language - at the end of the day, it doesn’t really matter what language you start with. But from my teaching experience, it’s better to avoid heavy languages like Java and C#, because they force you to learn the nuances of object-oriented programming, which beginners shouldn’t be bothered with. Start with a lightweight language like JavaScript or Python. I’ve seen people advising beginners to pick a language that is popular in job postings to boost their potential salary. This is bad advice, because most respectable tech companies don’t care what languages you know, as long as you have mastered the fundamentals in at least one language. Once I was offered a senior position using Ruby, and I had never learned Ruby.
Don’t use frameworks at the start - when learning programming fundamentals, avoid frameworks. Beginners have a hard enough time with simple code. Frameworks will overwhelm you with complicated code. Frameworks also hide many details that beginners should learn to master the fundamentals. I’ve seen people advising beginners to pick a popular framework to make themselves more hirable. This is bad advice, because most respectable tech companies assume you can easily learn a new framework on the job, as long as you have mastered the fundamentals. Multiple times I was offered a senior position using Angular, and I had never learned Angular. And multiple times I was offered a senior position using React, and I had never learned React.
Don’t worry about front end vs back end at the start - I’ve seen people advising beginners to decide whether they want to pursue front-end or back-end development. This is bad advice, because beginners don’t even know what programming is yet, let alone the nuances of front end vs back end. You should focus on learning programming fundamentals, which isn’t really front end or back end. Once you have a few years of experience and have done both front-end and back-end development, then you can decide which you prefer.
Don’t passively follow tutorials - avoid simply watching or reading tutorials without writing your own code. You will need to follow a tutorial to some degree to learn new syntax or a new concept, but at some point, you should be writing your own code that is not in the tutorial. Most of your actual learning will be from writing your own code.
Don’t come up with your own projects at the start - I’ve seen people advising beginners to come up with projects that seem interesting to them, or solve a problem that they come across in their own lives. This is bad advice, because interesting projects require complex code, and beginners should start by writing simple code. That means you’ll start by making something boring like a unit converter program. But that’s how you learn. And you shouldn’t try to come up with your own simple programs to make, because beginners don’t have enough knowledge to know what is simple and what is complex. Instead you should follow a curriculum that includes a sorted list of projects interleaved with tutorials and exercises.
Don’t read documentation at the start - I’ve seen people advising beginners to learn by reading documentation. This is bad advice, because first of all, most documentation by itself does not explicitly guide the reader on how to use something, but is merely a reference, and beginners need explicit guidance. And secondly, knowing how to read documentation is a skill, and beginners haven’t developed that skill yet. Experienced programmers tend to take this skill for granted, but from my teaching experience, I can confidently say that beginners are clueless at reading documentation. Toward the end of my curriculum, I have a video where I explain in detail how to read an MDN page.
Don’t set up a development environment at the start - I’ve seen popular curriculums start by having beginners set up a development environment on their computer, and then go into the nuances of Git and other command line tools. The idea is that they want beginners to use the same tools that professional programmers use. I disagree with this approach. First of all, beginners don’t even know if they like programming yet, so a curriculum should start by having beginners do actual programming as soon as possible to test the waters. Secondly, setting up a development environment is very boring, so starting with that might turn would-be programmers away. Finally, setting up a development environment can often lead to configuration errors, which beginners will have no idea how to solve. I recommend using an online code editor like Replit where everything is pretty much set up already so that you can start programming right away.
Don’t contribute to open source at the start - I’ve seen people advising beginners to learn by contributing to an open source project. This is bad advice for the same reason that coming up with your own projects is bad advice. Open source code is complex, and beginners should start by writing simple code. And contributing to an open source project requires understanding other people’s code. Beginners can hardly understand their own code, so there’s little chance that they will understand somebody else’s code. Even experienced programmers struggle with this.
Don’t grind LeetCode - LeetCode is a website with thousands of algorithmic programming problems, and “grinding LeetCode” means to solve hundreds of these problems to prepare for interviews at elite tech companies. The idea is that the only way to get a software developer job at an elite tech company is to endlessly solve LeetCode problems to pass the interview. This is a myth that is propelled by inexperienced and lousy programmers who have never worked on anything complex or interesting. They view tech interviews as academic puzzles that are divorced from real-world software development. But this is simply untrue because complex and interesting programs require algorithmic programming. That being said, beginners shouldn’t do LeetCode problems, because even the easiest LeetCode problem is too advanced for a beginner. And by the time you have mastered the fundamentals by making many complex and interesting projects, you shouldn’t need to grind LeetCode to pass an interview. It’s fine to solve LeetCode problems for extra practice, and to challenge yourself, but it shouldn’t be viewed as a gateway to elite tech companies. Once I was offered a software developer position at Microsoft, and I had never looked at a LeetCode problem.
https://www.reddit.com/r/learnprogramming/c...amming_teacher/ჩემი აზრით არაჩვეულებრივი რჩევებია
Es gibt keinen Gott und Dirac ist sein Prophet. (c) Pauli