learning how to code is not always easy

“I wrote this letter to myself as a part of an assignment in the Udacity Front-End Web Developer Nanodegree course I’m previewing today…”

Source: Learning how to code is NOT easy

 

cool…”front-end web developer nanodegree.” i have no idea what that is. (ok, i can sort of guess.)

i used to make websites, they were easy. now every site has to have a database (not true, but theyre nice) and they need a javascript library/content engine (not true, but they definitely do wonders for big websites) and you have to use html5, css and a python, php or node.js backend (all optional.)

they can make all of this complex, and industry always will. i think its unfortunate, because the bells and whistles one person will say are necessary is just a bloated pain to someone else. if you teach computer science, you might still have a webpage done in html 3 without css.

but the worst part is, modern education insists that people start in the middle. its not completely crazy; if you can start in the middle, there are certainly rewards. you get to see the “big picture” before you even understand the details. you get started right away on results, before you even know how to achieve them. i mean thats how it is with software these days– people use it, but they still dont know how.

all the same, thats not the only way to learn about computers, and its not how i learned, either. when i started with computers, i only used two programs– a paint program (great for building skills with the mouse, also good for art) and basic. so you would get a little spiral-bound book out:

3baa6eaa515090f55bbee15a97482e4c3

 

and simply follow the instructions. type this:

10 PRINT "hello world!"
20 COLOR 5
30 GOTO 10

 

then you would type “run” and hit enter. it would say hello, world! on the screen, then change the color to purple and say it again, and again, and again, until you hit ctrl-c.

if youre 5 years old and can read, you can do this. it starts out slow, but in a way that can grab your interest for the next 20 years.

ive had lots of hobbies. this one stuck– i kept teaching myself from that point onward until i wrote my own programming language. its not the best or the fastest programming language in the world (thats partly because i chose to implement it in python, and partly because speed or “being best” or fast, wasnt a design goal) but its designed to bring this sort of learning back for everyone.

if youre doing web design, youre already learning 2 or more languages at once. when it was just html, coding for the web was easy! just put little things in less-than/more-than signs < > and add the things you want to say, or links to pictures. a 5-year-old could do it.

more importantly, to someone that doesnt have a long background in coding, they may not realize that all code bears incredible similarities to all other code. on the surface, they can be very different. but the surface is abstract; its different because it was made differently, not because it has to be (or even really is, by the time it gets to the computer.)

im not attacking abstraction– my entire programming language is an abstraction over python, which is an abstraction over c, which is an abstraction over the code that the computer likes. but when you find that “coding is hard,” its hard mostly due to the abstraction making things complicated.

some of these complications make plenty of sense– others are only well-intended. some are even complicated for deliberate and dubious (market-grabbing) reasons.

if you want to become a professional coder, you can start with the easy stuff or you can start in the middle. but the “middle” these days is pretty complex stuff. im not sure why they dont take a little more time with the beginnings, because its not just that the basics are so much easier to learn (and teach.) they also give you a fundamental understanding of all the other stuff youre going to learn in the “middle.”

because all that complex stuff is based directly on the basics. thats a lesson that most of these kids arent getting, which is too bad. theyre learning for an industry first, and education second. theres really nothing wrong with doing it the other way around. it might take a little more time, and it can reach a lot more people without the feeling of “i cant do this, i cant do this.”

even if people knew there was more than one way to learn this stuff– that would help a lot.

why should it matter if coding is accessible to kids or not? #1 reason: by age 10 (on average,) they already identify as “computer people” or “non-computer people.” so many people fall into the latter category, and have a solid belief that they either cant learn, or that it will be painfully difficult. learning can be made difficult, but one of the things that contributes heavily to that is the belief that it will be– if you think learning is going to hurt, its going to be hard to get your attention long enough to prove you wrong.

i wrote fig specifically to get at the people who insist it is difficult. ive shown a handful already that programming can be fun and easy (without being cartoon-based, but based on typing actual code) but while im trying to become a better teacher, im also trying to learn how to “sell” the idea. the program is free, but time is valuable– so you still have to sell to people for the time they will spend.

to every person struggling– dont give up! but you do always have the option of trying more than one thing. coding can be easier, and you can help make it easier. either way someone has to share their passion for it, and that passion has to catch on. a lot of teaching is shared learning, and inspiration– good luck with it.

 

 

Advertisements

10 thoughts on “learning how to code is not always easy

  1. socialjblog says:

    When I was a kid we had a PCjr. It is so nostalgic to see the basic manual. I thought to stop the line of code though was Fn + Break. It’s been a tremendously long time since I’ve seen a PCjr though so it’s totally possible I’m wrong. Something neat on it though was Alt+Ins+Del it was like an archaic pre-windows design hidden in the code. There was this break disc window that allowed you to encrypt a disk. There was only one password for the encryption though–MNOP.

    Curious if you ever played around with that.

    Liked by 1 person

    1. i never did– for what its worth, youre probably right about the key shortcuts, perhaps i started using ctrl-c on the 286. i didnt have the chiclet keyboard, but the one with “real keys.” (still had the ir connection, but we used it with the cord.)

      i used dos 3.3 and basica, but i had the cartridge basic too (rarely used it.) theres a picture of a girl i grew up in a couple of my posts, she had one of these incredible machines as well.

      the hands-on manual was great– it inspired all my further interest in coding and all the documentation ive ever written: https://codeinfig.wordpress.com/2016/05/23/variables-in-fig/

      to give you an idea of what life was like when i started learning to code, the kind of stuff we did at school was learn colors and glue pasta to stuff. i knew the alphabet and i could read, but then a teacher said “sure but do you know vowels? a-e-i-o-u.” “hey, i already know those.” “what about consonants?”

      turns out consonants were all the non-vowels in the alphabet. i was skeptical of these consonants… they sounded like a really made-up concept. why not just stick with the real alphabet, eh? it worked just fine. who was this strange person with more than one alphabet, one of which had only 5 letters and the other was obviously a less-useful rip-off of the one id already learned! 🙂 “sure, yeah, whatever. come back when theyve got a song.”

      Like

    1. this overlaps very nicely with something (mostly unrelated to coding) i was saying about education to someone this morning– schools exist for industry, and education is a bi-product.

      its not lost on me that we need to give people useful and relevant skills. its also not lost on me that the truest educators and industry types wont always agree entirely on what skills are the most useful and relevant.

      for me, i think school has a duty to teach broad skills and a fundamental understanding, as well as specialized examples.

      for industry, they like to start in the middle. with the de-facto “standard” tools they just happen to make money from. youre not wrong, of course. id just like to keep trying to make a world where what youre saying isnt the only right answer.

      Liked by 2 people

        1. i actually think industry work is the SECOND most important reason to learn to code.

          the most important reason (and the requirements are much less demanding) is that its the quickest, easiest route to computer literacy. if you understand function calls and the other 6 concepts beneath them, you really understand software. maybe not every detail, but a solid foundation that someone can build other understandings from.

          we cant afford (imo) another generation of computer illiterate citizens. not because the jobs will suck otherwise, but because everything else will, too.

          industry is supposed to make you tired. it conflates the organic with the mechanical. retire and do something fun for money instead. (well, best of luck with that in any case.)

          Liked by 1 person

          1. I totally agree with you. We depend on computers and cannot afford bad software. Anyway, I switched jobs from industrial programming to industrial testing and it is a bit better. In the long run, I hope to do creative programming or teaching.

            Liked by 1 person

  2. I completely agree with you. When I was first taught to code, they (the school) decided we should start with java. It was a hell of a lot difficult trying to understand object oriented concepts especially as a beginner. I think I would have had a better understanding if I had started from the ground up. Probably wont be struggling with concurrent concepts now if not for that.

    Liked by 1 person

    1. concurrency is interesting. i have yet to create any workload that truly needs multiple cores. there are bash tools to assist in this that can be called from the shell command, aka os.system()

      however, it seems fairly clear that concurrency (or any other way of using multiple cores or multiple processors, whether distributed or whatever) is still being worked out by really amazing computer scientists, and im not looking to ride trends– im looking for long term (and intuitive) solutions, if possible.

      Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s