this post was submitted on 31 Aug 2023
67 points (97.2% liked)

Asklemmy

43852 readers
735 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!

  1. Open-ended question
  2. 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.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~

founded 5 years ago
MODERATORS
 

Whether it's a form of note-taking or regular repetition or the like, what are some self-education techniques and tools you've developed to help yourself learn on your own?

It's always interesting imo to read about how some folks teach themselves different stuff.

you are viewing a single comment's thread
view the rest of the comments
[โ€“] fubo@lemmy.world 9 points 1 year ago* (last edited 1 year ago) (1 children)

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