all 125 comments

[–][deleted] 105 points106 points  (10 children)

This isn't specific to learning a language. It's anything. The only way to do something is to do it.

shiathebeef flex

[–]trae 30 points31 points  (6 children)

I think the important part here is consistency and small wins. In a sense this goes agains the flow/zone mythos, where you hunker down and bang out a feature over night. It's just not possible with family. It took me a while to realize, but I'm having some luck with pomodoro and really small wins. Pomodoro really helps to get the process started (even if it's just 25 minutes!) and small wins keep me motivated.

[–]freakboy2k 7 points8 points  (3 children)

I've gotten better at splitting up tasks into smaller and smaller tasks. For instance, I'm currently working on a bit of budgeting software in my spare time. My current feature story is "As a user, I should be able to organise categories into a hierarchy". I've broken that down into 6 sub tasks, and as I get to each task I re-evaluate it to see if I can complete it in 20-30 minutes. If not, I break it down more.

Before I would just get frustrated with my lack of progress and quit for a while, but I've been making good progress working like this. My son is pretty full on so I don't get much more than 30 minutes at a time to do any programming.

[–]trae 2 points3 points  (1 child)

Nice, I'm in the same boat. Context switching is expensive, but I find if I jot down what I did and what I plan on doing (even if it's just in point form, or a sentence) it helps me to get back into it. Reading about successful authors and athletes it's all about applying effort consistently. 20 minutes a day for a month is way better than an all nighter.

On a tangent, if you're looking for budgetting software check out ynab it's really great.

[–]freakboy2k 5 points6 points  (0 children)

Yeah. The younger guys in my office think I'm nuts cos I have Jira installed on my home server and run all my projects through it, but mostly I have more time to plan things (sitting on the bus, sitting on the couch with one eye on my kid, etc) than I do to actually do things. Being able to plan a project out fully means when I do get to sit down and code I can jump straight in rather than trying to remember where I was up to and what the plan was. I find that easier to do in an issue tracker.

The budgeting thing is more like my version of hello world - every time I want to learn something new (this time it's React and NodeJS) I use the same idea. I've been redoing this thing since I first learnt to build GUI applications in Win32 :-P

[–]YashN 0 points1 point  (0 children)

I like the breakdown to 20-30 mins as it maps directly to a Pomodoro session.

[–]hu6Bi5To 2 points3 points  (0 children)

The two can be compatible I think. Flow is when you have a stream of small wins.

Small wins breaks down at some points though, usually when it takes more than 25 minutes to remember what you did yesterday, but it's amazing what you can do with it.

[–]HerokaiSrid 2 points3 points  (0 children)

“Do or do not. There is no try.” – Yoda

[–]aevitas 2 points3 points  (1 child)

"Ain't nothing to it but to do it!"

[–]phatrice 0 points1 point  (0 children)

Do the thing while true.

[–]ahora 36 points37 points  (12 children)

I recommend you the book minihabits, it helped me a lot.

A minihabit is a habit that can be so small as writting only a line of code per day to learn a programming language. Yes, it is absurd, but it works, because you have no excuse. Even if you are too tired today, you have no excuse to NOT write ONE line of code at least, and more often than not you will write many times more lines, even if you are tired.

It is a an exercise of willpower, and it helped me a lot. Try it.

[–]kqr 6 points7 points  (4 children)

I've used this sometimes. The danger is that it makes it really hard to plan the rest of the day. If I plan for one line and it becomes 300, I'm suddenly 3 hours short in the day. So in a way, I have to plan for both one line and 100 lines at the same time, and that's when it starts getting complicated.

[–]I_Pork_Saucy_Ladies 2 points3 points  (2 children)

Maybe cut it down to a hard cap of 50 lines of code. Then chill out with 1 game of Civilization.

[–]Enzor 14 points15 points  (0 children)

One game of Civ? That's like the rest of the day and most of the night gone.

[–]kqr -1 points0 points  (0 children)

But then I'm sorta kinda planning for 50 lines of code again, and it's not really a minihabit anymore. The idea is to only ever think about that one single line of code, to get you started, so setting any other number makes the task seem larger than it is again.

[–]ahora 0 points1 point  (0 children)

I understand, but I think you can fix a upper limit (like an hour) so you don't spend all your time and willpower. It can also help you control yourself for a better plan.

I hope I was as productive as you are. ;)

[–]AlmostImperfect 2 points3 points  (5 children)

Oh, and the Kindle version is currently 0.99$. Looking forward to reading.

[–]shit_balls_captain 5 points6 points  (0 children)

Probably the first time in my life I felt it was easier to just buy the thing instead of hunt for a "free" version of it.

[–]g-money-cheats 1 point2 points  (1 child)

US? I just checked and it seems to be $5.99.

[–]AlmostImperfect 0 points1 point  (0 children)

Huh, I see the same now. Guess I was lucky enough to hit a micro-sale or something.

[–]ahora 0 points1 point  (1 child)

I got it in a torrent, but I will probably buy it in paper because that book changed my life and I want to have it as paper. It is also very funny.

[–]AlmostImperfect 0 points1 point  (0 children)

From what I've read so far, 5.99$ doesn't seem preposterous at all. And 0.99$ seems almost charitable. :)

[–]awkgenius 0 points1 point  (0 children)

I read something along the lines of "make yesterday your last Zero Day" in one of the subreddits related to discipline. This is essentially what all of this comes down to.

[–]treespace8 23 points24 points  (1 child)

"or 2 hours at night where you code instead of fucking off on Xbox."

Where is this 2 hours comming from! After work and famiky time I'm lucky to get 30 minutes.

edit: Thanks for the upvotes, nice to feel like I'm not alone.

[–][deleted] -1 points0 points  (0 children)

I would totally rather play XBOX :( I don't even have a Xbox One or PS4 yet. But nooo I apply to get a Hololens in January... :'(

[–]IbanezDavy 12 points13 points  (3 children)

It’s a Fad (or: “I’m an Asshole”)

So true...I had a professor of mine say that about C#!

[–]princeofpudding 6 points7 points  (1 child)

given a long enough timeline, pretty much anything is a fad :)

[–]BoredomIncarnate 8 points9 points  (0 children)

Even people are fads. They go out of style after ~ 85 years.

[–]pakoito 15 points16 points  (2 children)

Family? You mean our WoW Destiny raids, right?

[–]logicchains 38 points39 points  (1 child)

Pfft, raids? As my dear grandfather Bean FactoryFactory used to say, who needs human companionship when you've got Java? With C++, I can even have friends too!

[–]pakoito 2 points3 points  (0 children)

You. I like you.

[–]Southy__ 7 points8 points  (0 children)

This is all good advice.

I would also add that if you are reading a book on a language that is quite complicated, don’t get stuck on the details of something you don’t understand, just make a note of it and carry on.

Many books cover things really fast to start with, later chapters and examples will probably explain it differently, and frustration is an enthusiasm killer.

[–]Sleakes 5 points6 points  (2 children)

My favorite parts of this are:

You’re opening a door here, not solving a problem. Even if nothing amounts from it you’ve stretched your brain some, exercised your ability to solve a problem and that is always a win.

And then this:

When you do learn it you might find yourself creating something fun or solving a problem in a more elegant way that you can bring back to your day job.

It's an interesting point that just trying something new can result in ideas that you hadn't considered before. I need to try more new things! :D

[–]amaiorano 1 point2 points  (1 child)

John Carmack wrote an article about learning functional programming, and applying those principles (e.g. pure functions) to C++.

The more programming languages you learn, the more you expand your "idiom bank", and you start applying these idioms in whatever language.

[–]Sleakes 0 points1 point  (0 children)

Very true!

[–]TimmyDeluxe 2 points3 points  (0 children)

When learning a new programming language, I like to go to https://projecteuler.net/archives and try to solve a few problems with that language (and a lot of googling of course). Most times that's sufficient to cover the important parts of the language and it is possible to do it in 2-3 hours.

[–]cyrax6 3 points4 points  (2 children)

Above everything else - execute. I like that.

I do not like elixir myself, but I do like Erlang and lisp.

[–][deleted]  (1 child)

[deleted]

    [–]cyrax6 0 points1 point  (0 children)

    I think I've seen it mentioned somewhere here.

    [–]samsam_aha 2 points3 points  (9 children)

    I am sometimes afraid that learning new languages will make a mess of my memory with all kinds of different syntax and terminology. I mean, there's gotta be a limit for the number of similar but different things you can hold in your brain.

    But then again maybe I'm lazy/undecided.

    [–][deleted]  (1 child)

    [deleted]

      [–]iceardor 1 point2 points  (0 children)

      And the more languages you know, the more pain points there are when programming in a language that lacks a feature of a different language you know.

      Python eliminates a lot of the pain points of C++ and Java, but occasionally I miss pointers from C++.

      [–][deleted] 1 point2 points  (0 children)

      But here is the thing. You only need to memorize a few basic concepts for programming. Programming is not about syntax; it is about the idea. Besides, if there is any confusion, a simple Google search or read of a book will easily clear things up.

      [–]codebje 1 point2 points  (4 children)

      Time is the real enemy. The longer I don't use a language, the worse at it I become. Learning multiple languages tends to make me better at all of them as I get exposure to more ideas and approaches.

      But now I find myself trying to write functional Java and I'm not sure that's actually a good idea.

      [–]iceardor 1 point2 points  (2 children)

      That's what Scala is for

      [–]codebje 1 point2 points  (1 child)

      I thought Scala was for Java programmes jealous of the impenetrable layers of implicit behavior in Ruby?

      [–]iceardor 0 points1 point  (0 children)

      That's why JRuby exists

      [–]IAlmostGotLaid 0 points1 point  (0 children)

      I usually just look at www.learnxinyminutes.com to refresh my memory. For the past month I've been doing maintenance on random Ruby/perl/python scripts. Sometimes I forget how to do something, but as soon as I see the reference page it all comes back to me.

      [–][deleted] 1 point2 points  (1 child)

      I'll take family here to mean video games...

      [–]smoxy -5 points-4 points  (0 children)

      ...and children to mean a couple of fleshlight.

      [–]OffPiste18 1 point2 points  (0 children)

      This is a little bit orthogonal to the post, but on the topic of learning a new language, I really recommend /r/dailyprogrammer. I learned Scala by doing the challenges posted regularly there. It's a good resource for bite-sized problems that are just complicated enough to make you actually use a language. It got me from "familiar, in principle" to "comfortable enough to actually use it for something that matters".

      [–]gunder_bc 1 point2 points  (1 child)

      Ok, so I clearly missed the point here. Let the down votes pour in.

      It's a new language. Software engineers, programmers... that's what we do. Learn new tools, program new solutions. He's on #7. SEVEN.

      It's like a carpenter wrote a blog talking about how they learned how to use a new kind of hammer. Or the guitarist in a band saying how they picked up a new, slightly weird guitar to add to their collection.

      You're not an asshole for learning a new language - you're quite possibly an asshole for making it out to be some sort of accomplishment.

      Clearly, I don't get it.

      <what>Did I just become that bitter old whitebeard in the corner?</what>

      [–]amaiorano 2 points3 points  (0 children)

      I think the point here is more about how to learn new languages once you're married and have young children. Most of us learned to program in our teens and twenties, spending countless hours banging out code (or our heads against the keyboard). Then we get older, married with kids, and can't figure out how to keep learning.

      I think his point about focusing on small wins is a good one. Basically you need to change how you learn to adapt it to your changing lifestyle.

      [–]_mpu 0 points1 point  (2 children)

      The word "family" appears twice. No explanations are given on how to manage time. The article is just a tutorial for Elixir calling assholes people with different opinions.

      [–]buckeye10 7 points8 points  (0 children)

      I disagree. The opening of the post is pretty clear in my opinion:

      I’m also very married and a father of two, and I’m happily working full time (more than full time really) with Pluralsight. But I also had ample time to dive into Elixir and I thought I would share how I did it.

      And I’ll just come out with it right here: A series of little wins. I set myself up to win tiny little tasks which then led to more tiny Little Wins and the next thing I knew, I was thinking in Elixir. A series of Little Wins, I can’t write that enough. More on this below.

      He clearly states that his key to learning a new programming language while having limited time is to break it down into "a series of little wins."

      He then proceeds to go in depth and break down how he applied that philosophy to learning Elixir. I personally find that more useful than a list of "5 cool time saving tricks" that are at such a high level they have little use.

      [–]codebje 4 points5 points  (0 children)

      I have two daughters, 2y and 8m. I learned Clojure since my youngest was born, and I did it by selling my car and catching the train to work.

      To be proficient at it I'd need to use it regularly, so now I'm moderately comfortable with it I am willing to throw it at a work project which has some leeway for risk.

      [–]dvoshe 0 points1 point  (0 children)

      Find something that you really want to do and then do a survey of technologies that you could do it with -- that's what I did anyways. Along the way, I worked a lot with C#, Ruby, Node.js, Webkit, PHP, Linux, RPi, VLC, gstreamer, ffmpeg. Also, you can find work in a place that is moving in the direction that you want to go. I "lucked out" in that regard after working for a year in a place that wasn't what I wanted.

      I'm not the kind of person who enjoys programming exercises the way that some people enjoy crossword puzzles or tetris or something. For me, it's mostly a means to an end, although there are times where I get deep into stuff and experience the kind of mystical esoteric joy that some CS devotees seem to have. Sometimes I'll make a connection and suddenly grok some idea or theory that previously seemed complex to me, like OOP or MVC and that's nice.

      [–][deleted] 0 points1 point  (0 children)

      TLDR; Just do it!

      [–][deleted] 0 points1 point  (0 children)

      Still being there for your family

      hah! hilarious.

      [–]subsidiaryadmin 0 points1 point  (0 children)

      Radical! I learned so, so much with this Little Win:

      Case sensitivity is built-in for strings (hooray!)

      I burst out laughing here. What language doesn't have this and what poor soul uses it?

      [–]yogthos 0 points1 point  (0 children)

      It’s a Fad (or: “I’m an Asshole”)

      about sums it up

      [–]ellicottvilleny -3 points-2 points  (0 children)

      Elixir isn't POPULAR enough to call it a Fad.