I would like to send a tweet telepathically. I would like to jump over datacenters with one leg. I would like to eat Cheetos© without orange fingers, cool my Mt. Dew© with my bare hands and warm my coffee by looking at it. These powers would be mine if I were bitten by a radiation-infected squirrel, or hit by meteor residue that was actually a piece of a planet from another universe. However, being a mere mortal, I have been forced to acquire my super powers in other ways as a professional in the field of software, web and database production.
I've been developing software for over a decade and have worked in various industries. When I worked for a consulting firm, I quickly learned that I needed a well rounded skill set to be able to give a client what was needed at any moment. My skills are always being put to the test. Just last week I had to solve some problems that my superiors couldn't. So now I wonder, would I have been hired if I lacked those skills? Would I have been promoted?
Every now and then I read an article listing the skill set every Information Technology professional should have. I’d like to share my own list of skills that I believe developers, designers and DBAs should have.
Know how to fix common PC problems. Since you are in IT, don’t be surprised when family, friends or coworkers ask you to fix their computers. Unless you prefer to wear the infamous “No, I will not fix your computer!” t-shirt, you don’t want to get caught with your pants down, not knowing how to map a drive or printer, edit a registry, configure email POP accounts, or clean out a virus. I believe anyone in the field, from Jr. Programmer to CTO of a corporation, would rather NOT put in a call to Systems Support to fix a minor PC problem.
Understand general systems administration. IT professionals should know basic networking, how to trace a network and run cable. Do you know what I mean when I say "White Orange, Orange, White Green, Blue, White Blue, Green, White Brown, Brown"? Can you to trace a route and analyze packets from one IP network to another? You need to understand basic networking to understand a trace, why IP numbers change, why it makes stops, and so on. Permissions are also important in that rights must be granted or revoked for files or data you could be programming for. You need to understand these underlying hardware and software components.
Write a script. Shell script, or batch programming as it’s also referred, is needed to be able to manipulate files and directories, and to perform other system operations. You don’t have to be a programmer to know your OS shell commands. Unix Shell, MS-DOS, and PowerShell are examples of interpreters that will execute scripts. Other scripting languages like AppleScript or Windows Scripting Host are interpreted by an engine other than the OS command line.
Create and test backups. This topic cannot be stressed enough and should be in two parts. First, implement source control. Source control is very important. It allows you to check versions in, and versions out, and it manages changes in your code. Some source control tools include Subversion, Git or Visual Source Safe. Second, be able to back up your files, and even your version control repositories. I have found it easy to use tools such as TeraCopy, Dropbox, or Allwaysync to back up synchronized versions of code or databases to other drives or even offsite disk space. In either case, always test your backups. If you don't test backups periodically (I recommend once a month for each occurrence), you won’t know if the backups are complete or corrupt.
Train other developers, designers or DBAs. It is the opinion of many that “The Best Way to Learn is to Teach”. You should be able to take the time to explain the back-story of your work to others. Training forces you to increase your knowledge on certain topics. If you can explain something to others, then you really know it. There’s tremendous satisfaction in seeing your team, colleague or friend implement a concept you taught.
Contribute to the Open Source community. More and more, I see job postings with open source community requirements. My first thought is, “these are FOSS (Free and Open Source) companies requiring this”, but then, I’ve seen the same requirements in .NET jobs. Open source was once a subculture; now it’s a more of a mainstream obligation for a developer to share code, contribute to large projects, test and debug, publish documentation, and generally participate in the tradition. SourceForge was one of the first popular sites to host open source projects; along came CodePlex, Google Code, and GitHub, just to name a few.
Participate in social networking. Make social networking work for you, not against you. Define your personal brand and share that brand on Twitter and LinkedIn. Make connections with other professionals. Get the word out. See how Social Networking has worked for me.
Blog. Actively manuscript your knowledge or experience in an IT related weblog (blog). Share code, design ideas, database tips or other relative material. You are in IT, have a dot com (website) by your name. Become a resource.
Participate in online help. Don’t keep your knowledge to yourself; share the wealth that is your intelligence. Some of the best places to help others are forums such as StackOverflow and the MSDN forums. Another way of participating is to post questions to your social networks, for instance, the SQL Server Community. To post help questions to this community, use the #sqlhelp hash tag.
Do some public speaking. Start by attending user group meetings and speaking to your peers. I started with a 101 in a user group, then had abstracts selected to conferences. Get comfortable with a topic you know and get the nerve to make a presentation on it. You use all your super powers here - sharing source code, giving help, and training.
If you are not Wolverine or have Spidey-sense, use this guide to pinpoint and sharpen your skills. With these 10 superpowers under your belt, you should be ready and able to meet, and even enjoy, some of your own software, web, and database challenges.