Wait, No… Am I a Developer?

Hi, my name is Jeremy and I’m a Junior Full-Stack Software Developer. Wait, no… I’m a registered massage therapist and have been for 15 years, twelve of which I have run my own business, KW Massage. But I write code and I have completed projects that I’m proud of. I’m motivated, curious, passionate, I love working with and learning new technologies and I have a demonstrable capacity to learn. In fact, I have learned a great many things, with very little guidance, no formal training and mainly just the world wide web as a teacher. I know I can more than succeed but excel in a professional software development environment. In this blog I will try to sum up my learnings as a full-stack web developer by chronicling my progress since I first logged onto Code Academy and wrote, <p>Hello World!</p> into my first HTML tag.

I’m motivated, curious, passionate, I love working with and learning new technologies and I have a demonstrable capacity to learn.

My curiosity in software development was initially sparked while working as a massage therapist. Although I love my work as a massage therapist and I’m very good at it, the job gets a little monotonous at times. It’s the people that make my work interesting. I ask them about themselves and I always find it interesting to hear about other people’s work; whether they are lawyers, doctors, nurses, mechanics or factory workers everyone is good at something and I find that super interesting. However, what really strikes me is the technology field.

Computer Programmer

I remember being 10 years old, in a friend’s backyard, playing with our Transformers. We had to know how they worked. With screwdrivers in-hand we took those Transformers completely apart. That was the easy part, it’s easy to be curious. The hard part was putting them back together again, it took us all day and into the night. The determination is the part I look back on with pride, the problem solving and collaboration with a peer. This was a challenge for 10 year old Jeremy but also one of my fondest memories as a child.

I’ve always been interested in how things work. I’v always been gifted with hands-on, interactive on learning.

In the small town high school I went to there was only one computer course. I didn’t even think I would like it. We learned about email and the basics of programming (booleans, if statements and variables mainly). For the final project in that class I made a basic drawing program using Logo, an educational programming language. It tracked your mouse. You could select your colour, pick from a few drawing tools and use the erase function to draw a picture and then save your file. Although it worked, it wasn’t written well and it was the farthest thing from adhering to the DRY (do not repeat yourself) principle. However, my teacher couldn’t figure out how I did it so he was forced to give me 100% in the class. Another moment I remember was buying my first computer in grade 10, staring at the black and white screen of the DOS prompt wondering now what, where are all the games? Two months later, after reading the Microsoft DOS user manual front-to-back I was the guy my friend’s fathers would call upon for help with their old 386 machines.

Unfortunately, my teacher couldn’t figure out how I did it so he was forced to give me 100% in the class

I ended up having several clients during the fall of 2013 who were computer programmers and who were kind enough to humor me by talking about their work and allowing me to ask questions. Eventually they started sending me to online resources like Code Academy, where I learned the basics of HTML and CSS and played with JavaScript and Ruby for the first time. This kept me busy until the spring of 2014 when I started wanting more. I found edX.com, an online platform for universities like Harvard, MIT and Berkeley to host their online courses. You could pay the universities to take the courses and get credit for your work, or if you were only interested in learning you could monitor the courses for your own interest without the fee. This seemed too good to be true. I started a few courses that seemed interesting but mostly the instructors made the content much drier than it needed to be. Until I found Harvard’s CS50, taught by David J. Malan. This man was incredible, running around the stage like he was a rock star, bringing volunteers up like it was a magic show, his enthusiasm was addictive, he made computer science interesting in a way that I could relate to.

Introduction to Computer Science — CS50— HarvardX — 2014
Familiarity in a number of languages, including C, PHP, SQL, and JavaScript plus CSS and HTML
CS50 was taught primarily in ‘C’. I learnt a bunch of fundamental stuff like variables, arrays and IF statements using scratch. Spent some time getting comfortable with Linux and the Virtual Machine the course used to host the development environment, then quickly jumped into ‘Hello World!’ with ‘C’, having to compile code in the process. Variable types, arrays, nested arrays, pointers, functions, libraries, recursion, debugging, reading and writing files, debugging. Data structures, sorting algorithms, calculating ‘Big O’ and hexadecimals, CS50 was a crash course in computer science learning the fundamentals the hard way. All this lead into ‘PHP’, with a demonstration of a sorting function in just a few lines. Compared to what I had to do in ‘C’ to sort an Array ‘PHP’ seemed amazing. HTML, CSS, PHP, SQL, JavaScript, Ajax, JSON and working with API’s . On top of the fundamentals CS50 taught me how to learn new languages.

As a next step I found Ruby on Rails and got really interested in it. Engineering Software as a Service by BerkeleyX through edX then caught my attention. Although the courses seem to have changed names since I took them.

Engineering Software as a Service — BerkeleyX — 2015
Developing Software as a Service using the Agile development processes with Ruby on Rails
Object oriented programming with Ruby and Ruby on Rails — Git, GitHub and Heroku — Agile process, scrum, pair programming — Test Driven Design(TDD), RSpec, mocks, stubs — Behaviour Driven Design(BDD), Cucumber, Capybara — Model View Controller(MVC) — Representational State Transfer(REST) and routes — Databases, ActiveRecord and migrations — Templates, Views, ERB and HAML
Engineering Software as a Service, part 2 — BerkeleyX — 2015
Developing Software as a Service using the Agile development processes with Ruby on Rails, advanced topics!
Single Sign-on and Third-party Authentication — Relational database, foreign keys, one-to-one relationships, one-to-many relationships, many-to-many relationships, SQLite — Refactoring, DRYing out MVC — Validations — Design Patterns, anti-patterns, single responsibility, open/closed principle, substitution principle, dependency injection, demeter principle — JavaScript for Rails, Document Object Model(DOM), events, callbacks, Ajax — TDD for JavaScript, Jasmin — Single page applications
Whys (poignant) guide to Ruby | When you wish Upon a Beard
Also an interesting read
by: Jeremy Bissonnette