From web development to software development: How I got started

LEGOs to Functional Programming

A shot of the SASS system my team built.

LEGO

Building things has always been a part of who I am. It started when I was young. I was a LEGO fanatic (still am, not sure that ever really goes away.) I had lots of sets, but more importantly, I had a big tub of random LEGOs.

Whenever I received a new LEGO set, I would start by building what was depicted on the box. For a short while that would be enough. Once I grew tired of the intended design, it was broken down and put into the big tub of random LEGOs.

From that point on, who knows what those pieces became. Cars, trucks, planes, buildings, a LEGO remote control car designed to carry a wireless camera. Just random creations of my own design. Not great design by any means, but they were mine. At one point, I built a functioning elevator for my pet hamster. (That’s a story for another time though.) Building, and more importantly, designing things, was my thing.


Nashville and Odd Jobs

I was born and raised in Springfield, MA. But if you fast forward to my early twenties, I had moved to Nashville, TN, gotten married, and had no idea what I wanted to do with my life. So, like most people in their twenties that didn’t go to college and have no idea what they want to do with their life, I picked up a few random jobs.

I mixed paint at Sherwin-Williams, sold car electronics for a local company, and also became, the classic, pizza delivery guy. There were many others too, none of them glamorous, but they paid the bills. During this time, the jobs I held were never full-time. I found that a few part-time jobs allowed me to earn a little more and have some free time to try other things on the side. And in that free time is where I learned how to build a website and more importantly, that I liked building websites.

I met a guy who had some ideas for different businesses. He was (and still is) a fast-paced, high-energy person. One of his ideas was to create a web-based, video training platform for business leaders. I liked the concept and we started a partnership. I was able to build the website and membership platform and he was responsible for basically everything else. Networking, product guidance, sales, all of the business stuff I knew nothing about yet.

It was great. I started reviewing website platforms and finally settled on Joomla. Joomla is a great platform. It’s built in PHP and has a very healthy third-party developer ecosystem. Wordpress was available at the time too, but it just wasn’t as big as it is now. So, once I settled on Joomla, the real fun began. I decided the best way to get started was to start from the bottom and work my way up … so I setup my first server.

Kind of a trivial thing nowadays, but for me at that time, it was like trying to build a house, without blueprints, in the dark. Thanks to Google and Stack Overflow, I made it through. I had a server, MySQL and Joomla up and running. Now it was time to build the actual product/website.

It took some time to get the hang of Joomla and its quirks. I had a great mentor when I first got started who helped me avoid a lot of the common ‘gotchas’ and steered me down the path of least resistance. His advice and time were invaluable. Don’t get me wrong, late nights of studying and routinely breaking the website were common, but without his guidance, I’m not sure how far I would have made it before giving up.


I think I like this…

Although the business my buddy and I started didn’t pan out, I was on a different career path now. I left my day jobs to start that company, and despite all of the stress and late nights, I didn’t want to go back. Time to hustle.

I started learning Wordpress and began doing basic websites for clients. Nothing fancy, really. I was basically a general contractor for websites. I would do what I could myself and farm the rest out. I was also blessed to be introduced to (and eventually contracted by) a non-profit here in the Nashville area. The non-profit job helped pay the bills while I worked on moving from a Web Developer to a Programmer. All from the comfort of my own home office. :)

Along the way I met a sales guy who was able to sell those Wordpress sites. We formed a partnership and started a classic ‘web dev’ company. At first, we just did websites. That quickly changed to offering design, SEO, social media marketing, and general business consulting services. This new business isn’t really the point of this post, but I bring it up because along with the non-profit job, it provided me with opportunities to meet people much smarter than me in this space, and gave me the projects to implement all of the new things I was learning.

Honestly, the biggest driving factor in my transition from a Wordpress and Joomla guy to a full on programmer was my clients. Not all of them, but some of them were idea people… dreamers. Once we showed them what was possible with a new website and third party tools, their minds would begin racing. Answering questions like, ‘Is it possible…’ and ‘How cool would it be if…’ was and still is pretty routine. Their ideas coupled with my want to build and learn new things was the driving motivator in learning how to code.


Coding 101

PHP was my first language. I had been staring at it for years in Joomla and Wordpress. Only making surface level changes and at best, copying lines from the internet and pasting them into my files. Through the non-profit, I met a guy that, for some reason, found it in his heart to teach me PHP. Even more, he taught me how to think about problems and how to break them down into their components. That’s the real skill. Problem solving.

So I built a few PHP and MySQL apps, learning a lot along the way. Around this time, Javascript had recently started on its ‘Dominate the coding world’ path so it was becoming quite the tool. It was no longer just for flash on the front end, you could do some serious problem solving with it. That was the next thing to learn.

Javascript was more of a challenge than PHP. Its asynchronous nature was completely foreign to me. It took a while to get the hang of it. It finally did and now I was able to join the JS club.

With the rise of Javascript came a resurgence in the Functional Programming paradigm. At a very basic level, the idea is to create small, reusable functions that don’t change their input data, and always return the same result when given the same input. It’s a paradigm that allows programmers to build large applications in a way that’s maintainable over the long term. Want to make a change in the way your program handles something? Cool, there’s going to be one place in the codebase to make that update.

So programming in Javascript using the Functional Programming (FP) paradigm became my next goal. I had already learned a few other paradigms with PHP. Classes, Factory, Object Oriented, Procedural … it was clear that learning to program this way, through paradigms, was most helpful for me. The concepts are broad and usually don’t apply to a single language. Learning the syntax is more narrow. When you learn concepts you learn how to program.

I think I got it

At this point, my brother and I had started working together. We came up with an idea to build an application framework in Javascript, using FP. We did, and even though it took a long time to build the tools we were going to use to build the actual applications, it was all worth it. Our application framework, now named, Pagoda, is a pleasure to develop in. A lot of the modern day best-practices are built into the framework at a deep level; which takes a lot pressure to do things the right way off of us, and now, off of our dev team.

I hope what you get from this is that anyone can learn to program. There was no mention of college, no structured higher education. Opportunity, both given and created, hard work/studying, and the willingness to fail and get back up. It’s definitely not a job for everyone, but if you’re interested in it, even a little, make sure you stick with it long enough to really give it a shot. It will take months before you even start to feel a little comfortable writing your own code.

Please understand, this is a lifetime pursuit. When I say I understand a language or a concept. That usually means I know enough to be dangerous with it. Every time I solve a new problem, I learn something new. It’s a never- ending process.

Study the concepts, the paradigms. They will teach you how to think about solving problems. And that’s really what your greatest skill as a programmer is. Not the languages you know, but how you approach solving new problems.

Thanks for reading!