Learning by doing

July 10th, 2015 6 minute read

Breaking away from the illustration routine.

Starting this side project forced me to go out of my comfort zone. Learning PHP, HTML, CSS and a little bit of JavaScript along the way. That is a nice change of scenery for an illustrator, used to work on brief. So much so that testing PHP functions, fixing HTML and CSS errors felt at times like a soothing activity. This is when things worked.

Looking from another perspective

Yet writing code line after line is also tedious. Reading another person’s code until you understand it enough to make it do something else is tiring. But working outside of your abilities also forces you to see things from a new perspective. Doing someone else’s job for a while gives you a better understanding and a new-found respect for their work. Web development can definitely be a frustrating job.

Learning new skills

After all those hours, my PHP knowledge is still minimal. And I still wouldn’t call myself a WordPress developer. But I learned enough to write custom functions to build a little thing that somehow works. Using frameworks and with the help of online articles, I learned to design a WordPress theme. Now I have a much better understanding of WordPress and how its convoluted logic works as a whole. And yet I only touched the surface of its potential. In time, this theme might evolve as I will continue to use, maintain and improve it, fixing the code along the way. Marginal improvements are good.

Build vs buy — Time & budget constraints

Working in a new field has a low-efficiency threshold. The time spent working on the web development side of this project far exceeded what I had imagined. I could never justify spending that amount of time on an in-house project or freelance assignment. Web design is a fragile thing, where improving something might break something else. And it sure does when you have no idea about what you are doing. Then there are cross browsers compatibility issues. Building and testing the site, the whole prospect seems never-ending, because it is never perfect. Not to mention time-consuming updates and maintenance once ready for production. Build vs buy is a recurring question for any enterprise. A professional web designer would have done the same work in a fraction of the time it took me. Since I have a day job, this time could be better spent elsewhere: designing comics or working for clients. Perhaps this is true. But despite all that time spent, the benefit in learning far outmatch the drawbacks. Time is only a fraction of the cost required to design anything. In this case, I’m happy to trade it for learning and gaining a little bit more independence. Without a budget, I had to find a working solution on my own. The result is an answer to a problem that lacked a ready-made solution for the project’s requirements. What’s more, it might be useful for someone else, if only as a starting point. And last, the ability to code a website is a valuable skill on its own. All the time spent on this side project allowed me to redesign my portfolio theme in less than a week.

Getting stuck / Finding answers

As I struggled with WP theme design, one thing stood out again and again. Most of my questions had already an answer somewhere. Most likely, the best answers were already in the WordPress.org codex. Or in the newer code reference, which is easier to read. Thanks to its large, active community, any specific WordPress search will return thousands of entries on the web. The catch is you have to browse through hundreds of threaded comments. Some may or may not pertain to the issue you are facing. A forum answer might either help to fix your problem or lead to new ones or both. Due to WordPress ongoing evolution, tutorials and books may well contain deprecated code. Another lesson to take home is that copy-paste seldom works, if ever. In the end, copy-pasting code snippets will take more time as many learn the hard way. Since code and functions are in large part theme-dependent you will do better if you read the documentation first. You can then adapt your code to your situation. Copying is useful for a beginner though; you have to start somewhere. Spending time reading the WordPress codex is sometimes worth it. It shouldn’t be in last resort. It is the best starting point of reference one can get on the topic, period. RTFM seems to apply here.

To understand how things work, ask the right question

When things don’t work the way you expected, you can look for help. Often, the answer is not as important as how you phrase the question. Sometimes, rephrasing your question will help you understand the problem better. Or at least it will help others understand how they might be able to help you out.

In the case of WordPress, there is a large community happy to help, and that’s a good thing. One thing that doesn’t work well and will impede your learning progress, is waiting for people to do the work for you. What you need is not someone else’s solution but someone pointing you in the right direction. That will help you come up with a solution that works for you. So that, the icing on the cake, you will be able to improve that solution on your own later on.

Still, something that seems complex to you is easy to someone else. If you are still stuck after doing some homework, you should not shy away from asking for help on the specifics. But you should at least try to understand how things work first. It will save everyone’s time and lead to better answers as well. When you understand more or less what you got wrong, it becomes easier to ask the right question. More knowledgeable people will be eager to help you. For instance, look on the WordPress IRC channel and the WordPress StackExchange site.

Making mistakes

Most programming works by experimentation, little by proof. Making mistakes is a good way to learn. It might lead to findings you didn’t even know you were looking for.

Keep a log of progress and failures

Documenting your development progress ultimately saves time. It prevents restarting from scratch after a long interruption and helps to learn. Documentation adds up and comes in handy sooner than later. Keeping everything in order is generally a good idea.

What’s next & how to correct past mistakes

While this project is still in infancy in term of results, I’m glad it got started. I was able to confront some of the issues a brand new webcomics publishing platform faces. Yet there is room for improvement. Working without a defined deadline made was a mistake. The absence of a proper schedule between freelance assignments made things worse. Thus progress is uneven; the only constant here is slowness. Being so used to deadlines as a freelancer makes it harder for me to finish something if there is none attached. At the same time, this is also what made the project enjoyable and different from “work”. Being unfettered is a breath of fresh air, and that’s the fun part. But the truth is I have still little to show for given how much time passed since the project started. That has to change. No way around deadlines and commitments.


  • Learning by doing, one mistake at a time is the best way to learn.
  • Building a prototype for something you use or need is a great way to start, and fun, too.
  • A certain amount of failure is fine.
  • Perfectionism hinders progress.
  • Keep a development log to document your project as you go.
  • Working on many projects alone is not a recipe for speed, in hindsight this was probably a mistake
  • Side projects need deadlines too.
  • The journey is the reward (cliché, but true).

Leave a comment