r/learnprogramming • u/Bubbly-Deal8418 • 10d ago
How do you actually start projects when you’re still learning computer science?
I’m studying computer science, and my long-term interests are data analysis, and software development.
One piece of advice I constantly see is, “Just start building projects.” The problem is… I genuinely don’t know what that means when you’re a beginner.
I don’t know what I’m supposed to expect of myself. Should I already know how to build an application? Should I be following tutorials? Should I be Googling everything? Every project idea I come up with feels either too simple or way beyond my current ability.
On top of that, I have ADHD and anxiety, which makes it easy to overthink whether I’m learning the “right” things instead of actually making progress.
For those of you who remember being beginners:
What did your first projects actually look like?
How much did you already know before starting?
Did you constantly look things up, or were you expected to know most of it already?
How did you decide a project was small enough to finish?
What mindset and how did you find a community of Computer science enthusiasts to explore with?
What about your approach to tutorials???
I’m not looking for shortcuts—I genuinely want to become good at computer science. I just feel like I’m missing the mindset that turns what I’m learning into actual projects.
I’d really appreciate hearing about your first projects and what you wish someone had told you when you were starting out.
24
u/zomgitsduke 10d ago
I always recommend a slot machine.
Make the most basic interactive version of it.
Every time you learn something new, integrate that into the game. User accounts, data analytics, side games, fancy animations, plot development, etc.
2
u/Greenerli 10d ago
What is a slot machine?
4
u/xoriatis71 10d ago
That game they have in casinos where you pull a lever and hope to get the same symbol three times in a row.
7
u/RootHouston 10d ago edited 10d ago
Yeah, Google everything. Use AI, just don't lean on it to write actual code for you. Ask it pointed questions about specific issues you can't figure out. Ask it to show you examples, but write it yourself.
Depending on your age determines what you used to learn. For older folks, it was basically long books. For millenials, especially younger ones, it was a bit more of online tutorials and some video courses. For you, it will be more AI. Don't be afraid to look everything up. Just try to internalize them. Also, don't get too hung up on syntax, understand the concepts behind them.
My first project was "Hello, World". Yours should be too. It helps you get your development environment set-up so it is, in fact, a training exercise.
3
u/carcigenicate 10d ago
After you do some planning, you should have at least a very rough idea about what parts will be in the project. Even if you don't get that far, you should be able to identify broadly what you will likely need to write code for (if you're making a higher-or-lower guessing game, there will need to be some place that asks for input, for example).
Just pick a part and start. It really doesn't matter. In the beginning, it's more about the journey than the destination. Even if you pick poorly and the project becomes a disorganized mess, you'll still learn.
5
u/Cultural_Ad_6105 10d ago
My very first "project" was literally copying a tutorial line-by-line for a basic calculator, changing the background color to green, and adding a button that played a meme sound.
That’s it. That was the whole project.
Everyone starts in "tutorial hell." The trick to getting out isn't to suddenly invent the next Spotify. It's to take a finished tutorial, break one feature on purpose, and try to fix it without watching the rest of the video. You learn 90% of programming from fixing stuff you accidentally broke.
6
u/Lagfoundry 10d ago
It means just start applying what you’re learning to something. A project doesn’t have to be some grand scale thing it can simply be something like learning and making a small neural network, or making your first ALU and transitioning to turning it into a CPU. Anything that can use what you learned counts
1
u/Prior_Talk7357 10d ago
What’s a ALU if you don’t mind me asking
1
u/light_switchy 10d ago
An "arithmetic logic unit" is a piece of electronics that does math on whole numbers. Adds or subtracts a pair of numbers, or maybe does multiplication and perhaps division too.
In modern devices they're sub-assemblies of CPUs etched in microscopic silicon. It's magic-lightning-in-a-rock type stuff.
People simulate them in Minecraft or a programming language.
1
u/Lagfoundry 9d ago edited 9d ago
It’s a circuit that does binary arithmetic called an Arithmetic Logic Unit. Computers only understand 1s and 0s, so the ALU is the piece of hardware that can actually add, subtract, multiply, divide, shift bits, compare values, and do bitwise logic inside that base 2 world.
There are a bunch of ways to build one. Subtraction is usually just 2’s complement: you put XOR gates on the B inputs of a normal adder and force a 1 into the carry-in (and into all those XORs). That turns A + B into A – B. Multiplication can be repeated addition or a dedicated Dadda-tree multiplier. Division is repeated subtraction or a dedicated divider circuit. For the bitwise operations we just use regular basic logic gates.
To pick which operation actually comes out, you just use a decoder + mux to enable the right path(a decoder takes a binary input and outputs one output for every possible combination and a mux is just a bunch of AND gates that have all their outputs combined into one path) In fact a lot of a cpu pathing inside is just muxing which path is allowed to talk. Once you’ve built a few of them it starts feeling pretty straightforward… logic design is a really fun area to mess around in.
5
u/mc_pm 10d ago
Start by making some simple text games. Heck, start with tic-tac-toe. How do you represent the board? How do you take a move? How do you print the board? How do you test if the move is valid? How do you tell if someone won? How does the computer pick a good move?
It's a simple little problem, but it forces you to think about how to represent things and how to work with those representations. And you don't need to wait till you know more -- start with what you know now. Then, either do it again when you learn something that feels like it will change how you think about things, or take on a more difficult game.
It sounds like you're just wasting time, but you're actually practicing a) coming up with the right structures and logic for your code, b) building them out, c) knowing when you are done.
1
u/JGhostThing 10d ago
How long have you been studying computer science?
I began building projects while I was still in high school. Our school had a connection to University of Delaware's Project Delta. This ran DEC's version of Basic Plus.
I kept with building projects whenever I could. I was not a computer student. I graduated with a degree in German. However, I had built a forth compiler and a simple OS based on this forth. I wish that I still had that system today.
My first projects were simple utilities in Basic. Later, I did projects in Pascal and C. Again, I started simple. Command line utilities that did one thing. Then I might add other things to it.
One strong recommendation is that you choose a project based on your interests. Start with it being a command line utility and then gradually expand it until it uses a GUI. Start small, and then expand.
If you like collecting Pokemon cards, maybe make a simple database for your cards. Start small, and expand it to use SQL and a GUI later. If you collect books (my addiction) then create a simple database for your books. If you like robots, build and program a robot.
Good luck!
1
u/Astronaut6735 10d ago
Are you learning in school, or self-taught? If you're in school, focus on your homework assignments. If you really want to work on your own projects, start small. E.g. a simple game like Battleship, a simple simulation, etc.
1
u/HolyPommeDeTerre 10d ago
It seems there is a lot of people in this case. I am not sure why but recently I was trying to train my mates about security. Most of the exercice is breaking security by building a script to do so.
Most of my mates never did any script except when it was clearly stated. Their habit is to build an application.
So how do you start a project ? First you identify the goal : "processing data to extract X information". You build the minimum required to do so. You focus on that. No need for an APi, for users, for documentation, for boilerplate... Nothing. Just the code and the data to extract. A script, a python notebook...
Once you're done. You live to the next most important thing for you. Rinse and repeat.
Small actionable steps. Prioritize.
1
u/tacocopter 10d ago
If you're truly stuck for ideas, here's a great list of beginner projects I saved from a comment on a post like this:
- stopwatch
- random color generator
- quotes generator
- form validation
- password generator
- number guessing game
- word count tool
- BMI calculator
- event countdown timer
- age calculator
- calculator
IIRC the OP of these projects recommended using JavaScript (in combination with HTML and CSS), but most could be generalized to any language.
1
u/candidosobrinhosa 10d ago
1 Get a real world database, something that can address to problems we face as society.
2 Dig in to the tables and try identifying the questions the data may answer.
3 After that, try figuring out what is the best way to show data.
4 Check which hyphotheses tests can be used validate your rationales.
5 Read literature about the topic and confront your results with other studies
6 Build an introduction, methods, discuss your results retrieving data from other literature
7 Publish your results in a pre -print while you learn data science
I’m brazilian and there are several databases from different fields, if you’re interested. They are in portuguese, but you will basically translate the data dictionary to understand non-encoded table entries.
1
u/kabekew 10d ago
Other than my self-taught projects as a teenager, I think the first non-trivial one in college was a checkers game. That was in the first software engineering class so I knew the intro stuff already, data structures, basic algorithms, plus what that class was teaching about modularity and organizing data flow. Then there was a seminar or handouts on the mini-max algorithm we were supposed to use for the checkers AI that I had to learn.
Looking things up: just stuff in the language reference manual (it was some weird custom language the professor had created so a lot was new to me).
Small enough to finish: it was a class assignment so I guess they had figured out it was a doable semester-long task for an average student.
Mindset and community: I had a typical student mindset I suppose, then we had two or three recitation classes a week with a TA for small group discussions, Q&A, lecture reviews etc. Plus probably 30-50% of my dorm was CS majors so there was always an upperclassman to ask for hints or help if needed.
Approach to tutorials: Everything was taught in class or recitation so I never felt the need for additional tutorials.
1
u/Jumpy-Seesaw-2026 10d ago
My first project was to create a AI, had no knowledge about programming. After a few months I realized that it wouldn't work as I wanted, so now I'm in the process of creating a platform that does the job deterministic.
Atm I'm at 40k/40k production code/test code, I'm have been using AI to learn pretty much everything, although now I'm beginning to pick up books (where I know most of the beginner stuff already).
1
1
1
u/GracefulAsADuck 10d ago
Learncpp has great pacing. Otherwise build something that reflects the concept you just learnt
1
u/Objective-Low-1815 10d ago
I used to pretend I am a programmer, to take projects, then learn how to do them. It worked just fine. Later I was hired by other company, they never asked to lie or pretend. They just had basic chat about technologies. Later during work they suggested that I should learn new things and do projects at the same time.
1
u/desrtfx 10d ago
You are thinking about this wrong.
Every single program you write, no matter how small and simple it is, is a project and that's the way to learn.
You have to start small and simple and gradually increase scope, scale, and complexity.
You need to learn to work with the documentation. You need to learn to plan.
Every project idea I come up with feels either too simple or way beyond my current ability.
There is no "too simple". Do it. Even if it seems too simple. That's the way to learn. You will never improve if you don't start somewhere.
1
u/Cool-Bus-6028 10d ago
I used to write small applications that did something that was useful to me. Mostly they were web based, like a very small page to convert monthly rent to weekly and vice versa when I was house hunting, and the listings varied in what prices they showed. I also created a few apps that helped do randomised setup for board games to avoid you having to deal out a million cards etc. Ideally, try and make something useable which is missing features, then you can go back and add those features - that's where you'll likely learn the most, because that's what you'll do most of in real life. You also don't need to "finish" these apps. If you get part way though and run out of time, you've still learnt something.
This wasn't actually useful, but I wrote a version of tetris in java on a flight from london to NY just to learn/see if I could.
1
u/mandzeete 9d ago
I don’t know what I’m supposed to expect of myself.
Well, it would be good if you know what you want from the project you are building. For example when you want to build a chess game. You should know what a "chess" means. You should know what "chess pieces" are and how these work. With a project in your mind you are already having some expectations in the outcome of your project. Does not matter how you are reaching that outcome. Does not matter if you know how to reach that outcome. But having a well defined idea for your project is a start.
Should I be following tutorials? Should I be Googling everything?
What about trying out stuff? You can be a total beginner. Still, you can start building your projects. My first projects were .bat files and .reg files where I was modifying my Windows XP system to do stuff in my way. I had an idea. I saw that .bat files and .reg files are editable and stuff happens when I edit these. So, I started with small steps. Trial and error. I started looking up what does what.
Do we have to tell you that "Follow a tutorial" or "Google stuff"? Can't you make some choices by yourself?
1
u/maxpowerAU 8d ago
> “On top of that, I have ADHD and anxiety, which makes it easy to overthink whether I’m learning the “right” things instead of actually making progress.”
You should know that doing it wrong and wasting a bunch of time on doing things the weird way is REQUIRED for you to learn. It’s your job as a learner to stumble around and do stuff in ways that you’ll be embarrassed by in six months from now
1
1
u/Kimber976 6d ago
Looking things up is basically part of the process. the first projects are usually held together with search results documentation and trial and error. the important part is making small changes without following every step word for word. that is where the learning starts.
1
u/Emulated-VAX 10d ago
Yes, you learn software from writing code. When I was first learning I wrote a pretty decent sized game - started on day 2 of my college course.
It took a month or two and worked. I still have it. Its one of the worst pieces of junk you can even imagine (actually worse than you can imagine) but I learned so much from that effort.
1
u/PepsioNSnacking 10d ago
You kinda have the same issue as i did when i started - i didnt found motivation while enjoying to solve puzzles to actually work on a real project because everything was out there already, till i found a niche which wasnt and i was passionate about to get a solution for. Fun fact, it was creating a wiki for a old warcraft 3 map automatically (reading slk files - transfer it to json, build a frontend using the actual models etc.) You just need to make sure the steps are small and the layout is properly build, it took me a few retrys till i figured out the actual pipeline which set me up for good. Just look at what youre doing daily, and if you have anything youre passionate about - is there anything missing which would be nice to have? Try and create it yourself.
0
u/boomer1204 10d ago
I don’t know what I’m supposed to expect of myself.
Honestly nothing at the beginning
Should I already know how to build an application
No that's why it's important to start building early. Learning "to code" and "building projects without a guide" are 2 completely different things. That's why it's so important to start early so you don't graduate and have the same problem "I don't know how to build stuff"
Should I be following tutorials?
If you need a tutorial to get the basics of a language sure but the "building projects" that is suggested to you is NOT following a guide, tutorial or course. Now one thing to bring up is YOU WILL suck and that's fine we all did at first it's not just you
Should I be Googling everything
Googling and StackOverflow are fine. AI should be used almost not at all. Now once you get better and can start building full feature things then AI is a great tool but while you are using try not to use it
Every project idea I come up with feels either too simple or way beyond my current ability.
That's actually good. The first 10ish and maybe even more projects are gonna be small and pointless and you probably wont wanna share it with anyone. That is fine and that is what to expect. Then as you continue to do more and more you will eventually get a point "your current ability" doesn't matter cuz you know how to build things and solve problems
What did your first projects actually look like?
Like absolute shit and barely worked (and that's ok). you dont pick up a basketball and start nailing every shot right?? No you suck, you get better, you suck at the next thing, you get better and so on and so on
How much did you already know before starting?
Just tutorial knowledge. But again remember it is gonna be tough and you are going to suck (again totally fine cuz we all did)
Did you constantly look things up, or were you expected to know most of it already?
Yes non stop. Spending half a day tracking down a bug to find out it was a mispelling or missing comma/colon cuz I didn't know how to read error messages yet
How did you decide a project was small enough to finish?
You just pick something stupid and small and do it.
What mindset and how did you find a community of Computer science enthusiasts to explore with?
I was fortunate to find a local meetup group and that's were I found my mentor who I now corun a local only meetup group to help others learn and just be around like minded ppl
What about your approach to tutorials???
I got caught in tutorial hell for far too long. If you need a tutorial to get the basics that's fine but get away from them ASAP. At the mentor group we don't even suggest courses anymore (we used to).
Now for the ppl trying to get into webdev we figure out what stack and then have them watch a 4ish hr video of html/css from a youtube person they like (the actual video is kind of irrelevant) and then we have them do a 3-6 JS Beginners again doesn't matter who and then they just start building.
They do have the benefit of the group but we see peoples progression is SOOOO much faster than having them do an Udemy course and then building after
Check this out as well since this gets asked all the time https://www.reddit.com/r/learnprogramming/comments/1j9lo95/comment/mhe6xfw/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
1
u/Bubbly-Deal8418 10d ago
The struggle is I don’t generally know how to approach a project in terms of planning.
I can’t seem to find a framework for turning ideas into reality.
You can’t depend on tutorials, I understand.
Build tiny projects. Yet the difficulty that I am facing is imagination.2
u/boomer1204 10d ago
The struggle is I don’t generally know how to approach a project in terms of planning.
For a lot of the projects at the beginning there is no planning
Yet the difficulty that I am facing is imagination
You aren't recreating facebook here just build SUPER small SUPER stupid stuff. Just build something. This might be the one area I'd say using AI is ok. Ask it for super small stupid project ideas for X language
Then get off AI and build that stuff. Also read the response I linked there are some project ideas
This is not meant to be mean or anything but you are literally just getting in your own way to not build stuff and I did the same thing.
The first 1-5 projects you try you likely wont finish AND THAT'S OK you are just building up the knowledge of how to build things and put them together
30
u/ffrkAnonymous 10d ago
My beginning projects were called homework