this post was submitted on 06 Oct 2025
76 points (95.2% liked)

Programming

23003 readers
343 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
 

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

(page 2) 28 comments
sorted by: hot top controversial new old
[–] falseWhite@lemmy.world 3 points 2 days ago (1 children)

Build production level apps. Could be any app idea you like, or just pick something that will challenge your current knowledge and skills and force you to improve.

[–] PodPerson@lemmy.zip 1 points 2 days ago (1 children)

Is “production level” like “military grade”? I don’t even know what those things mean when it comes to quality.

load more comments (1 replies)
[–] calliope@retrolemmy.com 3 points 2 days ago

I always try to build things that I might want!

I am fortunate to have a lot of other hobbies, so I build little things for myself for those hobbies.

One of my first scripts I ever wrote around 2004 was a Perl script to get what song was playing and automatically update my IM “status”.

I also made databases of comics and CDs for myself too.

The easiest way to get better is by doing, and doing is way easier when it’s something I care about.

This isn't exactly answering your question, but one thing I see a lot of people get wrong is not knowing how to express what they're trying to do. An example I recently ran into would be when I was trying to enforce that an input to a function is a child class of an abstract class. If you express the problem with the right vocab you won't end up googling "how to make sure a variable is of the right type" and getting a different answer completely. I find that having taken classes and followed through books has helped me the most because the vocabulary to define my problem is ingrained in me. That's what I'd recommend the most, is increasing exposure to concepts and vocab so that it doesn't feel weird when you have to express a new problem.

[–] Kolanaki@pawb.social 1 points 2 days ago* (last edited 2 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.

[–] 0x01@lemmy.ml 2 points 2 days ago

I've taught a few developers and have pretty extensive experience on the topic

Tutorials are fine, but don't get stuck on the idea that you need guidance through the whole process, it’s better to avoid tutorials entirely than it is to follow a bunch of tutorials.

For example, when I started out my most recent student we began with some challenges that I knew would provide some context for future projects, then immediately jumped into those projects. Depending on what you're passionate about, the best project for you can differ, but we did the following projects:

  1. A lemmy face wizard page, literally just a list of lemmy faces that clicking on will copy to your clipboard
  2. An invoice maker, since they needed to send me invoices because I was paying them for their time
  3. a react native sudoku app, this one was challenging and took them a couple months, but when they were done they took over one of my contracts for mobile development

And the challenges that led to these projects? Everything from basic algorithms to api interaction puzzles.

My advice would be to pick something that you love and come up with the tiniest project you can possibly think of, then cut the scope a little more.

For example, love pokemon? Maybe make a website that you can click on one of the types and it will highlight the strengths/weaknesses of that type. Love golf? Maybe make a golf score tracker mobile app, a big button to add a stroke and another to move to the next hole.

If you are passionate about something it gets a lot easier to get better at programming because the stuff you're missing will become obvious and you'll need to look it up to finish your project.

My very first project nearly 30 years ago was a windows 95 app that moved your mouse to draw in mspaint automatically.

I'd say starting a new language is a pretty big mistake until about 4-5 months after you feel proficient with your first language. Starting over with new syntax has actually caused more than one of my students to quit

[–] darklamer@lemmy.dbzer0.com 2 points 2 days ago

First something that you have probably already guessed yourself: practice,. practice and more practice.

Then something that too many people in my experience tend to not fully appreciate the value of: read code written by more accomplished programmers and try to figure out and understand why they wrote it the way they did.

Following tutorials and courses is definitely a very popular way of learning programming but I personally hate it. For me, the motivation was always a problem to solve, and programming was just a tool to solve it. Of course, you probably need to follow some kind of guided experience to gather the absolute fundamentals, but to get better you just need to apply this in practice.

The first ever problem I decided to solve with programming was organizing pirated video files into manageable directory structure. I knew almost nothing about programming at this point and my thought process was something like this:

  1. Which programming language should I use? Search the web, read a bunch of articles, make a decision. I chose Python.
  2. Ok, first I need to find the files to process. Search the web for "get files in a folder Python". Read a bunch of answers (never just a single one!). Apply the solution.
  3. Now I need to somehow discern between movies and series episodes. Search the web for "check if text contains text Python".
  4. Repeat until you have a working program...

Now, the most important part of this is to have an idea for a project which either solves a real problem of yours or just is exciting to you. Some examples of my projects:

  • Due to weird grading system used in my school, calculating GPA was pretty inconvenient. I decided to solve this with programming. I wanted to make the solution easily available to my teammates so I created a web app.
  • I wanted to control my smart TV using a computer. I knew it can be controlled using Android application so it seemed likely that I can do the same using my PC.
  • I bought a smart lightbulb and I was playing with setting it to different colors while listening to music. A thought suddenly popped up: "hey, can I make it blink to the music?".

When starting most of these projects I had no idea how to approach the problem. So I just searched the web until I knew it. In the beginning you will probably be searching and reading much more than writing code. But that's a good thing! Programming (or rather software engineering) is not about typing out code, it's about breaking down the problem into smaller chunks until you actually know how to solve each of the chunks with the tools you have at hand. Once you have this understanding, writing code is usually rather easy.

[–] markz@suppo.fi 2 points 2 days ago
  1. Build stuff.
  2. Repeat step 1.

Really, just keep doing random projects and look up things along the way. Other learning resources like courses can help too, but should be considered supplemental.

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

Do you feel like it? If you're interested in some language, just try it.

[–] arthur@lemmy.zip 2 points 2 days ago

Reading: The Pragmatic Programmer (Andy Hunt & Dave Thomas)

There are podcasts and YouTube channels with great content already available, with videos about specific topics and or libraries.

Read other people's code.

I would advise you to avoid using chatbots to write code or explain it; programming seems a lot like learning human languages, if you do not exercise it, you will not improve. Read code and read error messages.

Using chatbots to understand concepts can be useful, but be careful, it doesn't know anything, it just generates text that seems correct, so always check on other sources.

When you feel comfortable in python, learn the basics of a new language. Each language has its own "way of thinking", and knowing that will make you a better programmer.

And have fun; without it, it is hard to stick to anything.

[–] magic_lobster_party@fedia.io 1 points 2 days ago

Dedicate yourself with a more long term project (1+ months). I think the best way to learn is through the pain that comes with larger code bases.

Start small. Add more and more features. If there’s something you don’t know how to make, find a tutorial or a guide and make it work with your project.

Eventually you’ll discover pain points in your project. The feature you want to make doesn’t fit well with your current code. This is good time to learn from your previous mistakes and adapt your old code for the better (refactoring).

Over time you’ll learn more and more techniques to write code that can grow. You’ll see for yourself why some coding styles are considered bad and why some are better. This is difficult to see just by working with short term weekend scripts.

Don’t worry about failing. No one writes ”perfect” code. You’ll learn from your mistakes.

[–] cupcakezealot@piefed.blahaj.zone 1 points 2 days ago* (last edited 2 days ago)

code little projects for things you're passionate about; make a to do list and put it on github/codeberg; look in issue queues for anything labelled "good first issue"; just clone a repo for a project you like and look around the code to see how they do things; go old school and get agile publishing books (humble bundle has good deals on these most times)

[–] asudox@lemmy.asudox.dev 1 points 2 days ago

The best way is to try and make projects you want to make.

It is important to make ones that you really want to do yourself. I don't know how it is with the others, but I immediately got demotivated after a day of trying to develop something someone else made just for the sake of learning.

In my experience, you will learn better and faster by developing things you actually want to develop. And you will also be rewarded with a good amount of dopamine.

[–] Agility0971@lemmy.world 1 points 2 days ago

Learn different languages. A tool is good for problems it was designed to solve. Here is a list of programming languages i would recommend in addition to python.

  • c
  • elixir
  • rust
  • go This would give you different perspectives on how a problem can be solved. And stay far away from jacascript.

Tutorials are nice to get the mechanics of the language but you should not stick with them for a long time. Start doing your own projects as soon as you feel comfortable with the language.

[–] limer@lemmy.ml 1 points 2 days ago (1 children)

After coding a lot, and talking to many people, I have decided that while most people can be trained to be decent programmers; the critical ingredient is both an interest and the ability to sit down and do it for long periods of time.

As long as you have both you will find your path.

For me I learned a lot by reading books, coding my own things, and reading other people’s code. Often on first read, I was intimidated. Sometime I had to take a while to figure out new things. More than once I had to stare at a few dozen lines of code all afternoon.

It really helps to have a debugger to step through each line of code as it runs . This shows the values of variables at each step

And that assumes the code runs at all. I learned to debug my own code, when it would not run, by making every conceivable error several times until I could read the output in my sleep and know how I messed up. That takes a while to make that many errors!

But debugging is definitely very important

[–] vrek@programming.dev 2 points 2 days ago

Since the op is talking about python, I recommend pythontutor.com it is a visual debugger and not only shows the values of variables but shows the scope which each variable exists in.

[–] slazer2au@lemmy.world 1 points 2 days ago

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

I would argue that you shouldn't use external libraries. No need to import and entire lib to do one function, try making the function yourself. Yes it will not run as good but you can then optimise from there and see how the library does it after.

[–] Treczoks@lemmy.world 1 points 2 days ago

First of all, like all skills, the more you do, the better you get.

One approach not listed would be to read books on algorithms and try to implement them.

Another would be to read good source code. The "good" part is the difficult one here, though.

Have a look at "The TeX Book" and/or "The MetaFont Book" - Both books are well annotated "sources" for two working and long-term assumed bug-free programs. You can learn a lot from those, not only about actually writing a program, but you can get a lot meta-knowledge off this project.

Or look at the sources for the glibc/glibc++.

Just keep coding. Feel free to use as many guardrails and tools as necessary in your IDE (linters, auto completes, mouse over definitions, etc) to make it easier. To use a language metaphor, you want to be focusing on how to communicate, not on things like who vs whom, the subjunctive case, or adjective order. If you need projects, there are plenty of lists out there, but doing something you actually care about and breaking it down into chunks small enough to do is probably more sustainable than a bunch of random tasks someone else recommends.

As for learning new languages: when you have to. If there's something specific you want to do and it's only done in a specific language, then go for it, but there's nothing inherently good about knowing multiple languages, especially if spreading yourself thin prevents you from improving in your main language (or is detrimental because it muddles the patterns you've learned in each).

[–] Sxan@piefed.zip -2 points 2 days ago (1 children)

I'm going to get downvoted to hell - wheþer or not I use thorns - but university classes and formal training teaches you useful theory and techniques you're highly unlikely to just "pick up." Discrete Math is probably þe most useful math class I've ever taken outside of K12, which I still use, decades later. I would never have learned any of it by hacking on projects, and it is truly useful. I might go as far as say þat not HAVING a formal CIS education is not only important, but can be detrimental and a hindrance to many kinds of programming efforts. Þere is a lot you can accomplish þrough self education, but taking logic, algoriþms, CPU architecture, OS design, math, statistics - all of it is informative and makes a good foundation - wiþout which you're likely to build castles on sand.

Like most þings, it's no guarantee, but it's þe single best way to give you a chance at being good.

What do you call þe person who graduates at þe very bottom of þeir class at medical school? "Doctor." Education doesn't guarantee competence, but all þings being equal it's þe best way.

load more comments (1 replies)
load more comments
view more: ‹ prev next ›