77

So I’m an on/off noobie but have been focusing on actually sticking with programming what I’ve been working on is Python but this question is for programming in general. For me it’s hard but I want to see how I can get better

Like are these good ways to get good:

Follow tutorials, then work on ways of adding your own twists or changes? Or trying to code it in something else?

Work on assignments from a resource you’re using like in my case Python Crash Course and attempt to redo the assignments without looking back?

Experiment with multiple libraries and library methods or built in methods?

Please share any other ways especially ones that helped you

Also when would be good to start a new language after learning one

top 50 comments
sorted by: hot top controversial new old
[-] Diplomjodler3@lemmy.world 22 points 6 days ago

You get better at programming by programming.

[-] inzen@lemmy.world 2 points 6 days ago

This. For me personally It helps to think of programming as as craft. It also helps a lot if you have someone more skilled than you available to discuss.

[-] Diplomjodler3@lemmy.world 2 points 6 days ago

How do you know how skilled I am?

[-] inzen@lemmy.world 4 points 6 days ago

I'm not sure I understand the question but I will try to answer. I did not mean to question you skill in particular, I know nothing about you.

I agree that programming requires repetition e.g. more programming, that's why I said "This".

What followed was a generic advice that helped me personally to improve a lot as a developer. I got the chance to work side by side with developers experienced in different types of projects, developers I consider more skilled than me in different ways. I consider this avaluabe experience.

Hope that clears it up a little, nothing to do with you're skill in particular. English is not my first language so maybe my phrasing is a little weird.

[-] Diplomjodler3@lemmy.world 4 points 6 days ago

You wrote:

It also helps a lot if you have someone more skilled than you available to discuss.

Which could be read as you addressing me directly. Which of course I'm aware was not what you meant. I was just trying to be funny.

[-] inzen@lemmy.world 4 points 6 days ago

Haha, well I guess I over-thought a little 😅

[-] koala@programming.dev 1 points 6 days ago* (last edited 6 days ago)

And also, you learn to make programs of a given difficulty by making programs of a smaller difficulty first.

[-] FizzyOrange@programming.dev 8 points 6 days ago

I would say:

  1. Just practice, do projects. Also if you can work on projects with other people because you'll read a lot of bad code and learn how not to do things (hopefully).

  2. Learn lots of programming languages. They often have different and interesting ways of doing things that can teach you lessons that you can bring to any language. For example Haskell will teach you the benefit of keeping functions pure (and also the costs!).

If you only know Python I would recommend:

  1. Learn Python with type hints. Run Pyright (don't use mypy; it sucks) on your project and get it to pass.

  2. Go is probably a sensible next step. Very quick to learn but you'll start to learn about proper static typing, multithreading, build tools (Go has the best tooling too so unfortunately it's all downhill from here...), and you can easily build native executables that aren't dog slow.

  3. C++ or Rust. Big step up but these languages (especially C++) will teach you about how computers actually work. Pointers, memory layouts, segfaults (in C++). They also let you write what we're now calling "foundational software" (formerly "systems software" but that was too vague a term).

  4. Optionally, if you want to go a bit niche, one of the functional programming languages like Haskell or OCaml. I'd probably say OCaml because it's way easier (it doesn't force everything to be pure). I don't really like OCaml so I wouldn't spend too much time on this but it has lots of interesting ideas.

  5. Final boss is probably a dependently typed language like Lean or Idris. Pretty hardcore and not really of much practical use it you aren't writing software that Must Not Fail Ever. You'll learn loads about type systems though.

Also read programming articles on Hacker News.

[-] the_strange@feddit.org 2 points 5 days ago

I generally agree with your statement, just one thing to keep in mind: Mypy sucks for any library larger than a few thousand lines spread over a couple of files, but pyright is developed by M$ and might be part of their usual Embrace, extend, and extinguish strategy. The other two contenders are pytype (google) and pyre (facebook), so it's not like there's a good selection of independent, good and FOSS type checkers out there at the moment.

Astral - the people behind the ruff linter - are currently developing ty, yet another static type checker for python, with a lot of promise, but it's going to be a couple of months, maybe a year before it is in any shape to be used in production code.

[-] FizzyOrange@programming.dev 1 points 5 days ago

Yeah I'm watching Ty. Pytype and Pyre are not serious options. Nobody really uses them, and Pytype is discontinued. Facebook have a new project called Pyrefly that's also worth watching.

But for now, use Pyright. No argument. If you're really worried about Microsoft (and not Facebook or Google for some reason) then use BasedPyright.

[-] crapwittyname@feddit.uk 10 points 6 days ago

Nice try GPT-6

[-] theherk@lemmy.world 7 points 6 days ago

There is a lot here with varying degrees of helpfulness. I’ll add one thing. Many have commented essentially “build stuff”, and that is solid truth. That’s how you get better. But just like the whole perfect practice makes perfect, there is one fundamental detail that must be included. Build systems that you understand deeply. Not the code; that you are learning. But it is best to build things where you understand the outcome behavior of the system.

For example, if you don’t really understand what graphics rasterization is, building a raster program, even with a good guide, isn’t going to help as much as you might think. Though it will help you understand graphics, so go nuts. But if you really understand how baseball stats are calculated, do something with that. It will be much more gratifying and the code will be the part you’re learning, not the system it is implementing.

[-] dream_weasel@sh.itjust.works 11 points 6 days ago

Write code, get feedback, write more (better) code, get more feedback and repeat.

Just hacking your own stuff 10 hours a day isn't making you better if you're just doing what you have already done or doing things the same way you've done them before.

[-] ViperActual@sh.itjust.works 5 points 6 days ago

Generally I start with an end goal, and break it down into logical pieces. For instance I recently wanted to make a custom soundboard for discord. First thing I needed to figure out was how to play sounds. Next was playing those sounds to a specific sound device so that it can be routed into the audio input for discord. Then I needed to figure out how to play the same sound at the same time through the audio output. Then I needed a form to interact with so I could click a button to play a sound. Then I needed to be able to load a config file so that I could update that form when I wanted to add or delete sounds. Then I needed a way to choose files to add to the sound board. And conversely a context menu so I could right click a button to remove it. Then I needed to figure out how to save and load this config file from the filesystem. Then I needed to be able to search for and update the form so I could now quickly find sounds if the list got too long. And then once I had all that working, figure out how to play the same sound multiple times before it finished resulting in a multi threaded soundboard that can interact with any sound device on the machine and saves and loads sound lists all in Python.

[-] jcr@jlai.lu 3 points 5 days ago

Self taught Python (and using linux OS) over the last 15 years ; the only ways I found real progress in my code/coding were while doing the following : 1/ (at start): following strictly a "school manual" with lessons and ALL exercices. It was Python 2.3 I think, a manual (in French) by Swinnen. To be honest I stopped before reaching the GUI and network programming, and guess at what I suck today in Python programming ... 2/ projects, personal projects. I did pro (paid) projects on the side, but with the impetuous to deliver results to be paid, I can not progress. On personal projects I can take the time to try stuff, to rewrite functions or programs, and to "improve" existing code with new/better coding constructs.

So here I am with a rather random level of Python programming proficiency, currently being average at most but enough proficient to have workable programs.

[-] morphballganon@lemmy.world 5 points 6 days ago

Be result-focused. You're trying to achieve x. Look at however many tutorials you need to achieve x. Now x is part of your repertoire. Then repeat, with a new x.

Later, you'll think "I need to do y. I've done it before. I'll just copy that syntax, with new variable names etc" and boom, you're good at programming.

[-] bitcrafter@programming.dev 2 points 5 days ago

By eating the brains of programmers who are better than you.

[-] zerofk@lemmy.zip 4 points 6 days ago

The things you mentioned are very good, but what I’m missing is feedback and a good foundation.

Feedback should come from other developers - ideally experienced, but a good dialogue between beginners can also teach both sides a lot. For me this came only after I started working, through code reviews. But you could also try contributing to open source, or putting your own code online. Although I fear you won’t get much feedback.

A good foundation is about software and hardware designs. Without this you will inevitably come to a point where you made a fundamental mistake in design.

For hardware design I recommend YouTube. Many channels talk about low level hardware. You don’t need to become an expert, just get a high level understanding.

For software design, check out the gang of four’s Design Patterns. It is a seminal work. You don’t need to read it all but be aware of the patterns, and study a few like factories and facade in detail.

[-] BilboBargains@lemmy.world 2 points 6 days ago

Identify a problem that you can solve using code. Use ai to help with syntax and code structure. Chip away at the problem a little bit each day.

[-] sik0fewl@lemmy.ca 2 points 6 days ago

Find an open source project you love an contribute to it.

Don't. Unless you are confident you are not adding hot garbage to the code base.

[-] AngryCommieKender@lemmy.world 4 points 6 days ago

Playing Factorio.

I shall not be taking or answering any questions.

[-] sobchak@programming.dev 2 points 6 days ago* (last edited 6 days ago)

Working with/on things I found interesting helped a lot. I.e. lots of small projects/scripts, using different frameworks/libraries/languages that looked interesting. Experimenting and exploring different ways things could be done. Programming is one of those "10,000 hours" things; you need to be interested in what you're doing to do something like that for so long. Computer Science coursework helped a lot too, especially the courses heavy on algorithms, data structures, big-o, proofs, etc.

In my CS coursework, we were exposed to many different languages and programming paradigms at the very beginning. It's fine to experiment and start learning multiple languages at once (preferably, all being quite different, such as a pure functional language, procedural language, object-oriented, declarative logic, etc).

[-] melsaskca@lemmy.ca 1 points 5 days ago

Lots of good advice here. I'll add a bit more that is non-technical. Get and study the book "Symbolic Logic" by Irving M. Copi. It'll help you to think more critically and expose you to different logic patterns. More philosophical than technical but I see it as being like math for words. As with everything, you get better over time if you keep at it.

[-] paris@lemmy.blahaj.zone 1 points 6 days ago

Check out The Weekly Challenge. Doing these helped me become more comfortable in my programming language of choice (Nim) and let me jump into a project when one comes to mind.

[-] PrettyFlyForAFatGuy@feddit.uk 1 points 6 days ago

Code reviews. if you have no one who can review your code for you get an AI to do it

[-] Kissaki@programming.dev 1 points 6 days ago* (last edited 6 days ago)
  • Make changes to existing projects
  • Create and use projects you have an interest or use in for yourself
  • Reading technical articles
  • Reading guidance docs (like Microsoft dotnet or SQL Server docs giving introduction to architecture, systems, approaches, behaviors, design decisions, etc)
  • Working with more experienced people - seeing them work, being instructed, reviewed, commented, guided by them
  • Experiencing alternative technologies and approaches
  • Experience in general
  • Exploring existing projects and their architectures

I don't know how far along you are in Python use. In general, I don't think Python guides you into good practice or architecture. It's too dynamic and varied of a language. You'll need a framework to be guided. Personally, I have a dislike for it for multiple reasons. Others seem to like it. Other languages and ecosystems are more limited, in good ways. (Maybe I'm misinterpreting "todays" Python, I've only peeking experience with Python.)

I would suggest trying out Go or/and then C#. Both are relatively simple to get into, and have more native/mainline frameworks and guidance. C#/Dotnet in general has a lot of guidance, documentation in broad and specific, and tutorials and sample projects.

[-] Tollana1234567@lemmy.today 1 points 6 days ago* (last edited 6 days ago)

my bro whos in programming, younger than me still had to go to community college for cheap courses to get a good foundation, you might need that, he doesnt have a degree, but it takes years of studying and learning like others mentioned to get at a level where you are "hirable" by an employer.(no degree).(im not in the field though)

[-] Kolanaki@pawb.social 1 points 6 days ago* (last edited 6 days ago)

I am a learn by doing kinda guy, so I learned more just writing code to accomplish a goal than I did reading textbooks and guides. Just give me a crash course in the syntax and a page of functions and I'll be fine with pretty much any language.

[-] Azzu@lemmy.dbzer0.com 65 points 1 week ago

I think the best way to get better at programming is to

  1. Write programs that you actually want to make
  2. Whenever you run into a hard part, first try to do it yourself
    1. Once you succeed or fail, research the problem and see how others solved it
    2. Always look up words/concepts you don't understand while researching and don't stop until you understand
  3. Repeat

If you like, you can also just read some books or scour some programming related communities for general info, without some specific goal. However, most people don't have the motivation to do that, because they don't know what that information is good for yet. That's why, for most people in my opinion, it's better to just try to do something and then learn (better) ways of doing what you want, because then you actually immediately get what it's good for and why you'd need it.

[-] starshipwinepineapple@programming.dev 22 points 1 week ago* (last edited 1 week ago)

That #1 is crucial. I see a lot of people get stuck in tutorial hell or burn out from doing other people's projects. Some tutorials are okay if you're just starting out but at some point switching to your own projects and challenging yourself is necessary

And since OP mentioned being on/off, i would also just say be consistent. Dedicate some time to work on your own projects so you're not forgetting stuff before it really sticks

[-] ugo@feddit.it 27 points 1 week ago

Quick guide on how to get better at X: do X a lot.

Programming is no different. Write programs and do research (aka google stuff) when you get stuck or when you want to further your knowledge. Repeat 100000 times and you’ll know lots.

load more comments (6 replies)
[-] rozodru@piefed.social 10 points 1 week ago

I've been doing this for well over 20 years now and I taught myself by building Geocities sites and random stuff.

Just build things and push them to a repo. Have an idea for something? build it. could just be something like a TUI for Mastodon or like an eReader with AI driven text to speech, I don't know i'm just spit balling here but my point is you just have to build stuff. It's like anything, the more you do it, the better you get at it. Like drawing. you just draw something every day and eventually you get good. it's the same for coding. just work on something every day and you'll get good at it.

So just build something or contribute to your favourite open source project.

[-] Lembot_0004@discuss.online 10 points 1 week ago

1st stage: have a basic grasp of the language you use. Do those tiny stupid and boring exercises from the book you read.

2nd stage: write something you need. Not the thing you think you can do but the thing you need. No matter how complicated it might seem from the start. Write it until you done or until you can prove that your language is completely unsuitable for what you need.

3rd stage: at this point you should have enough understanding of what you can and what you cannot do.

[-] medem@lemmy.wtf 9 points 1 week ago

I am only speaking for myself and I am most definitely not a pro, but I think preoccupation with efficiency and usefulness is the main obstacle to actually liking programming, which is itself a must if you want to get good at it. Some years ago I read an article with the title 'why I spend my time writing useless software'. I can't remember what it actually said since I only needed the title to really internalise the fact that programming is an art. Imagine telling Monet, Picasso, Michelangelo or John Lennon that their line of work is 'imperfect' or 'inefficient'. If that sounds like a ridiculous thing to do, that's because it would be. I've written at least 15,000 lines of code (I'm a sysadmin, not a programmer), most of it for production in banking systems. And yet, the piece of software I'm most proud of is...a library for encoding and decoding morse.

[-] david_@discuss.tchncs.de 1 points 6 days ago* (last edited 6 days ago)

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

— Classic quote by Donald E. Knuth is classic.

But you speak of liking programming, and I emphatically agree with your assessment that that's necessary to get good at it, and I like that you point out that obsession with efficiency quickly becomes an impediment to that.

load more comments (2 replies)
  1. Learn different programming paradigms and approaches. Learn Java or C# to learn object-oriented programming. Learn Haskell to understand functional programming. Learn C to understand low-level programming. Learn C++ to see the wealth of opportunities a programming language can offer. Learn Assembly to understand what happens when your code gets compiled and how computers work on a very basic level. Learn Rust to learn about memory- and thread safety. You don't have to be an expert in all of these, but a basic understanding can be really helpful (for instance, the C++ code I wrote significantly improved after learning Haskell and functional programming, even though I will probably never write an actual program in Haskell).
  2. Learn about programming practices. Learn about test driven development. Learn about fuzzing. Learn about penetration testing. Essentially make sure you're not only learning the actual programming itself, but everything the comes (or should come) with it.
  3. Most importantly: practice, practice, practice. Find an open source project that you like and improve something. Fix a bug. Add a requested feature. Learn how to work with others on programming tasks. Ideally you have an open source project that you use and would like to see a bug fixed or a feature implemented - talk with the devs, make a PR, and don't get frustrated if they criticize your code - learn from it (but also accept that some devs are self-centered or don't want help - in that case, choose another project or fork the project).
[-] mr_satan@lemmy.zip 4 points 6 days ago

I'd say it takes a certain curiosity to make all of this work. Like the other day I read up on SQL indexes and how they work under the hood. I didn't need to, I know what they do and what I needed them to do. But there was this itch when I realized that I don't know how they do it.

And there are many such things depending on the specialty. I'm in web dev and often the work I do is very detached from actual communication protocols and such. I see devs that don't even know how cookies work in an MVC app. And while it's not necessary, it helps a lot to have basic understanding of what happens when you call an API, how exactly HTTP differs from HTTPS, even what happens at TLS and TCP layer of things.

I consider myself a generalist and it's this curiosity that makes me adequate in many different subspecialties. I'm not the best at things, but I can get shit done myself when I need to.

load more comments (1 replies)
[-] MagicShel@lemmy.zip 9 points 1 week ago

The hardest part about learning to code is that the projects you really want to do are far beyond your abilities as a beginner. I recommend starting with modding, creating websites, or even writing macros for stuff like excel. They get you started.

Then also watch some YouTube videos on stuff like SOLID, design patterns, functional programming, and "getting started with <language>".

Then try to write your own versions of stuff. I learned a bunch of stuff by writing my own versions of stuff. Like I tried backporting Java Functions, BiFunctions, Predicates, etc to Java 7. It didn't work great because the language support wasn't there, but I learned a lot about what things are hard and why things are designed the way they are. I feel sorry for the poor bastards that inherited that code.

Also, don't let people give you too much shit about asking questions of AI. It frequently explains things way better than it executes. It's a great first line of learning even if you really need a deeper dive into the documentation to understand the more esoteric stuff. If you have a question you can't find the answer to, ChatGPT will explain it in 30 seconds where you might have to wait days on a forum for someone to feel like answering.

Beware: ChatGPT is awful about mixing different versions of stuff so the answers it gives may well be obsolete. But if you're really confused it can point you in the right direction. Yeah, you'll have to learn a lot more nuance when you start doing shit professionally, but if you're just fucking around it's great. And googling for answers isn't much better in that regard. The best answers come from the docs, but especially when you're starting out, the documentation often assumes a baseline of contextual knowledge you aren't going to have.

Try implementing a custom collector in Java just based on the docs. Have fucking fun with that.

[-] beejjorgensen@lemmy.sdf.org 8 points 1 week ago* (last edited 1 week ago)

IMHO, the top way to get better is to code a lot in a space you're unfamiliar with. And make it a substantial project, not just some little toy thing. If you want to learn mobile dev, choose an app you want to clone, and start working on it. It will be slow and painstaking going, but you'll learn a ton.

When you're stuck, don't AI. Use standard search because you'll learn more that way.

And understand that people who are skilled in the art have been learning for years. Don't let that dissuade you. Just take it one step at a time and someday you'll have been learning for years, too. ✋🖐️🖖🤘

[-] ozymandias@lemmy.dbzer0.com 7 points 1 week ago

MIT made several of their classes free online, CS 101 will teach you python and foundations of programming….
https://ocw.mit.edu/

tutorials just teach you how to do one specific thing, not general coding….
it’s kinda hard but you can go at your own pace… just remember a class is supposed to take months, not a couple days, so it’s okay to take some time doing it….

load more comments (1 replies)
[-] stinky@redlemmy.com 5 points 1 week ago

Find a hobby project you love

I spent an entire summer learning to write HTML because I loved pokemon, and I made a site to show off. It was so much fun

load more comments
view more: next ›
this post was submitted on 06 Oct 2025
77 points (95.3% liked)

Programming

23074 readers
176 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS