I’m busy. I’m an American living in the twenty-first century in the Northeast. You can go read the statistics, but I’m part of a group of hustlers. We get stuff done. I’m usually busy freaking out about things on my todo list. They usually break down into three categories: things to do at work, things to do for myself, and ways to improve my skills. The ordering is important here, because the same order in which things are ensured to get done, is the reverse in which things will be neglected. We all know that your personal goals can be easily prioritized last and neglected first. There are probably more than a few books written about how to be successful, make friends, get rich, and conquer the world; and likely most of them pivot upon a central principle: time management.
We are living in what I perceive to be an information Big Bang. Our lives are disrupted exponentially more by information and technology than was the case a decade ago. I have to squelch the questions asked by my own brain just to get through the day. Thoughts cross my mind like: which blog should I add to my reader? Who should I follow? Am I missing out on anything important? Is there new technology that I should learn? Are my skills still relevant? Will they be relevant a week from now? What are people saying on Twitter right now? Ahh! What to do‽ Unfortunately, I don’t have the answers for How to Stop Worrying and Love Information Technology Overload.
If you can manage to filter out all the worrying and get to the most important part, self-education, then we can begin to make some progress. It’s what got me here. I’m apparently writing this article because I have convinced somebody that I might know something, likely due to something I’ve taught myself. As web professionals, we have to learn all sorts of skills. Each skill had to be given some portion of your attention, and likely that study made you a better person. As the years go by, people come to know you by your accomplishments, and you get paid to do those things. But what about the things on your self-improvement list? Do you ignore them because you ran out of time?
Every time I approach a new task, my own little mini Big Bang of ideas goes off in my head. The task could be something simple like “add a notification bubble next to the label whenever something funny happens.” Unfortunately, I’ve already thought of 100 associated things that I would like to do to add my personal touch, as well as technologies to help me achieve my goals. Obviously, I have deadlines to meet, and I can’t just add new tickets at will without discussing it with my team, but I can choose one of them that is important to me, that will help me add value to the project and learn something at the same time.
Lately, I’ve been interested in automated web application testing. That shit is hard. Real hard. There are so many daunting words just to get started: unit tests, functional tests, integrated tests, acceptance tests, test targets, test-driven development, behavior-driven development… holy shit! What gives? What approach and technology should I use? Someone might recommend: PHPUnit, Selenium, Cucumber, Behat, Mink, CasperJS, and Jasmine. That’s a lot of things just to make sure my application works. Dude, I’m a developer. I’m always trying to ensure that shit is working with my eyes, and now you’re throwing all this crap at me? Now I’m not so sure my shit is working… aw man…
Relax. Time out. Yes, there is surely a lot of information out there. There are infinite things to learn. It’s going to take some time, but you can do it, I keep telling myself. First I tried PHPUnit, then Selenium, then Behat, &c. Did I get to my destination in the 15 minutes I wanted to? No, I did not. Am I learning? Yes, I am. When did I find the time to do this? I made time. I knew I had to work 8 hours today and for 1 of those 8, I changed gears and learned something to further my long term goals.
PHPUnit is for testing small blocks of code. Sure, I can write a test to make sure my function works, but how do I know it works in the larger context of the application? How do I know that when I click on a button, it loads the Ajax request, and then ultimately gets to that small block of code that already has a test. Well, then I would need to use something with a larger test target. In fact, I would love to write tests without using a programming language at all. Selenium IDE is built exactly for this reason. Now I have to learn two technologies just to make sure that I’m being a good developer and my feature is working. So last week, I set aside some time to learn both of these things, and I know more than I did a week ago. Testing is an incredibly deep topic. It’s going to take me a long time to learn how to do it right, but I had to start somewhere.
This is the only way to self-educate. You have to take the time to make the time. Knowledge is power, and in the technology field, relevant knowledge is evolving at an extremely fast rate. If you don’t take the time to keep your skills sharp, you will ultimately be left behind. Devote a small portion of your day for learning, and know that even a little is enough.