this post was submitted on 31 Aug 2023
63 points (97.0% liked)
Asklemmy
43950 readers
144 users here now
A loosely moderated place to ask open-ended questions
Search asklemmy ๐
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- [email protected]: a community for finding communities
~Icon~ ~by~ ~@Double_[email protected]~
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
For stuff like chess, programming, drawing, etc where there is a skill you can learn..
Just do it. Every day. Do it in manageable steps. So for example if you wanna program, make a goal to create a calculator app. Then work out how to do that. Then do it.
Just keep doing progressively more difficult projects. After calculator app maybe a demo/visualization of sorting algorithms. And then a basic web server. And then a 2d video game. Etc
Learning by doing is the only real way to learn. Even in CS school the classes were great for certain things (I liked data structures & algorithms) but generally speaking the classes are there to facilitate you teaching yourself by doing.
Tldr: do the thing you wanna learn. Do it regularly. Every day if possible. Even if only 5 minutes.
For programming languages, it helps to find a task that actually fits the language well.
I learned Python as a junior sysadmin in the early 2000s specifically because it was the best language for plugging together different Internet services. The senior sysadmin on my team had written a piece of code in Python to migrate users from one email server to another, by connecting with IMAP to each server and transferring their mail. I needed to maintain this code, so I studied up on Python specifically focusing on the email libraries.
I was coming from Perl, which was the best language at the time for certain sysadmin tasks (like logs analysis). But Python's built-in libraries made it really easy to work with email servers, web servers, and so on. One language feature I really appreciated was the exception system, where many errors that might pass unchecked in C or Perl (and produce unpredictable behavior later) would instead crash the program with a useful diagnostic message.
I learned Haskell several years later because I'd gone to work in Silicon Valley and all the cool CS nerds were into Haskell. I didn't find a task that actually needed it until I found myself working on a problem that involved both text parsing and combinatorics. You need to express math facts about trees of strings? Haskell is the right tool for the job.
I'd learned elementary C in high school, but I'm not sure I really got C until I had picked up an electronics hobby in my 30s and built myself a blinky bike light controlled by an AVR microcontroller. C on an 8-bit Harvard-architecture machine is way different from C on i386 or x86_64 Linux.
I've way less programming experience than you, but I hugely agree. I started out wanting to "learn programming", and I struggled without a task. Project Euler(maths puzzles to solve with programming) helped me learn the basics of python, but I stagnated for a few years because I didn't see any way to use what I'd learned, any ideas for projects.
Things really clicked for me once I took a bioinformatics module at uni. The average life scientist is scared of the command line, but I was suddenly faced with so many ways to practice my programming skills by pairing it with biochemistry learning. Now, I'm better at coding than the majority of people in my field, even if I'm still mediocre overall. I know enough to be able to do stuff that I want to do now though