How can I develop general (and transferable) programming skills?
Posted by UnscrewMyLife@reddit | learnprogramming | View on Reddit | 7 comments
Hi everyone!
I'm new to programming and drawn to the field because I'm fascinated by how programmers can envision ideas and bring them to life through code. However, I'm struggling with two main challenges that are holding me back.
First, I'm having trouble with the fundamentals of problem-solving and breaking down complex tasks. Despite watching tutorials, reading forums, and attempting LeetCode problems, everything feels overwhelming. I suspect I need to start even more basic than most beginners - perhaps at what I'd call a "level -1." To address this, I'm planning to work with a tutor who can help me build a solid foundation before I try to learn independently.
Second, I'm unsure about which programming specialization to pursue. This uncertainty stems partly from my lack of confidence, but I now understand that working on personal projects is crucial for growth. Previously, I relied solely on LeetCode and books like "How to Think Like a Programmer" by Anton Spraul, but this community has shown me these should only supplement hands-on practice, not replace it.
My main question is: Can I develop core programming skills that would transfer to any specialization I eventually choose - whether that's web development, DevOps, cloud engineering, or something else? Would it be better to pick a beginner-friendly area like web development to start with, or are there specific foundational projects and practices that would serve me well regardless of my eventual path?
I'm open to any guidance you can offer, and I plan to utilize resources like tutoring, online communities, and Discord servers to support my learning journey.
ToThePillory@reddit
Found the problem.
Programming is something you *do*, not something you read about or watch on TV.
Start at the start, can you make programs? Even small ones, say if I was to ask you make a program to count the number of words in a text file, could you do it?
AlSweigart@reddit
This is a common misconception. There is no "prepare to prepare" step. You just have to start learning and writing code. Just remember that progress is not always linear and there will be setbacks. But if you never fail or mess up, you aren't pushing yourself hard enough.
EricCarver@reddit
Seems like a Harvard cs50 course might be perfect for you, and is free. It lays out a lot of groundwork.
UnscrewMyLife@reddit (OP)
thanks for the recommendation
KrakenOfLakeZurich@reddit
Most LeetCode problems are more „math puzzles in disguise“ than representing actual programming challenges found in the „real world“.
Don’t stress about that too much. Instead, find yourself a small/easy project to do. Something that keeps you entertained. Like a primitive jump n run game or Tetris clone.
You‘ll learn by encountering problems and solving them.
Also, don’t ignore AI chatbots. I‘m not suggesting that you let the AI generate the code for you. But you can use it as a personal coach, which you can ask questions and let it explain concepts to you, ask about potential approaches to a problem, etc.
kirbyking101@reddit
If you’re just learning to program (you’re still learning fundamentals like loops and conditionals and basic data structures like lists/arrays), Leetcode may be too advanced rn. Leetcode kinda assumes that you can already make programs to accomplish simple tasks, so it tests you with either more complex tasks or requires you to think of more efficient ways to accomplish those tasks. Especially if you haven’t learned Data Structures and Algorithms yet, maybe hold off on the Leetcode.
Bubbly-Swan6275@reddit
Tutoring is a waste imo. Just read textbooks. Discord servers are good. The easiest way is to get a BS CS.
Read textbooks on these subjects (avoid unnecessarily difficult ones like Structure and Interpretation of Computer Programs/etc.):
Intro to Programming, Object-Oriented Programming, Discrete Math, Data Structures & Algorithms, Computer Architecture, Operating Systems, Networking, Databases, Distributed Systems.
Then do one course or textbook on full stack web development and make 1-2 full stack projects.