HOW TO STAY CURRENT IN WEB TECH WITHOUT IT BEING YOUR DAY JOB
I am not an aspiring writer. I typically don't write on this site to share deep thoughts, business analysis, or to promote myself. I might only post three times a year. If you looked at my Google Analytics, you would laugh at my paltry traffic figures. No, I don't have this blog for the reasons most people do. I have a blog to teach me how to keep current in technology - and you should too.
The Backstory
In the '90s if you knew a little HTML, could buy a domain name, and could rent space on a server you were considered an expert in the dark arts of digital. You could largely write your own ticket in the job marketplace. I was fortunate to graduate from college in 1996 when the Internet that we know today was a just a baby. I moved to New York City where I embarked on a career building web businesses and services.
This was a time before there were siloed distinctions between many responsibilities in a digital organization. The roles of product manager, engineer, designer, quality assurance, net ops, digital marketing etc. all blended together into Webmaster. The expectation was that you could do it all.
I worked here. I worked there. I rose through the ranks. I built web sites and businesses. I learned management, design, marketing, and product. I managed engineering and ops teams. They taught me about code, security, databases, and servers. I gained a surface understanding of languages like CSS, JavaScript, Python, and PHP. A major media organization thought it was a good idea for me to be the person carrying a beeper to keep their Sun Sparc servers running 24/7. So I learned Unix and basic shell scripting.
I became well rounded product manager, entrepreneur, and technologist. But I never learned the classroom basics of computer science. Never wrote an application from top to bottom. Never configured a server from scratch. Never learned the things that would help someone answer Google's engineering interview questions.
Every year, as web technologies became more complex, I became less and less able to do or even understand everything. I am sure the story is the same for many people who came up at the same time I did.
The question kept surfacing. How can I stay current with technology when my day job no longer involves reviewing code and the tech stack becomes more and more complex?
My blogging history
Sometime in the early aughts blogging became the rage. The term was everywhere. I thought I'd add 'blogger' to my resumé and I launched a site powered by Moveable Type. I spent months tweaking the design, the code, the CMS, and the servers but I think I only wrote a single post.
Then I moved my blog to Wordpress. I had dreams of writing every day and making a name for myself. After another few months of fiddling with all the codes, I think I wrote three more articles.
A few years later, in a now familiar trend, I moved from Wordpress to Drupal. Once again, months of tweaking and little writing.
Finally, in 2013 after a decade of fooling myself, I threw in the towel on being a writer. I did replatform my blog once again, but now for different reasons. 2013 saw me move to Jekyll where my blog still lives today.
I had finally realized what all this blogging had been about for me. Not writing — but staying current on design and technology. Each time I created a site I would treat it as if it were going to be a major media company's Web site. I brought the same expectations for performance, design, SEO, and UX to my own site that I brought to the company's where I worked.
As a consequence, every few years I would:
- Read about the major fads in web design/development
- Work with the most recent version of Photoshop
- Read about and obsessively implement the most current SEO guidelines
- Write my own HTML templates and CSS
- Build security procedures to thwart hackers
- Find a new web host and configure databases and servers
- Parse through and tweak JavaScript, PHP, Ruby, Python etc. written by people much better at programming than me
As an ancillary benefit, now that I understood what I was creating these sites for I now had something to write about.
How to stay current in web tech without it being your day job (or how to go about blogging without writing)
Using my blog as a learning tool has proved very powerful for me. I will list the top-line items you'll need to think through below. Keep in mind that the important thing here is learning. Don't make decisions lightly. Spend your time reading about your options, doing Google searches, trying one approach and then another. Go down the rabbit hole.
- Pick a platform - There are many options here but I strongly recommend a flat-file CMS. Pick one based on the languages you want to use and the support in the community. I selected Jekyll since I wanted to learn Ruby and write in markdown.
Design and configure your site - I recommend creating your own design/theme for your site. After all, this is a learning exercise. Some things to focus on:
Ensure your site is responsive for mobile and desktop use
- Write your CSS using a preprocessor (LESS or SASS)
- Figure out your file organization and asset pipeline
- Make sure you understand every configuration option available regardless of whether you change the defaults
Put all your code into a private Github repository
Integrate 3rd parties - Start integrating the 3rd parties (if any) you want to integrate into your site. Disqus for comments? Google Analytics for usage data?
SEO - Take SEO seriously. It's important to understand everything in this space. Some items to make sure you review are:
Schema.org markup
- Opengraph tags
- Twittercard tags
- Canonical links for all your content
Make sure you have a sitemap.xml
Validate validate validate - Make sure all your code is correct using services such as the WC3 Markup Validation Service.
Write your build routines - These routines are run every time you compile your site. Some items to think about here are:
Minify your HTML, CSS, etc.
- Check your site for bad links
- Compress your images as small as possible
Configure a continuous integration engine such as Jenkins.
Configure your host - I wanted to learn about Amazon's AWS service. To do so I chose to host my site on AmazonS3 and deliver it to consumers via Amazon's Cloudfront CDN.
Extra credit: get yourself an SSL certificate and serve your site exclusively via https.Write a deployment script - How do you plan on getting your site from your computer to your host. I wrote a custom shell script that does the following:
Builds my site
- Tests the links
- minifies images and files
- Deploys to Amazon
- Busts my CDN cache
- Pings external services about new content to be indexed
In following all these steps myself I became proficient in a number of technologies, languages, and services that I wouldn't have learned if I had kept to a Wordpress site using some open source theme. Here's just a partial list of the things I learned by building my Jekyll site.
- Ruby
- Jekyll
- Bash scripting
- Amazon AWS - Route 53, S3, Cloudfront
- Working with Restful APIs
- Schema markup
- Git and Github
- Advanced use of the command line
- Homebrew
- Bower
- Sublime Text 3
- CodeKit
- Much much more
I look forward to starting over in a few years when it's time to learn a whole new slew of technologies. Let me know your thoughts on keeping current.