It's human nature to find your niche in the IT world and remain in that comfortable place. But when I look back on my IT career as a systems analyst and developer, I realize that I learned the most when I took on new challenges. I would like to share with you the opportunities that I took advantage of -- and a few that I missed.
The items listed are targeted toward programmers, developers, and analysts, but if you are in a different IT position you can still benefit from many of them.
Note: This article is also available as a PDF download.
1: Build a PC
I have heard the saying "Hardware is easy and software is hard," probably said by a programmer. I'm guessing that many software developers have never built a PC and therefore know little about component compatibility, how PCs work, or how to replace them. Software is hard, but hardware poses its own set of challenges.
I have over the past three years built three PCs, and I gained a lot of knowledge about hardware in the process. This is an opportunity missed. Had I built a PC early in my career, I could have saved a lot of time -- and the projects requiring basic hardware skills could have gone much smoother.
There is a good chance that as a developer, you will eventually need to get inside a PC. For example, I have had to install a Token Ring card, an IBM 3278/79 emulation adapter card, and more than one hard drive. By building a new computer, you will learn some basic hardware skills that can save you hours of OJT or time spent waiting for a tech during an important project. Just do your homework before ordering components and beginning your build.
2: Participate in an online forum and help others
When I wanted to learn more about hardware, I participated in the alt.comp.hardware forum on UseNet. I read the postings for weeks until I had a better feel for the type of information that would benefit those seeking help. Then, I selected specific posts to lend some help. My goal was to successfully solve the poster's issue and learn something in the process.
I had experience with RAID, so I selected a post from a person who couldn't get RAID set up on his computer. I had to download the manual for his motherboard and carefully read it to help. I learned to ask for the pertinent information up front and patiently have a dialog with the original poster until the issue was resolved.
Helping others is one way to give back to the community. It not only benefits those you help but you can learn a lot yourself -- just ask any teacher.
Note: This is one item that you should do on your own time unless you have approval from your manager. The forums here at TechRepublic are also a good place to help others needing your expertise.
3: Man the help desk
I worked in an IT group that rotated its staff in for a one-week stint at the help desk. Some of the most terrifying weeks of my career were spent manning the help desk for systems I knew nothing about. It became less terrifying when I learned that it was fairly simple to create a help ticket if I couldn't solve the problem with the user on the phone. I helped out as best I could. I soon learned from some of my helpful peers how to fix some recurring issues and found some comfort in the fact that I could be useful. I learned to understand user needs, and while it wasn't exactly enjoyable, I found the interaction a good experience. I dreaded the duty, but it was a good policy.
You may not want to answer phones, log user issues, and deal with someone else's problems, but again, there is the satisfaction of helping others. You will almost certainly gain a new level of gratitude for those underappreciated front-line help desk soldiers.
4: Perform field service
In addition to help desk duty, we were required to close as many tickets as possible. This sometimes meant a "road trip" to the user's workstation. There's no better way to understand the needs of users than to meet them and their computers one on one. I'm not suggesting that you try to solve hardware problems, but there are a number of help desk tickets that software developers can diagnose and fix.
You might be tempted to sit down at the user's computer and dig into the problem, for the most part ignoring the user. But the field tech's bedside manner is just as important as his or her computer skills. Take the time to ask the user what the problem is. If users need to vent, let them. Try to put yourself in their shoes long enough to feel the frustration that is most likely there. Removing that frustration can make you a hero for a day.
5: Perform DBA functions
If your company or IT group doesn't have a dedicated DBA, the programmer/developer is the best person to design, build, and maintain the system database. If you do have a DBA, work closely with that person. Submit the data requirements and learn why the DBA creates the tables, indexes, and fields the way he or she does. As the developer, you are in a unique position to help the DBA with the database design.
Having a good working relationship with your DBA can be critical to the success of your project. Help out where you can. If you are transferring data from another system, offer to help the DBA with this process.
As the system developer, you will need a good understanding of the database structure. Whether or not you are fortunate enough to have a DBA, your participation in the database development process will benefit you directly when it comes time to write code.
6: Perform all phases of the project lifecycleIf you have limited your job function to programming, you are missing most of the phases of the project lifecycle (Figure A).
The seven Project Life Cycle steps (originally found on Wikipedia). For more information, see Processes and meta-processes.
By performing the analysis and design, you will have a much better idea how you are going to write the code. Testing, documentation, and maintenance should be easiest for the programmer, although I believe that maintenance is best done by support staff and not the developer, if possible. You may not be exactly excited about documentation. But you can benefit directly from documenting your own work, as I discuss in 10 things you can do to create better documentation. Briefly put, the better the documentation, the fewer interruptions you will have during your next project.
The greatest satisfaction I have gotten on the job is the full ownership and successful completion of a project. There's no one else to blame if the project fails, and you can take pride in the system when it is completed and performs as designed.
7: Recognize and learn the latest technologies
I have built many traditional application-based client-server systems, but I never got a chance to develop a browser-based equivalent while on the job. Sure, I built a Web site in the late '90s and have done some Java scripting. I have several times started to develop a database-driven browser-based app that is so essential in today's business environment, but I always get sidetracked onto another project. To say that this has been career limiting is an understatement. Failing to broaden your skill set with the latest trends in technology can be costly.
Web developers shouldn't overlook the traditional application-based client-server world and PC applications, either. IT job security is increasingly important, and a developer with skills in both areas is a more valuable commodity to employers.
8: Be an independent contractor
You can learn a number of business skills as an independent contractor. You'll need to understand contracts, negotiating, self employment tax payments, income planning, and often, new systems. You may need to budget for expenses, like additional software and hardware. You will likely have to work closely with other IT professionals you have never dealt with.
I have been an independent contractor twice -- once part time, while already gainfully employed, and once full time in a temporary assignment. There are several pieces of advice I would give. First, be careful about trying to work as an independent contractor "on the side." I found it to be very difficult. There is the risk of burnout, and your full-time employer may not like your non-availability and lack of downtime. Also, avoid working for a close friend or relative. The network of friends and relatives is the easiest to mine, but something always went terribly wrong when I used this network.
Full-time work as an independent contractor has its risks as well. When the project is finished, you may not have another contract assignment lined up. Independent contracting isn't for everyone. While you can gain valuable skills as an independent contractor, be cognizant of the risks to your career or current income source before you commit to this career choice.
9: Lead a project, supervise, or manage
The dark world you may have cursed quietly under your breath more than once is awaiting your leadership abilities. Maybe your leadership skills are lacking. You can work on them just as you would any other skill.
I have led several projects during my career. Both were successful, but I had an uncooperative employee for one project. Looking back on it, I realize that my manager and I could have handled the situation better. When a problem like this arises, your people skills will be tested. You may need to seek help from an experienced manager whom you trust and who is not involved in the situation. I failed to seek help when my people problem arose. Don't make the same mistake I did.
Taking a supervisory role will give you fascinating new insights, and you will gain a new appreciation for your management team. What you learn will help you work better with your peers and managers in the future. And who knows? You might even like being project lead or some other managerial position.
10: Seek additional education
Formal education may be the best course if you learn better in the classroom. This option is especially worth pursuing if adding a BS, Masters, or PhD degree can increase your take-home pay. Some companies will even pay part or all of the tuition. If this option is available to you, seriously consider taking advantage of the opportunity.
I have always found OJT to be the best way to learn a new skill. But I now find myself questioning whether I should have pursued at least a couple of classes at the local community college to supplement my education.
The final word
There is a saying among bodybuilders: "No pain, no gain." The same goes for career building. Stepping outside your area of expertise can be painful. But if you really want to develop new skills, solidify your employability, and expand your career horizons, you'll have to step out of your comfort zone and take on some tough new challenges.
You might fall flat on your face and fail. You might find that you can't bear waking up in the morning if you have to man the help desk. That's okay. You won't know until you try. I haven't always liked my job assignment, but I always did my best and enjoyed the challenge. And although I've certainly made my share of mistakes, I have learned from them and moved on.
Check out 10 Things... the newsletter
Get the key facts on a wide range of technologies, techniques, strategies, and skills with the help of the concise need-to-know lists featured in TechRepublic's 10 Things newsletter, delivered every Friday. Automatically sign up today.
Alan Norton began using PCs in 1981, when they were called microcomputers. He has worked at companies like Hughes Aircraft and CSC, where he developed client/server-based applications. Alan is currently semi-retired and starting a new career as a writer for TechRepublic.