Published on April 22, 2020
Freelance Web Developer, Crimson Knight Studios
Computer science degree
I don’t think it put me at a disadvantage. Having the 4+ years of traditional education may be helpful to some, but a lot of that time is spent on very unrelated skills for software development. At least half of that time is going to be spent on completely unrelated topics, and for someone like me who made the career change after 12 years in the professional world, I really don’t think writing a research paper on Computer Science will be beneficial.
I learned the basics back in high school. I took 2 (full) years of programming classes, which included Java 6 at the time. I was lucky that my teacher was a lead programmer for IBM for 25 years before being a teacher and he was a mathematician by education.
He hammered efficiency and other subtle good habits into us/me at the time. I got up to speed on Ruby/Rails by taking some classes on Udemy and joining the GoRails community. I continue to spend 1-2 hours per day reading/watching content produced by excellent teachers on oReilly through their monthly subscription. Definitely one of the best investments I’ve ever made.
I haven’t launched any yet, I think I spend most of my personal project time experimenting to see how well I really understand what I already use and just working through. I have a couple of gems I’m working on to help other Rails developers who have public forms and need to manage spam/bot submissions intelligently. I was pretty surprised to find out early on that this is a sore spot that seems to be overlooked pretty frequently or handled haphazardly. That project/gem I call BanHammer, because “F*ck spam” haha!
My other passion project is a social media network that focuses on helping content creators run social media as a business, and protecting their content as intellectual property. It’s intended to give a similar user experience for a “consumer” as Instagram/Twitter, but with a lot more of the benefits geared towards the Creators.
Not everyone loves creators the same, but I’m definitely one of those people who follow musicians and other talented Makers on YouTube. I find watching people do skilled things incredibly exciting and invigorating! If you watch indie musicians cover or original song, you’ll notice a common format: they usually name/shoutout a sponsor at the beginning of the video, they’ll mention their Patreon account, they’ll also link to their other social media platforms and they do live streams on Twitch, and usually, they’ll also have links to iTunes, Spotify and other places their covers/originals are available to listen and download.
A common thing that is missing is eCommerce. From a content creators perspective, the current business model means juggling 5+ online vendors and their audiences and hoping they all work nicely together while getting your audience to bounce around to all of your different website locations.
I want to centralize all of that, and especially stop with the algorithms that punish content creators as their audiences get larger.
I was lucky, and I got my first freelancing project from an old marketing client who had a website built on Wordpress that was collapsing in on itself. It was 70-80K pages of unique content at the time and had gone through various theme changes, and poorly done development from overseas “developers” who I’d better describe as “Plugin Masters”. I convinced him to let me rebuild the whole thing on Rails and move everything there. It was hell for about 3-6 months. I mean, I took on everything from building the app to all of the server setup and built the entire DevOps system along with the app.
I wouldn’t recommend it for the faint of heart or someone just getting started in tech. I already had training and experience managing server clusters from the web/digital marketing world, which made it easier but it’s still a very different level of complication when it comes to a production-ready app for a full-fledged business.
The documentation sucks. It’s usually written for people with at least an intermediate level of knowledge, and then beyond that, a lot of the “How To” information out there is super dated.
Stack Overflow is not your friend, and those 8-year-old articles with solutions are probably not the best option any more. Security flaws get found, processes change, compatibility changes, and I never feel like it’s documented that well. Also, a lot of the beginner level courses I found only teach people “how” to do something, but not “why” they are doing it that way. If there is more than 1 way to accomplish something (chances are good that there is), then can you answer the question “why did you choose to do it that way?”
Constant self-improvement. I may only be 1.5 years into being a “developer” full-time, but I can perform magical circles around developers with even 6-7 years of experience. This is because I am constantly focusing on learning and improving, but most developers learn how to do something once and then just stop. You can’t do that, you’ll get stale and struggle in your career.
The other “soft” skill I think more future developers need is to assume the end-user is a complete and total moron and at every chance, they get to they’ll break your app. Do you have a field that requires a specific file type? Better make sure you labelled it and added in verifications/restrictions of some kind to make sure you force the end-user to do things the way you need to.
I’ve had to fire too many contractors and clean up work from other developers who build things that only work in the absolute perfect scenarios that they were designed for. Which sounds intuitive, right? It was designed to work one way, and it only works in those circumstances.
But imagine if GM or Ford designed a car that ran fine in Illinois, but they never thought to test what would happen if the altitude of the vehicle changed. Their cars would all stop working in Colorado! Oops! Do your best to make sure your features work as intended, and that they can either make up for a users misuse/misunderstanding of the feature or that they properly error out with something comprehensible to the end-user.
Find the tech stack that matches your personality. Don’t just focus on what’s hot right now. It’s short-sighted because what’s hot comes and goes, but who you are doesn’t change nearly as fast. I used to write PHP, but it’s an ugly language to me and Ruby fits my personality better, so here I am with Ruby and Rails. I’m far happier coding in Ruby than I ever was coding in PHP.
Also, learn the language before you learn the framework. Learning a framework first means you can get up and running quickly (which is very satisfying) but it also makes learning the differences between the framework and the language very difficult. You’ll miss out on a lot if you start framework-first. Take the time, do the nitty-gritty of learning the language first and go write a million ‘Hello World’ apps for the command line until you can write code on paper without having to look up methods/classes. Then move on to the framework.
Testing out Nginx Unit as an application server. I hate using Passenger, Unicorn is way too slow, and Puma is still really complicated to set up and run.
It looks like Nginx Unit solves that, and I’d really like to be at the forefront of that revolution. Assuming all goes well, I’m going to make that my first content piece of a community I want to develop for adventurous entrepreneur-developers like myself. I think I’m going to call it ‘OneDev’ or something like that.
For other Ruby/Rails enthusiasts, I’d really recommend Ruby Guides by Jesus Costello for a nice organized way of learning Ruby. His intro course is excellent, he explains things very simple, but in a usable way, and he also has a guide for intermediate/self-taught Rails people to learn more specifically about Ruby. That intermediate guide took my Ruby skills to a whole new level, and it was super easy to read and understand.
GoRails is also a no brainer - it’s been a tremendously helpful community and Chris’s videos are extremely valuable.
I’ve been enjoying the dev.to as a nice online community, similar to StackOverflow, but more like a Medium + SO, but nicer… hopefully, that makes sense. Lots of resources there, and way more up to date than other forums.
For the serious long-term person, I’d recommend the subscription to O’Reilly. They were the king of technical books back in the day with everything from Infrastructure to language-specific books, and everything from beginner to expert level content. I love it, it’s videos and unlimited books and courses, and it’s all excellent quality content. I use the app on my tablet, and every morning while drinking my coffee I watch 20-30 minutes of a video or spend an hour reading through a book. 1 tip, start something and work steadily through that 1 thing over time. Jumping around between topics will not help you in the long run.
On Github, I am crimson-knight. Feel free to follow me and when I start posting some of the gems I’ve been working on, you’ll be the first to know!
Don’t find me on other social media though, I don’t accept people as followers that I don’t actually know. 😁
Articles, guides and interviews about web development and career progression.
Max 1-2x times per month.