Andy Vaughn

The Evolution of a professional web developer

Today, I reflected on websites I’ve built in the past and the tools I’ve come to deem essential along the way. Essentially, my evolution as a professional web developer.

When you first start a vocation, highlighting your strengths is the most pressing need. It’s difficult to stand apart from the crowd, differentiate yourself, and often justify that you’re worth the amount you charge. As you progress, your skills gain refinement, your strengths have been highlighted time and again, and the rate you charge is put to question less often.

Then there’s a shift in focus.

Some catastrophe occurs, or you’re put on the precipice of disaster. Inevitably, if you keep working in this profession, you recover, and the situation rights itself. But, you don’t want it to happen again. Hence, the shift in focus. Your weaknesses become the recipient of attention. Resources are allocated to fixing these weaknesses and tools are put in place to ensure success.

Some of these tools highlight strengths, as well. For example, CSS is a fantastic development resource that has forever changed the way I make websites. It works towards future-proofing a website, separating content from presentation. It allows for rapid development changes. And, it shortens the redesign life cycle one-hundred fold.

Here is a list of tools I now label essential in my development arsenal, and my reflection upon the days before…

CSS

The days before CSS. Ahh, font-tags galore. I remember spending a week adding tons of nested font-tags to individually color, size, and style each letter in a title on one of my cycling sponsorship pages. I can’t even imagine touching the markup in this manner now.

Includes

I first used includes not in PHP, but using Apache server-side scripting. Very old-school style:
<!--#include virtual="/footer.html" -->

This taught me about templating and creating a singular file to hold the header, footer, navigation, or whatever. I actually went overboard on one site and used includes for everything, just having an index.html file under each separate folder include all the pertinent content. I was actually simulating a CMS‘ behavior at the time, but didn’t know it.

PHP

My first taste of PHP was also in the manner of includes. However, after exploring and playing with it a bit, I found it could do dynamic copyrights, and other fun date checkers. When I discovered loops, switch statements, and boolean checkers, I basically thought the sky was the limit, and there’s no stopping me now! I was right…

CMS

Content Management Systems are a beautiful thing. I first created a custom one for a client in a very odd way. I basically had written the entire site with “static” PHP files. But, on a few of the pages that they wanted to have the ability to edit (“Why would anyone want this?”, I thought at the time), I included a call to a database that inserted whatever they put into the table directly into that section of the page. The rest of it was static, but they had the ability to add/edit/delete any of that content. Images were not changeable, but text and HTML were fine.

WordPress

Then I discovered WordPress. My love. “Why would anyone not use WordPress?”, I postulated. Everything was done in WordPress for the next two years. All I touched was WordPress. Custom business site? WordPress. Blog? WordPress, duh. Online game? Sure, WordPress. Magazine? WordPress. It was awesome. It still is.

Javascript

Oh, the horror! When I first started working with Javascript, it was heavily reliant upon the Dynamic Drive libraries. I could make banners rotate, images lose opacity. It was cool. But touching the code was a horror.

One day I was asked to write a custom chess tactics engine that dynamically interacted with the user. I first thought I could try and do this in PHP with reloading pages, but that was just insane in practical use. So, I settled down and decided that I was going to write my own Javascript library that allowed for the insertion of coded puzzles to be called up and played with by the visitor of this (of course) WordPress site. Lo and behold, it worked! It took some slick maneuvering, but I was able to do it. And, I overcame my fear of Javascript.

Now, I rely extensively upon the JQuery libraries for UI, AJAX, Form validation, and other dynamic behavior I used to have to code myself. Thank you John Resig.

Databases

While I use MySQL almost exclusively now, I first got started with Sybase databases. I much prefer the ease of developing in a MAMP environment.

Plowing through a ton of advanced PHP and MySQL books (there’s a billion in every library, and two billion at Borders), I found that I really began to enjoy developing my own applications. I created my own custom time tracking software, project management tools, workout logs, slick lean CMSes, etc.

But, the biggest benefit to learning how to create applications on my own, was that I began to appreciate the in-box development tools that were already out there. I could really appreciate WordPress’ 10-table install, and vomit when looking at a CMS that takes 233 tables just to show you an intro screen. I could extend existing databases with PHP plugins, and not cringe when I need to go searching for something in the database, when I couldn’t find it on the site. Fear of the unknown is half the battle for those that dare-not look into the underbelly of a database schema. Now, I can really appreciate a nice looking one.

Version Control and Terminal Transfer

I group these together because I learned them together. I learned Git at the same time that I learned Rsync and Scp.

Not being a native CS guy, I wasn’t a jedi of the terminal. But, I wasn’t afraid to learn. I had a great sys admin send me some tutorial links, and I plowed head first. Now, I version control everything, even my laundry. Rsync and Scp are both cool, because I don’t have to rely upon the inaccuracy of my fingers with GUI FTP systems. This is a small concern, but I have overwritten folders in the past, due to accidental or sleepy stutter-clicks. Now, I’m batting pretty successfully (crosses fingers). But, still be careful what folder you type-in when you write rm -rf <foldername> -oops!

Cron

To my Nor Cal friends, a Cron Job is not when your neighbor asked you to deliver something for him last Saturday night. A cron job is short for “chronos”, Greek for time. It’s a time-based scheduler.

With a cron job, you can automate the backing up of databases on a daily basis. This is very important for CMSes and becomes more tedious the more clients you have.

At first, I used to backup all the databases and files on a weekly basis by hand, but then I would forget, and that’s not good. I never had an issue where I didn’t have a backup and a database became corrupted. But, you never know when this may happen, so backing up is important.

Now, I backup my databases in a nightly cron, and backup my files and the DB backups to an external hard drive on a weekly basis. This takes them off my server and keeps them safe from harm (or at least as safe as I can get them easily).

What’s next?

So, what’s next? Those are the tools that I rely heavily upon right now. If I had to start over, these are the insurances and bricks I would buy to begin construction. We’ll see what is next. I’ll definitely keep you posted.

Posted by Andy Vaughn on April 25, 2010

2 Comments to “The Evolution of a professional web developer”

  1. Sheri Dover says:

    Thanks for the nice post, Andy. From my geek-curious point of view, this is an interesting post; I’ve always wondered what the must-have tools are for web development.

Leave a Comment