In their book, The Pragmatic Programmer (recommended for anyone that programs), Hunt and Thomas refer to something known as the “knowledge portfolio”. They call it a portfolio because they believe it should be invested in over time. You should always invest in your portfolio so that it grows and never becomes an excuse for holding you back. In the computer industry, or any industry for that matter, if you are not growing you are not moving.
High School Students, College Students, and Recent Grads
Since this is graduation season I figured I would start with the recent and upcoming graduates. You may think that life has put you inside of a Catch-22. To get a job you need experience, but to gain experience you need a job. There are plenty of opportunities to gain experience in the world you just need to know where to look. Too be honest there are so many laid-off professionals that if you do not increase your knowledge portfolio you will more than likely not succeed at all in competing with these professionals. Let’s not also forget the fact that businessmen are asking the government to increase the H1-B quota to bring in even more foreigners for cheaper labor.
For many of us out there I believe the secret to success lies in open source software. Go to SourceForge.net and there you will find over 65,000 chances to gain more experience and increase your knowledge portfolio. There you will find over 600,000 individuals who in most cases are willing to help you get better. Web designers this is your chance to jump on board and design their websites for them because most open source projects need the help of a good designer. QA people can help test the products. Technical writers can write the documentation. There is always something to do because programmers can’t do everything (even though they sometimes try).
Follow the advice given above. Stay active in your profession even if you do not have a job. Let your future interviewers know that you have the desire to work and that you love what you do by participating in Open Source projects. If you are a designer you would be surprised on how many clients you could get through a blog. No employer likes to see a 6 month gap between jobs because that could be a sign of someone who does not mind staying complacent. Even though you are not geting paid, you should never stop doing what you love.
You should also start a blog. You would be amazed to the amount of contacts you can develop from it.
Always try to learn something new or improve on what you already know. Programmers this should be easy because I think very few individuals can truly master a programming language. Even better, you should learn another programming language that might help you with future problems. Right now I would say that my two major web programming languages are PHP and C#, with Ruby starting to quickly creep up. They are both useful to me because I use them for different circumstances, although I don’t have to use them nearly as much as I did in the past (thanks Colin!). By learning C# I have already moved mostly into Java since the syntax so closely mirrors it. I have a broad portfolio (more out of necessity), but it has helped me more times than I could count.
You may think that running Business Logs and 9rules wouldn’t entail the need to know programming, but it’s good to have because it allows me to communicate with Colin about programming isses and have a decent understanding of what he is talking about.
Web designers may not wish to learn a new programming language and it is very easy to master HTML given enough time and practice. However, CSS is another beast completely. Everyday there are new examples of individuals pushing CSS to its limits. There is always something to be learned about CSS. Also try to get better at information architecture, design, and document design. You will build better websites from your new knowledge. Increase your understanding of usability. Find out why eBay and Amazon succeed where others fail (and it is just not first mover advantage). Just do not stop learning or think you have done everything you can.
It is okay to become a jack of all trades, master of none, because all of these skills will give you a broader perspective on how to handle different scenarios. The top guys in the industry never stop pushing themselves and it is no wonder they continue to pump out great stuff that others could only wish to achieve. Eric Meyer is known as a CSS guru, but yet I witness him trying new things with CSS all the time so that he may gain a better understanding of the technology. Dave Shea and others do the same with the CSS Zen Garden. The point is they are the best for a reason. Not because they were born with the knowledge, but they continued to push themselves to new heights never seen before. With the Internet and Open Source, this is possible for any individual.
Make learning a habit.
Do as the quote above says and you will find yourself a better programmer, designer, architect, doctor or whatever. Continue to learn because you love what you do, not because someone told you to do it. We have so many resources at our disposal that there are no excuses to not push yourself or learn something new.
The best way to learn is by doing. I wanted to learn how to write better. I created this site for that purpose and arguably over time my writing has improved (once I proofread…if at all…damn…). I am learning better ways to express my ideas and opinions. I am learning what colors work best where. I am learning what good legibility entails. I am learning and I am loving it. Knowledge is one of the few things people can not take from you. Cherish it and continue to help it grow.