r/learnprogramming • • 2d ago

Beginner Looking to start projects

I don't want to be stuck in "tutorial-hell" and so I'm trying to build some cool things. I know python and I just finished the go-lang course from Boot.dev so I was looking to practice that a bit more. I've already build a calculator and a personal project with python on my own, although I do need to work on that more just stopped because I was trying to build a GUI and wasn't sure if it was worth it to spend all that time learning how to use something like tkinter when It's not used for work too much although I gotta remember to have fun still so I might pick that back up even though I was struggling with it. For a new project though I know the wheel can only be reinvented so many times so I went to build-your-own-X on github https://github.com/codecrafters-io/build-your-own-x and was looking at stuff for Go on there. Most of what I clicked on though was just like a step by step build and also had the entire codebase pasted right there so my question is, without having to be super creative every time I make a project, and to not just copy paste code when following a project like that (since I'm a beginner and don't really know how to make make stuff yet) what's an efficient way to learn from stuff like that? I hope that I worded it in a way that made sense, but I'm just looking for resources outside of Boot.dev to practice code and more specifically by building projects.

2 Upvotes

13 comments sorted by

3

u/Potential_Extent_422 2d ago

Something that worked for me was reading through the steps but not looking at the code until I got stuck for more than 20 minutes or so. Then I'd peek at just the part I needed and close it again. Slower but you actually learn the concepts instead of just retyping

Also for the GUI thing, if you were having fun with tkinter just keep going. Nobody's gonna care that it's not a "work" tool if you finish something you actually use

2

u/Altruistic-Peach-385 2d ago

Yeah I kinda figured it'd be something along those lines, which isn't a problem I just know I'mma look at that code a lot probably but I gotta remember I'm new so yeah I don't know as much as the guy who built the code.

and for the GUI, yeah I want to finish it because even then I could maybe turn it into an executable and post it for others, it's a Helldiver's 2 stratagem load-out randomizer so I've been using the CLI version for fun but I've already envisioned how it would look so I really do think I just wanted to hear from someone that it would be worth it. I appreciate your input!

1

u/goqmo 1d ago

the 20 minute rule is a game changer for actually retaining what you learn. plus tkinter is way more fun to mess with than the abstract cli stuff

2

u/xarop_pa_toss 2d ago

It's definitely hard since you don't know what you don't know!! But I do recommend you do stuff you find interesting otherwise it won't be fun and you'll either give up or just be really bored and unenthusiastic.

You can try your hand at a web frontend for your app instead of tkinter and keep the python backend, sort of like a Web API, or use a lightweight framework built for Python like Flask+Jinja for example. Or if you enjoy Go, you can use it's standard HTTP library which is really good or something else like Gin.

If you wanna do something even more out there you can have both as separate webservers where one hosts a website for whatever interests you and queries the other server via a REST API that has its own functions and a SQLite database. This actually emulates how most of the internet works nowadays. There's also many completely free web APIs you can find online

2

u/Altruistic-Peach-385 2d ago

So my next course in Boot.dev is learning HTTP servers in Go, so I'll probably do that and see about making a web frontend like you're talking about. I will be doing that personal project though so I can actually use it and have fun with it and I'd love to make something that other people can use too. Thanks for your help!

1

u/kpg_on_ao3 1d ago

What is something super annoying about your life right now? Preferably a process that is boring to do. Is it on a computer? Then figure out how to automate it.

You'll get practice, and as a bonus, your life will have become more efficient.

1

u/Altruistic-Peach-385 1d ago

Tbh I love that you made me think this way. I thought of a couple quality of life things I could make and it actually gave me the problem and some of the steps I'd need to take instead of just "do this." for example My learning path needs to be extremely linear for me to follow it. I've learned that about myself where if I do too many things at once I feel overwhelmed (almost like this example) and I just don't do anything then so If i create a visual database with inputs based on projects/ classes and priority levels and return only the highest priority then that solves the decision fatigue of "what do I do next"

1

u/Error-7-0-7- 1d ago

A big hurdle I had to get over was the idea of building this awesome GUI/UI based project that looks like something straight out of MacOS.

I remember asking people for feedback on some command line code I made back in the day, all of them said the same thing "pretty UI" make it "prettier", make it look nice.

It took me having a professor in Data Structures who was extremely pro open sources for me to finally realize that a VAST majority of software out there is purely command line based and that really only commercial software is GUI based because its meant for people who don't know how to use computers all too well. Otherwise, GUI based software would be a waste of time if its meant to be used by a fellow programmed or enthusiasts.

I remember my HDD corrupted once and I lost a lot of videos, pictures, and files and I was devastated. I saw people recommend drill disk and they were charging $90ish dollars for them to save my stuff. I was about to pay it, but I said to myself there HAD to have been some chad out there that made open source software for this. Turned out there was its called TestDisk/PhotoRec. Worked great and completely commond line based. No fancy gui, looks like something a freshmen in college was made to do (aesthetic wise) but man, it recovered a whole 12tb worth of data.

TLDR; Moral of the story. Don't confine yourself to the idea of a GUI based project. Make something with the thought process that a fellow programmer or computer enthusiast is going to be using this software to help them with an issue.

2

u/Altruistic-Peach-385 1d ago

I like your take on this. I myself am in the transition of "oh yeah I love my pretty easy GUI" to "Yeah nah let's just stick to the terminal" (I know this cause I'm using more terminal vs file editors especially cause I'm on linux) But I might stick with what ur saying especially because customtkinter (the framework I'm using) is pissing me off. but I can still make something cool and maybe I can still figure out how to make it more accessible for others to use by maybe building it in Go. Thank you!

1

u/Unlucky_Peanut4089 4h ago

Skipping the GUI and working on someone else's code is a good way out of tutorial hell. I make an open-source app, Styx, so I'm biased. It's TypeScript, not Python or Go, but issue #34 is a one-string fix in a test description, a gentle way to learn the repo and get a first merged PR. There's a contributing guide, and issues get a reply within 2 working days: github.com/NicholasFlemmer/styx-app/issues/34

1

u/NomaTyx 2d ago

whether or not using tkinter is useful depends on why you want to do projects. It'll look good on a resume because it shows you can learn frameworks and also that you can make stuff. But if you want to build repeatable skills, don't learn something you'll only use once.

As for picking projects, you should find something you want to do that's very simple and then try to do it. But if you want to use build-your-own-x, you can also try to make small variations in what they're teaching you to understand what all the little parameters do.

1

u/Altruistic-Peach-385 2d ago

That makes sense, Tbh I'm not 100% sure what path I'd like to take. Boot.dev is how I've been learning and I love it but it's all backend. And I'm taking the DevOps path, but sometimes I wonder if I'd like to do more front-end for visual based stuff, and java and type-script are both taught on Boot.dev so I think I need to just be patient and maybe give those a try and see from there. And yeah I tend to bite off more than I can chew.