After 20 years in the corporate IT trenches, I have learned some very important lessons that I am happy to share with anyone and everyone that is willing to listen.
- Backup - Do on-site backups, off-site backups, and routine restores to make sure they are actually working AND verify that ALL data you need to be backing up is getting backed up! Many people still use tape drives and there is nothing wrong with that but with the price of small, external USB drives coming down and their capacity going up, many small IT shops might want to consider using them along with a simple script utilizing Robocopy on Windows or RSync on Linux. That can make the backup window much shorter AND you don't need any special hardware to restore the data . . . just connect it to your workstation and copy files/folders as needed!
- Document, Document, Document! Let's face it, none of us are getting any younger. I can't tell you how many times I am faced with a problem that I recall having a few years ago and I end up having to research how to solve it AGAIN. I have learned to keep my own database of problems and solutions. You also need to document your entire IT infrastructure at your company. What if something happens to you? Who will know why the permissions on the accounting share were changed yesterday unless you documented it?
- Learn a scripting language and automate as many manual tasks as possible and as mentioned above, when you do write a script, document it thoroughly. Early in my career, I adopted Perl as my scripting language of choice for several reasons but mostly because it works on Windows, Linux, Unix, Apple, etc AND it is very powerful.
- Just because you can write a program doesn't mean that you always should! If you find yourself in an IT shop that has talented developers, you may find that you have some that are so talented that if you ask them to write just about anything, they can probably do it. Writing home-grown code to accomplish a minor task (let's say a script as mentioned above) to automate some task is usually a good idea. However, often times trying to save money by writing your own full-blow application can end up costing you more in the long run. It is often better to spend a little money on an application that is fully developed, tested, and supported.
- Whenever you find yourself in need of an application, always ask for references from other companies that already use it. Generally speaking, most in the IT community are happy to share their experiences with others and often times, even though they have told the vendor they would be happy to offer others a good review of a product, the more you talk to them, the more info you get. You just might get that one piece of info that the vendor didn't tell you that makes the difference between a successful project and one that is a total bust!
- Open Source - No matter the size of your company, you will most likely have some type of budget to follow. Maybe one day your boss will come to you and say "we would like to institute a particular software package and you know that there is a very good open source package available and you have experience with it. If you can implement a solution that is just as good as a closed source application (with a price tag) with an open source (free) solution, how much of a boost will that give you in your bosses eyes? In my humble opinion, it is well worth every person starting out in the IT field to learn Linux. I can't tell you how many thousands of dollars I have saved companies over the years by using Linux with some open source package to accomplish a task that saved a company thousands of dollars over a closed source solution. Oh, and before I get bombarded with email, yes, I know that open source doesn't always mean free. Instead, it really comes closer to meaning "freedom".
- Don't get too caught up in the Windows versus Linux server war. Although this site is focused on Linux primarily because I have found that many companies can muddle their way through Windows Servers and get them to work, often the same can't be said for Linux and I am equally adept at both. The best operating system depends on the task at hand. Often times, there is a clear winner. For example, Active Directory and Exchange Server are 2 of my favorite Microsoft products but they are in my opinion, for larger firms. For smaller firms, Linux, Samba, Bind, Squid, Apache, MailScanner, Sendmail, Dovecot, WebMin, etc can do a really good job for no cost other than the hardware and an IT person's time to get them running and keep them maintained. Most of the time, they can be maintained remotely.
These last two topics are probably the toughest of all that I have listed but also among the most important.
- At some point in your career, you will probably find yourself in a position where you report to or at least take instructions from someone that doesn't know much about IT. You may be asked to do things that can be costly to your companies security. You may also be asked to do things that go against your ethics. I have faced both of these situations many times and I wish I could give advice on how to handle them but unfortunately each situation is different and usually requires a different strategy. I always try and remember to be polite, as positive as possible, explain my side of the situation as best I can, and always stick by my principals and beliefs.
- The last thing to keep in mind about a career in IT is that many times you are the last line of defense in an already highly stressful situation. The slightest negative thought or action can cause an already tense situation to get even worse. Try and remember that sometimes people just need someone to vent to and that we are all human. You are the last line of defense for "recovering that lost file" or "getting that server back up so they can get the gazillion dollar job done". You are the punching bag. Do the best you can with it and one more thing . . . good luck!