IT Policies

10 things you can do to advance your career as a developer

Tackling new challenges beyond your regular IT role will help expand your knowledge and skill set. Here are some career-building opportunities you may not have considered.

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 lifecycle

If you have limited your job function to programming, you are missing most of the phases of the project lifecycle (Figure A).

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.

About

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 wri...

24 comments
LevyRecruits
LevyRecruits

One thing is for certain: Offer up a list and the engineers will dissect it to the bare bones while the HR folks will look at the list and ask you how you felt after completing each task... Building a PC? Generically not so important unless as Rickst29 pointed out there's an architect component to it although I'll contend that you'll get some street cred if you build a home Ubuntu network. Project Management in this day and age could mean having a "leadership" piece of a SCRUM. But the one critical missing piece is old school - brick and mortar stuff...get to your local user groups and participate. Give a lightning talk, be a mentor to newbies, be part of the chapter leadership. Role this up into being a speaker at a regional or national conference. Write a blog and/or be a Twitterer. Teach entry-level programming at a community college. To advance your career, the solution isn't simply skills - you need to allow yourself to be found. (disclosure: I'm an engineer who crossed over to the dark side. I founded the Long Island dotNET User Group because the area needed a robust technical software development community. My head is shaved and I have tattoos - not really classic HR)

mjstelly
mjstelly

Well, it'd be nice if one could peruse this list, check off each item like a to-do list, and bada-bing, one has comfortable career path. Umm, it's not quite that easy. Granted, these things can help. Just as exercise can help stave off disease, it doesn't mean that you'll live to 100. I advise against using this list to gauge your level of success or lack of it. For instance, one does not simply wake up one day and say, "Hey, I think I'll be an independent contractor now. So, I can check that off my list!" Contracting and consulting is not for everyone especially the thin-skinned or faint of heart. TR has another blog dedicated to just that -- IT consulting. Check it out if you want to know more about it. Oh, and do that before you tell your current "pointy-haired" boss to stuff it. :D BTW, I can check off every item in this list as complete and I still got laid off. Finally, if you've chosen IT as a career (or it chose you), you are NEVER done. Once you've completed this list, you then lather, rinse, and repeat because I guarantee that what you've learned about X hardware or Y software has been superseded by the next shiny new toy.

anand.gupta
anand.gupta

Very Practical Post. I want to thank the Alan for the same.

Justin James
Justin James

Good article. :) I've been down *every* one of these paths myself, and you are 100% right that it makes you a better developer. A good developers needs the ability to view the application as a member of a "system", not just something working in isolation, and spreading yourself around like this helps a lot. The unfortunate downside is that development now requires so much specialization, that doing these things (at least, at a professional level) can sidetrack your career by years. Beleive me, it's hard to pull top dollar as a programmer when you are coming out of a stint as a sys admin (or one with a lot of sys admin duties). When I was growing up (the '80s and '90s), the stuff you list here wasn't how to "advance" your career as a developer... it was how you *got* a career as a developer, or any other IT pro! Most IT workers were hobbyists at some point, so they had already built a PC. There weren't online help forums for the most part, but there were local user groups which used to be fairly strong (and still are, in some parts). It was practically mandatory that people start at the company help desk supporting users hands on, and then moving in a QA role before they could be an actual "programmer". There were no DBAs because the data management was built into the application (dBase, COBOL, etc.); the concept of a DBA as a seperate role is a relatively modern one with the widespread introduction of RDBMS's during the '90s. Unfortunately, the dot com boom demolished this. There was so much demand for programmers, no one wanted to wait 5 years as someone grew and matured, they wanted them right out of school, ready to write code, so they started offering full programmer salaries to anyone with a CS degree and no experience. That problem is actually getting WORSE because of offshoring, because the cultures that are getting the work don't even have that tradition like in the US, UK, etc., plus the demand for developers there is extraordinarily high. Whoops. To make it worse, the level of knowledge needed just to be a developer now is so much higher... anyone who takes the time in their career to learn other things is going to be costing themselves huge amounts of money in the long run. So yeah, while I agree with this article 100%, it's a shame that it is no longer institutionalized into the career path like it used to be. J.Ja

Tony Hopkinson
Tony Hopkinson

Mentoring. reviewing all that 'obvious' stuff you learnt ages ago can make you question a few assumptions that had fossilised into facts. Training. The level of articulation you need to develop to do this effectively is constantly useful. Learn systems, the big picture. Our discipline is naturally sharply focused, the key is the level of abstraction you are looking at. Whether you are developing in machine code, or configuring a software suite, the skills (not the knowlegde) are the same.

Alan Norton
Alan Norton

If so, please share them. They don't have to be 200-pound bench lifts. 20-pound curls are also fine. If you are a developer do you leave system maintenance and support to someone else or do you consider it an important part of your job? As always, I will be popping in now and then if I can answer any questions and when I can add to the discussion.

Alan Norton
Alan Norton

Did the manager responsible for laying you off know you completed the items on this list? Managers need to be reminded of your accomplishments. Every item listed here can and should be included on your performance appraisal. I agree that independent contracting isn't for everyone. In fact I say so in the article. I am glad I had a chance to do some independent contracting so I could personally see the pluses and minuses. You are right, unfortunately. Do everything right and you can still lose your job but having these items on your resume should make that less likely. Thank you for the feedback.

Alan Norton
Alan Norton

"The Alan." Is that somewhat akin to "the Donald?" Would it be egotistical for me to say "I like?" :-) Thank you for the kind words. Edit: Formatting

D Walker
D Walker

Worked for a long time (just shy of 25 years) with a host based (multiple client shared mainframe) information system product that had a career path that included computer operations and production support before becomming a programmer. There was need for some of the operations and support experience. Probably kept be from being laid-off during the 11 years that it was sold off to other companies every few years in the 90's. One of the last 3 programmers to be laid-off a few years ago. Was able to know a large part of the traditional mainframe development environment. The modern mainframe environment would seem to need to include specialization in some of the off-mainframe development too. Front-end applications or web access opens up needs for development environments that use Java and/or Oracle (sometimes possible to run on mainframe co-processors) or even .NET. Had done Qbasic type programming as a hobby but did not keep up with non-mainframe development in the 90's. (Less of a thirst to code after doing it all day...) Had some opportinity to use Java and took training for .NET development but still working (off and on) as a mainframe COBOL developer. So I guess I would be considered to know a specialty. (Actually starting a new job soon after 18 months looking.) Sorry if my point may have been lost... got interrupted several times. (edit - fix some of the grammar...)

Alan Norton
Alan Norton

Justin, your historical perspective is insightful and thought provoking. A lot has changed since the early days of my career. I was the only IT professional in our department so I had to do it all. In later years it was only natural for me to want to help our DBA. Of course IT was called MIS (Management Information Systems) in those archaic days which led to amusing MIS-takes like the MIS Information Newsletter. It is so very enticing to specialize when specialists can get the big bucks. And as technology becomes increasingly complex it becomes harder to do it all really well. Edit: Grammar

Alan Norton
Alan Norton

Tony, Thanks for the additional ideas. Mentoring and training are other forms of teaching. You really need to know what you are talking about which means having a plan and doing your homework. You will learn much doing both and as you say update and reexamine what you have learned in the past.

BlueCollarCritic
BlueCollarCritic

As a DBA & part time developer I appreciate both sides of this one and can tell you that far too often, developers think of #5 as being #1001 on a list of the top 1000 things to learn as a developer. Thanks to books like 'Learn SQL in 24 Hours' developers have come think of SQL as just another development tool; like leanring about some new set of custom functions or classes wrapped up in a system file or 2. When in reality SQL is very, VERY different from the developers Object Oriented or Linear world. I have worked for a software company before and while I was there there was no importance placed on having qualified SQL education nor on employing a certified DBA to help with the DB design portion of the application which relied heavily on SQL Server for data storage. Big mistake and they are seeing this more and more as their client base grows and the size of those DB's get larger & larger. I suggest placing #5 at spot #1 if the developer wants to be involved with working with databases at any level. A developer with true SQL knowledge will have a big advantage over other developers.

rickst29
rickst29

I think that "building a PC" is totally useless as a 'software developer education' item (even though I have built many "PC-class" computers, perhaps 15, going all the way back to the days when a 10 MB hard drive was as big as a modern desktop case and cost as much as a brand-new compact car). First and most important, modern BIOS and OS take care of nearly all those old problems for you (interrupt assignment and etc.). Second, modern motherboards are so well-standardized and full-featured that an IDOT can add most anything they want to use. You really learn nothing by building a PC from components. Upgrading to a OS, on the other hand, might be a useful learning experience. Re-mapping application hard drives into RAID or NAS (or SAN) is definitely educational. But not building PCs. I agree with Hell-Desk duty. BUT, your suggestions regarding the ancient rituals of project management are WAY off base: Even when a firm tries to do it the old way, it never works like that. What nearly always happens is a desperate switch into "Radical Programming" *after* having spent a lot of time trying to do it the old way-- the official, "careful" design turns out to have been inadequate, no matter how much time was spent on it, because SURPRISES happened after coding began. The re-design gets to be all "quick and dirty", sloppy code results. Then, with almost no time remaining, production-level "quality" is created by a testing death march. (Which can find lots of embarrassing bugs, but never actually CREATES quality.) Some documentation, already started from the original design, gets thrown away because it no longer fits. Replacement Doco gets flung together, the software is released for Sale, and the next project begins. - - - - - Having enjoyed many such projects in my own working life, I would recommend that someone instead take the "Radical Programming" approach: think of something useful, but then, rather than negotiate a long and costly "Official Design" Project phase with your managers, just wing it (privately, on your own time). Then after you have a bit of a demo, re-implement it with a more careful design... after you've already seen what works, and whether it's worth pursuing at all. BTW, for demo purposes-- if the code documentation isn't good enough to just READ and understand, then you aren't really coding. A small project, refined into something really good via RP, is vastly better than "playing around" with half-baked, not-for-real implementation. You haven't REALLY executed design, documentation, coding, testing, integration, and release until you've done it at PRODUCTION QUALITY, and your customer agrees to chug the whole drink. Forget PC hardware completely. BTW, who on Earth was still using Token-Ring 3 years ago? (Yeah, the latest thing in 1986, still being used in 1994... but ewww.)

mjstelly
mjstelly

Alan, Thanks for the follow-up. My point wasn't about why I, in particular, got laid off. It was more to help temper this article with a bit of field experience for the IT newcomers. On its face, the article left me with the impression that if I did these ten things, I'd have a solid IT career. I wanted to add a dose of healthy pragmatism because we as IT workers need to understand that our profession is a fickle one. Other business units have a love-hate relationship with us. They'll kick us when our back is turned and grovel at our feet the moment they can't log into the network. ;) So, I say polish these to-do items regularly and be ready to brandish them when the winds of change blow against us. Say,like about...now? :D

Alan Norton
Alan Norton

You are right. Having some support experience is very helpful when budgets are getting slashed - the old systems still have to work. Congratulations and good luck at your new job.

Tony Hopkinson
Tony Hopkinson

you certainly do need to know. The more limited and specific your knowledge, the easier it is to pass on and quuantify that you have. I could teach you SQL syntax like that, or how to maintain Server1 at company X. Development, no chance. It's not a set of facts, it's not a routine, it's a way of thinking. Mentoring should make you think about how you think, and why. One of my favourite mentoring challenges is "All comments are a failure" When it gets thrashed out, what that can end up being is all comments where you don't think about why you are adding a comment and how you could avoid (not evade) doing so. That isn't teaching, or training, it's thinking. Not a challenge you can win if you don't do it yourself, and that's why it makes you a better developer. Teachers don't want you to think, they want you to pass the exam, so they get paid.

Tony Hopkinson
Tony Hopkinson

A DBA especially one doing a lot of design, who doesn't know how to develop against it usually makes things harder overall. It's alway been my contention, that you can't do client server database if you can't program, do sql and preferably dmo. Tony developer and part time dba. :p

Alan Norton
Alan Norton

Thanks Ed for sharing your perspective. The '10 things' aren't ordered in any particular way except for some grouping to make sense. The DBA role is important which is why companies pay premium prices for a good DBA. Developers shouldn't overlook this part of the development process.

ItsTheBottomLine
ItsTheBottomLine

You can learn a lot from building a PC. Research cost/performance, equipment integrity etc. Fortunately I have done a lot of the 10 items. My company allows (Fortune 1000) us to leave the IT dept. and work in customer Depts. Then come back. They also support the fact that you have/need a business accumen and that anyone can be taught a tool (i.e. language) but the ability to have, converse and understand Business and apply that to technology and design is WAY more valuable. You can have 10 constructors, but if you don't understand what your building then you are of no value. Thus why so much technology work is outsourced. The ability to apply that knowledge, understanding and oversee that is where people are needed. And I'm sorry I don't care what you say, you cannot outsource that type of work despite what that Big 10 accounting/sweat shop firm told you. I also volunteer Web Design for Church/ School/Kids Sports Teams. This allows me to do that kind of work that I don't get to do at work (former C/C++ programmer). You are also forced to use the low level tools unless you have the money to spend on tools like Shockwave Adobe CS4 etc. Also I have/built/wired and support a home network with Windows2003 Server for the kids and wife. Put in a video/music server etc. In addition I have a Linux server and dual boot Linux to learn that as well. And I BUILT the server computers from spare parts thus I SAVED money. I have found - mostly from work - that leaving that comfort zone really makes you grow. And I usually find negative comments like the above - I was there once - are people are afraid to leave their comfort zone. TAM

Alan Norton
Alan Norton

I respectfully disagree about how the knowledge gained building a PC can help a developer. I can remember spending far too much time adding and configuring add-in cards during my career, but then I knew very little about hardware at the time. Let me say it in a little more straight-forward and honest way - I was totally clueless. Yes, Token Ring is ancient technology. The poor developer who had to install one in a PC clone running OS/2 could also be considered ancient technology. BTW, that installation occurred in 1998. Old developers and systems never die, they just fade away. Edit: For the sake of accuracy, changed 1999 to 1998 and added '/' to OS2.

Alan Norton
Alan Norton

I commend you for your attitude. Your world has been turned upside down and yet you are thinking about helping others. That will go a long way in finding and getting your next job. A dose of healthy pragmatism, as you put it, is good to have especially when times are hard. Your comments are valid and welcomed. Thank you for sharing them and good luck with your job search.

Alan Norton
Alan Norton

I have had teachers who made me think. Some classes like geography are rote learning. The better teachers challenge you and teach you how to learn. They get little thanks for their efforts. Let me take a moment to thank several of my teachers - Mrs. Nelcamp, Mrs. Harris and Mr. Shafer. Some of their names have been forgotten but not what they taught me. Your point is well taken. Both learning how to learn and similarly thinking how to think is essential to a developer's successful career.

Tony Hopkinson
Tony Hopkinson

Right in that the more you pick up the better devloper you will be. It's an holistic skillset. You can't be just a coder, just a UI expert, just a DBA. Well you can, but then you need one person who's competent in all three to manage three people who are incompetent at the other two. Wrong was stuck in development. Why do you consider it stuck? I've got those ten things as well and more. All I want to do is develop, I'm pretty good at it, only a total moron would employ me to do anything else.

Alan Norton
Alan Norton

You are very fortunate to work at a forward-thinking company. Both you and the company benefit and that is how business is supposed to work. Your mention of volunteering your time to a non-profit organization is an excellent idea. One reason I never developed a database driven Web app is that I never learned on the job and didn't have the need for my own Web site. Churches and community service organizations likely will have that and other needs that require a broad range of Web skills. Thanks for sharing it and your other comments.

Editor's Picks