#LearnToCode

Is it for you? A developer's persepective

Posted by     Charlie on Thursday, March 28, 2019

If you have been tuned to most economic and tech news for the past years you have surely heard about “coding”, you have probably heard it in phrases like “coding is the future”, “it will take your career to new heights”, “anyone can do it” and more recently #LearnToCode.

Even people like Barack Obama, Mark Zuckerberg, Bill Gates, and Will.I.Am have promoted coding as a necessary tool to improve the way you think or even strengthen your country’s economy.

But what’s the deal with coding and is it for you?

Ipso Facto Computer Science Context

Yes coding as a hobby or as a profession can be very rewarding, hoewever, setting the snake-oily promises aside not everything is sunshine and rainbows in IT.

From long hours sitting in front of a monitor, substance addiction, lack of free time, burnout and most of the hassles that come from sitting down 8+ hours a day at a potentially stressful desk job, a full-time dev’s favorite hobby can become his worst nightmare; but before we tackle this new job fad and if a developer’s life is something you would like to pursue, let’s get some basics down.

  • Programming is the process of designing and building an executable program for accomplishing a specific computing task - Wikipedia

In layman terms programming is the set of skills that allow someone to give a set of instructions to a computer, most of the time you will save that set of instructions in a computer easy-to-read format so it may follow them anytime it must. What makes this task something particularly tedious is that computers are dumb, very dumb, and telling them how to do anything requires patience and effort.

Software development or “coding” as it is usually referred to, is not as obtuse or miraculous as pop culture depicts it but it can be cumbersome for the common folk, for example this is what it takes to make a computer print “kinda” or “maybe…depends” randomly after printing #LearnToCode:

package main

import (
  "fmt"
  "time"
  "math/rand"
)

func easy() bool {
  s1, s2 := rand.NewSource(time.Now().UnixNano()), rand.NewSource(time.Now().UnixNano())
  r1, r2 := rand.New(s1), rand.New(s2)
  return r1.Intn(100) >= r2.Intn(100)
}

func main() {
  fmt.Println("#LearnToCode")
  if easy() {
    fmt.Print("Kinda \n")
  } else {
    fmt.Print("Maybe...Depends \n")
  }
}

Note: this is just a quick example, it is not efficient nor is it the best solution for generating random booleans

For a developer, this is very straight forward, but for most people (or me when I first started programming) it seems overkill, that much…for so little? Yes, that’s how specific you need to be so the computer understands what it must do and how it must do it. You need to specify the way it will generate random data, how that data will determine a random true or false value and how should the machine translate that answer into logical text output.

Now imagine programming a complex system that might need to deal with multiple concurrent inputs, avoid errors and maintain a stable resource consumption while at the same time ensuring a near hundred percent availability…it can be overwhelming. Maybe after giving this some thought programming might have lost all or most of its charm to you, and I could understand why…but…why the controversy? what makes something as “nerdy” as this, a modern debate topic? and what the hell does it have to do with journalists?!

#LearnToCode

Early this year journalists on Twitter were complaining and writing articles about being harassed with a hashtag (yes apparently that’s possible), the phrase on the offensive digital token was Learn to code, contrary to the popular belief of some of these journalists the hashtag and the phrase were used before by the same media with articles like “Hillibillies who code” or the following…

coal miner articles

Some people took these articles as taunts towards the working class from journalistic upper-class workers, and I can see why, even though the intention might have not been that it came across that way, so when Buzzfeed and the Huffington Post announced massive layoffs many people on twitter started tweeting to journalists the infamous #LearnToCode…many of them didn’t like it…

twitter complaints

That’s pretty much it, as you can see the controversy and overall parroted message “Learn to Code” has little to do with coding and more to do with social, economic and political matters. In my opinion the whole shebang was a wasted opportunity, because developing software does have a place in helping working-class men and women get a foothold on emerging industries (even though it’s not the only way) and I would invite any struggling journalists to give it a try and see where it may take them, if that’s not of their liking there is no reason to get mad.

Despite all this I consider software development an entertaining and very enjoyable activity, however, I would like to make a distinction at this point, I do not consider coding to be the same as engineering software. I believe software development isn’t just opening your laptop and hacking away solutions; to engineer a solution means to analyze a problem then formulate, design and methodically implement the solution for said problem.

Coding, on the other hand, means hacking away code impromptu for a small set or specific issues regarding common programmatic tasks. I have nothing against just coding, actually that might be what most of my published examples will be (you just saw an example of it earlier on this blog post), this is an important distinction to take into consideration when answering the question:

Can anyone learn to code?

I firmly believe that developing software can be a very rewarding profession and that anyone can write code, however, I will admit it is not for everyone.

I often explain software development to non-tech people as extreme puzzle solving, if you are not into solving puzzles like jigsaw puzzles, sudokus, etcetera, then you will not enjoy programming as it will often involve decomposing problems into logical subsets that you will need to solve but will have things like resource management, concurrency, latency and error checking sprinkled on top.

Some people do have the skills but do not enjoy it and that’s okay, I don’t believe in forcing people into doing things they don’t want to do even though they might enjoy it or be really good at it. What I am very against is people sucking the fun and knowledge for hunger from motivated people like some college professors do with their students, that’s why if you have an itch for programming I invite you to scratch it, try it and take the following points into consideration:

1. Have a stubborn mindset

I can’t stress this enough, BE STUBBORN, if you really want to be a software developer you need to keep trying because it becomes overwhelmingly frustrating sometimes, some days you’ll feel nothing is going right, sometimes you’ll feel incapable or dumb but I promise that if you stick to it and try until it clicks you will do great. Your success depends on you and you alone.

2. Patience, persistence and lots of coffee

To stick to it you need to be someone with lots of patience and a (mostly) cold headed individual, or at least practice to be patient as often as possible while still being persistent towards your goals…and coffee…expect to lose sleep multiple times a week, be it because you “Are so close to a solution!” or “Don’t even know how to start!”, caffeine is your friend as long as you don’t abuse it.

3. Teaching yourself and self improving

Self-improvement is a big part of being a developer and a big part of life as well! So try to read, research and put hands-on work on new technologies, new subjects and anything you find fun and/or interesting. Try to make this a habit to keep up with tech advancements.

Should I go for it?

If you have a je ne sais quoi interest in coding, go for it! Try it, keep in mind some of the pointers presented here and if you like it you will find programming to be a comfy, fun hobby and possibly a profession; however if it’s not your cup of tea that’s also okay, I promise you won’t fall behind, Bill Gates won’t be mad at you and your country’s economy won’t fail because of it.