There is something of an aura that surrounds the word “coding”. It has come to take on an almost mythical stature when mentioned. “He’s a coder, you guys”. So it’s no wonder that it took me so long to see what it’s all about. For the longest time, I felt it was something utterly out of reach like brain surgery or becoming an astronaut. Something you had to start young and practice continuously to be any good at so why try?

But, alas, as life goes on we realize that curiosity is often our greatest teacher and it can be a mistake to close yourself off to something when you don’t have a very detailed understanding of what it actually is. That is, don’t be so presumptive and don’t sell yourself short. In my opinion, that is probably one of the dumbest things a human being can do and probably responsible for a large percentage of the general discontent and unhappiness in the world. A simple lack of effort preceded by preconceived and innaccurate assumptions has denied more than a few of us a life of happiness and satisfaction. So it goes. Anyway, my geographic impairment, as I refer to my living in rural Japan, has led me after many a diversion to the desire to achieve real skill in the world of software development.

In a previous post, I went into the details of why working in this field has its benefits. But, you see, software development is quite a challenging skill to cultivate. Not so much in terms of sheer difficulty but in terms of sheer breadth and depth of the industry. There are so many languages, platforms, frameworks, trends and specialities that you could literally spend the rest of your life just learning about it all without ever actually building anything. This is largely where the term “tutorial purgatory” comes from. It means being perpetually stuck in taking tutorials, busying yourself with studying and preparing and generally not really doing anything specifically original or creative. Tutorial purgatory is a place where you prepare to take action but never take any real action by yourself. Or at least not in the sense of bringing real, noticeable change to your lifestyle and income.

“Been sitting here daydreaming about what I might do to change my life and still no big changes. Sheesh. What gives?”

And that is where, shortly after beginning to take my journey toward becoming a software developer seriously, I found myself. Man, did I spend a lot of money on Udemy. Not that I wasted it, mind you. It’s just that it would probably take me about 3 solid years to work through all the tutorials I bought (They have some good stuff on there. Let me tell you). But I wasn’t making any real forward motion as far as networking and working with real live human beings in the field. To put it honestly, I was an aspiring nerd minus a herd.

For months I spent several hours a day working through tutorials. Getting familiar with how code works. How to write it without constant, glaring errors in punctuation and syntax. I learned what IDE I prefer (VS code for sure) and how to organize my workflow. I learned how to scan code extremely quickly and to more or less keep track of the entire file structure as a whole. I learned what the difference is between a clean, well-organized repository and utter abomination of endless folders and files on GitHub is. These are all important skills, in my mind. But there was one issue: I wasn’t learning to function or create independently. And this caused, at the back of my mind, a certain concern as to how to eventually become qualified as a software developer instead of as a, well, “tutorialist”? Honestly, in something as detailed and comprehensive as software development, it is no small task to go from, to make a rough analogy, following preset recipes to cooking for yourself.

With this on my mind as I continued to chip away at my as of yet vague aspirations to “do something with software”, through a certain amount of serendipity and otherwise watch-listening to YouTube a lot, I came across a teacher offering a course. Yes, I know. “Red flag, bro. Don’t do it”, “It’s a scam, dawg. Like Bitcoin.” and all the rest of it. But the truth is I found him very sincere and motivated to help people. Soft skills are, after all, just as important as technical skills in many respects so there is something to be said for someone who can communicate clearly, politely and with sincereity. He’s also, as I would later find out, quite good at his craft (always a plus). So, after taking him up on his free 60 minute Skype interview, I signed up. Simple as that. The reason I did is this: learning from an experienced, human teacher who will give you there time and insight when you are stuck is a true shortcut to proficiency almost 100% of the time. Because, with anything difficult, you will get stuck and you will have questions you can’t answer even after hours of trying to figure them out. And this will make it all too easy to give up.

Aside from the skill and efficacy of a teacher, there is also a lot to be gained in following a clear and well designed roadmap to take you where you want to go.Having a clear path provided for you with a definite progression from “bumbling dunce” to “guy who more or less has some familiarity with this stuff and could probably even get paid for it if he really worked hard” is what you want when you decide to make a career change. Anything else would be a bit silly unless, well, you’re the type that loves spinning your wheels and generally treating it all as a hobby, that is. Hey, a lot of people do. The idea of becoming a professional in anything besides what you already know how to do can often be quite a frightening thought for some. This is why so many of us will stick with jobs we hate, or stay in relationships we hate or otherwise spend our waking lives frustrated, unsatisfied and ever under the influence of some vague, low-grade sense or resentment toward our lives: we are too scared of taking action toward changing it. I have been there myself and I never, ever want to go back.

“Goodbye to you, stupid dumb malaise of complacency and fear.”, he said.

 So, anyhoo, on to the course. It works like this, each student is given a “roadmap” listing 4 separate applications to be completed by the end of the 4 month course (1 app every month). The parameters of the apps are described in full and they cover a wide range of essential core skills in software development. Personally, my roadmap will be teaching me the following:

  1. Working with source control ( Git )
  2. 2. Capability of creating a “full-stack” web application ( website with front-end,back-end and database )
  3. 3. Ability to work with a Front End framework ( React )
  4. 4. Ability to work with a Python Web Framework ( Django, Flask, Etc. )
  5. 5. Ability to work with a SQL database (PostgreSQL)
  6. 6. Ability to work with an ORM ( Django’s built-in ORM )
  7. 7. Ability to deploy an application ( Heroku )
  8. 8. Interact with an external/public API ( Twitter )
  9. 9. Ability to create an internal-facing API ( using Flask w/Python ) 10. Ability to write unit tests ( using unittest framework for Python )

I am now nearing the end of my first month in the program. My first original project, a snake game built with JavaScript, is due in about another week and I am, according to the “deliverables” outlined in my roadmap, roughly 60% done with it. That’s pretty good considering the first 10 days were spent reading and working through relevant, yup, you guessed it, tutorials. These tutorials, however, are to help build the relevant skills I would need to get something going by myself, not to convince me that I know how to code. And they were chosen very carefully by an experienced professional instead of a guy trying to figure out where he wants to go (that guy being yours truly) like a drunken rhinoceros on a carousel.

While my time working through tutorials was beneficial in terms of familiarizing me with the general scene of things I am learning WAY MORE in this course because I am being forced to think critically and to build things from scratch and often with very little idea of how I am going to do it. While it has been extremely challenging in terms of testing my patience I am finding it amazingly beneficial.

Aside from the skill and support of the teacher, I am also getting a lot of value from my fellow students via our Facebook group. I am working with people who are involved with the industry and are just as motivated as I am to change their lives and to learn new skills. Our weekly, topic oriented, meetings are also an amazing resource that helps me stay focused. Community is important. So is having a teacher putting in the time to build resources for you that are actually valuable and help you better your situation. You know, something that makes you feel like you’re not just monkeying around.

“Uhhhh. No, guys. That’s not how you get a job as a software developer…”

So, as the title of this post is “Learning To Code”, what is it really like to learn to code? So far, I have learned this: coding is not the mysterious and vague art I once thought it was. It is, instead, an engaging, creative and extremely interesting art. Yes, art. But what do I mean by that? Well, what I mean is that coding incorporates a vast array of skill, knowledge and discipline geared toward creating things. That is, essentially, what any art does, no?

When programmers talk about “the stack” what they are really talking about is a progressively distributed tower (in the virtual sense) of different programming languages, platforms and ranges of functionality extending into the ether from what you, as the user, see all the way to what the server is doing often many miles (or kilometers) away from your device. The term could also be taken to mean a kind of medium. Just as the painter or sculptor or the dancer or the writer requires a platform to manifest their craft, so too does the programmer need a space to “lay down their science”.

And this science is not one of obscure and archaic knowledge available only to a select few. On the contrary, the software development community is one of amazing openness and generosity. It’s really about knowing exactly what you want to build and how to manipulate your given medium/programming language to elicit the desired result. Simple as that. But, by no means, easy.

Of course, I am still a complete beginner. But I can sense in my starting out an entry into a community I wish I would have sought out much sooner. Here in my remote life in rural Japan I have come to appreciate what people are capable of much more so than I once did. The software development industry, it seems, is one of immense creativity, generosity and curiosity.

That’s it for this post. More to come as I get further along.

In closing, here’s a picture of a cat that looks like a rocket propelled grenade that’s just been fired.

Trevor was born in Seattle WA but has been living in rural Japan for the past 11 years. He enjoys writing and learning new things. When he’s not hacking away at the keyboard, teaching English or wrangling one of his three kids he can usually be found somewhere in the mountains cycling or practicing internal martial arts. That’s just his thing.

After learning Japanese and then starting his own business he said “enough with this whole being limited by my geography” and decided to pursue a career in software development.

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply

    Your email address will not be published. Required fields are marked *