Michael Lopp recently wrote a piece titled Hacking on Mtrek where he says:
My version of hacking at the time was, “Oh shit, how am I going to write this code in a language I don’t know against a codebase I don’t understand quickly enough that this guy who I respect doesn’t think I’m an idiot?”
Lopp’s article is a fantastic read which mimics my learning of code closely. I’ve never taken any computing courses (outside of typing when I was in like 4/5th grade), but I have written plenty of WordPress themes, and am known for my massive CSS files that serve what are otherwise straightforward and simple sites.
I learned all of this because I hacked at WordPress for hours on end, and I continue to hack at WordPress today. I know right where it started too: I wanted to change some link colors on an old blog.
Then I wanted to add some borders.
And then I wanted to install some Daring Fireball(http://daringfireball.net) style Linked List action.
Then I wanted to only show certain posts on my homepage. And on and on the process went. I never intended to learn anything, but I had no money to hire someone to do this for me — what I did have was time.
I don’t know how to write PHP, but I do know how to read and mostly understand the PHP that WordPress uses. Because of this understanding I can look at code passed around the web, and on the WordPress Codex, and figure out what I need to put where. I don’t really understand how to float divs, or use visibility, or media queries, but I can get pretty close with trial and error and a lot of time (hence the massive CSS files).
The entire theme for this website is one big hack. Nothing more. That’s why it loads a bit slower than “good” themes, but it is my hack and I love it.
I’m always changing this theme and soon I assume I once again will tear it all down and re-write it from scratch — and perhaps the next time it will be a touch less embarassing and a touch faster.
Hacking away at stuff I don’t understand is how I got the skills and knowledge I have today. Keyboard Maestro was confusing to me at first, but as a hacked away at it I understood it.
The point of all this is that you should never be afraid to hack away at things. I still hack away at the CSS on this site, and while the site is live I save the change and see what happens. Maybe the entire site dies because of that, or maybe it doesn’t — I don’t care. I don’t care because I am working at learning and those few minutes of a broken site won’t really matter to anyone in the long run, but it will help me immensely.
Stop caring and worrying about breaking things and start hacking at them — just make sure you have a good backup in place first. Remember that for many of us it is more about learning than anything else.