How are certain project ideas considered "beginner" tier?
Posted by HiddenReader2020@reddit | learnprogramming | View on Reddit | 27 comments
So I was looking for some project ideas in order to better hone my programming skills, but when I was taking a look at some beginner ones, I rant into stuff like comparing PDFs or sending emails via, say, Python, a voice and a screen recorder, scraping github and Twitter posts, and I was like "...THESE are considered beginner level projects"? And then people suggest stuff that does something similar, or automates some tasks, and I'm still baffled as to how are these projects and other ones are considered 'beginner'.
To make matters worse, some of these are put in the same category as a guess the number game, or a hangman game, and that REALLY put me into a headspin.
So what's the deal with that? Am I so low-skill leveled that even these are too much for me? Or are they just being suggested from those that are perhaps overestimating people's skills?
LogicalPack7748@reddit
“Beginner” means beginner programmer, not beginner project. A number-guessing game and a PDF-comparing script use the same core skills: variables, loops, conditionals, file I/O, and calling a library someone else wrote.
The PDF tool feels advanced, but it’s really just import some_library and calling a few functions. The hard part is knowing the library exists, not the coding.
What makes a project not beginner is stuff like designing algorithms, concurrency, or system architecture. None of these need that.
You’re not low-skill, you’re just mistaking “uses real-world tools” for “difficult.” Pick one that sounds fun and build it.
HiddenReader2020@reddit (OP)
But how would I know the library exists in the first place? Like, okay, from my perspective, I’m going at these projects like I know enough to do them without having to learn anything else. For example, regarding the PDF comparing project, and it apparently requiring a library, I’d have to learn about the library first before tackling the project. If I just dived into the project and learned that I needed a library to even be able to make the project in the first place, I consider it “too difficult”. In other words, for me, doing projects is executing what I’ve learned. I shouldn’t have to learn anything new if I want to do a project from scratch.
Does that make any sense?
ReefNixon@reddit
One of my profs used to say that the most important skill in programming is recognising the inevitable result of progress, which is to say if you keep getting closer, eventually you have no choice but to get there.
When you think about trying one of these beginner projects, what's the first actual problem you face? No matter what it is, solve that, then move on to the next one. The reason these are great beginner projects is because they force you into the mindset that programming requires, which is recognising that every problem is actually several smaller problems. Abstract holistic solutions to those are the reward for your 10,000 hours rather than the barrier to entry.
meong-oren@reddit
If by 'comparing PDF' means telling if two pdf file are the same or not, that's actually easy
hashlib.md5(open('file1.pdf','rb').read()).hexdigest() == hashlib.md5(open('file2.pdf','rb').read()).hexdigest()there you have itarcum42@reddit
Some of them are probably overestimating what a beginners skills are, but also sometimes a lot of the heavy lifting is going to be done by libraries. Playing with using the "requests" and "beautifulsoup" libraries to scrape things from websites wouldn't be too bad, as long as it's not things you have to log into the website for.
AliceInMyDreams@reddit
Having made a bot for a certain social media platform that logged using a regular user account rather than a bot account (for fun, not to spam), beating captchas isn't too bad if you're ok with including a human in the loop (so the bot or scrapper forwards the captcha to the human user and asks for the solution). I know modern captchas are supposed to look at mouse movements on the page and things like that, but this surprisingly did not prove to be much of an issue despite the bot ip being from a server provider and the social media platform using a common captcha solution (can't remember if it was re or hcaptcha). I did use selenium to somewhat mimick mouse movements, but only in the most rudimentary way, and I'm not sure even that was required.
So scaling would not be easy, but for a for fun project it's very doable.
(All this said don't break tos kids.)
SevenFootHobbit@reddit
Also, I think getting someone used to using the requests library (or whatever you'd use in your chosen language) relatively early on really opens the door for things people can do. It's basically like connecting the family PC to the internet for the first time, for anyone old enough to remember when that meant something. And honestly, if someone is comfortable with the concept of functions and dictionaries, they're pretty much ready to take it on.
aanzeijar@reddit
Beginner level code != beginner level projects != beginner level algorithms.
My 2 cents here are:
Absolute beginners should not be trying to code up full projects and instead solve selected assignments to teach them certain concepts. That's much more efficient then letting them hack away at the boilerplate necessary to create full projects.
If you're at the stage where you should build full projects, it's still a question of what to do by yourself, and what to do with library. If the comparing pdf project essentially consist of strapping together three libraries in 60 lines of code, then yeah, that can be a beginner project.
On an algorithmic level though I agree with you, none of these are close to beginner level. I'm more in the camp of teaching people the algorithmic side as well, so I have my trainees implement common library functionality just for them to see what goes into it. But just knowing how to strap together some standard functionality is also a valuable skill to have because it's surprisingly often what customers want and need.
high_throughput@reddit
Maybe you haven't had much exposure to libraries, and therefore think of these things as more difficult than they are.
Like, here's the example straight from the Python docs for how to send an email. It's about 9 lines of which 5 directly relates to composing the message:
HiddenReader2020@reddit (OP)
Yeah, it’s true that my exposure to libraries is near-nonexistent. Any…gentle ways of resolving that?
high_throughput@reddit
Instead of writing something off as too difficult, try looking into it and see what it would take and how far you could get.
If you never fail at a project you're aiming too low, and worst case you learn new stuff.
parazoid77@reddit
Try these beginner projects
jameyiguess@reddit
It's a context issue. If I were asked for a beginner PROJECT, I might suggest comparing PDFs or even a todo app given any context from the asker.
But I know what you mean. Sometimes people actually really mean beginner-beginner like hangman, like beginner EXERCISES maybe, not projects. And it can be hard to get anything between hangman and a todo app.
It all depends on context and word choice.
In your case, I might suggest minesweeper or wordle, but that's really general. It depends on what exactly you're looking for and know already or want to practice. A little weather dashboard if you want to learn APIs. A directory tree visualizer if you want to practice recursion or file i/o.
Does that make sense?
HiddenReader2020@reddit (OP)
As for where I currently stand, I do “know” about stuff like writing classes and file I/O, but I’m nowhere near comfortable enough to use them. For example, I just got through the Alien Invasion project in PCC, and the author apparently knew how and when to add stuff like ai_game = self.ai_game or whatever, and knew what parts of the library to extract from. Not to mention how he knew when to use a dictionary or a list, or…well, basically, as I was going through the project, I kept constantly thinking “how did you think to do that?”, among other similar questions.
But I’m getting off-track. As for desired projects, anything more general is pretty good, but I am at least hoping to not have to code projects that only execute in the terminal. Like I said, I’m still technically a beginner despite this being my third rodeo on this Python learning spree, let alone CS relearning spree (long story), but I gotta do what I gotta do now, and just hope that third time’s the charm.
jameyiguess@reddit
What I did as a beginner was start tutorials, get obsessed with one small part, and spin off on my own project. Like learning how to generate random numbers, I learned how I could turn that number into an ASCII character, and from there went nuts building a silly game that generated a bunch of random creatures that crawled around the screen, represented by random characters and colors.
Looking back, those projects were written HORRIBLY, but I did gain a ton of experience reading docs and finding answers. You have to dive into the unknown and be tenacious as hell to truly learn. Perfection really is the enemy at this stage. You won't be writing "beautiful" code for a while. Just hack at it with reckless abandon and get shit to work!
I'd say try to build an app that lists a directory's files. You'll be surprised how high level python's APIs are; didn't be scared of it. You won't be doing insane memory stuff, just learning how to use os.walk() for example.
Your instincts for list vs dictionary etc will grow over time. You just gotta struggle through building crap right now.
No_Flan4401@reddit
You can also find something that you don't know anything or enough about. Whether or not if it's a beginner or advance don't really matter. What matter is, you can sit down and find out how to solve it. Then with time you have solved more and more, and some things gets easiere and other things get a lot Harder
AdForeign4620@reddit
okay i just finished andrew ng specilization course can someone suggest what projects i should try to understand the coding stuff .... is there any site or something where i can get help from
judyflorence@reddit
A lot of 'beginner' lists quietly mean beginner-friendly after you already know the tooling. A tiny CLI app or one-screen CRUD app teaches way more than wrestling three APIs at once.
HiddenReader2020@reddit (OP)
So what would I have to do in order to “know the tooling”?
Accomplished_Key5104@reddit
What kind of project do you think is a beginner project? Some things sound hard, but are actually pretty straightforward.
From the list you gave, most of those do not sound like large or complex projects. Sending an email is generally only a few lines of code in any language. Scraping a website, at least a public one, is pretty straightforward. Actually parsing and using the elements of the website is harder, but you'd learn a lot about markup languages. The only one I would have guessed is harder is the recorder, but just because I'm not at all familiar with that area. I wouldn't be surprised if Python has libraries that make this easier.
Try out some of these projects. I think you might be underestimating yourself. If you want a suggestion, the web scraper one is pretty good. It's a bit harder than sending an email, but I think you'll learn a lot from it.
ImprovementLoose9423@reddit
There is no official definition of beginner projects. It would maybe depend on your learning process and how quickly you pick up on programming concepts.
xian0@reddit
It depends what the list is like but they aren't really medium or advanced.
carcigenicate@reddit
I wouldn't say those are really classified as "beginner". I think people forget and lose sight of the early years where they struggled. I'd consider those projects to be easy now, but that's easy for me to say after writing code for years.
Is say that "beginner" projects involve practicing problem solving and developing algorithms. I personally wouldn't start into PDF libraries until I had a firm grasp of h he fundamentals.
DirkSwizzler@reddit
This seems accurate to me. And I think it's a factor that fuels rampant impostor syndrome.
People (at least in this field) tend to think that most things they've done are easy in hindsight. Which feeds into a sense of "I just do the easy work"
Vast_Bad_39@reddit
Nah youre not low skill. Those lists are just inconsistent as hell. Guess the number and voice recorder app being side by side is actually insane.
Spacekiwi@reddit
I'm not sure I totally understand the second paragraph, do you mean that you think guess the number or hangman is easy to build, but the other ones are not?
If that's the case it's probably just the tools that you're comfortable with, for a beginner project you're probably going to be expected to grab libraries to interface with the external system that's causing you concern here. If you build the hangman game just in the cli, try build it with a GUI, or build it so it can run on the web. This will involve some research but that doesn't make it advance past a beginner project necessarily.
backfire10z@reddit
There is no universal standardization.
That being said, you’d be surprised I think. You don’t know how to do these things off the top of your head, but that doesn’t mean you haven’t learned all the concepts necessary to successfully complete such a project.
The only way to really make the leap to such projects is to, well, make the leap and struggle. There will never be a point where you’ve made your 10th guess the number game and suddenly know how to make a web scraper.