Ask HN: First job in IT, what best practices should I get in to?
I started a new job 2 weeks ago as a general purpose IT professional for an electrical contracting company. Although I am essentially the one man IT team, my responsibilities include essentially patching up their current MSSQL instance (20 horrendously designed databases created by someone who had zero knowledge of database design, no indexes, no pks, etc).Once I have finished patching up their current database, I am to completely redesign their back-end and front-end systems, moving them away from access front-ends, and migrating them to native applications and web services.
In terms of software development, I'm fairly proficient, but DBA is not my strong suit, but I'm picking it up quickly.
So far, I've been fixing little errors in the database here and there, creating backup jobs (there were not in place), and extensively documenting everything I can decipher. Because I don't have any sort of mentor or senior to guide me, I'm somewhat flying blind on this. What recommendations do you all have for me?
17 comments
[ 3.5 ms ] story [ 45.4 ms ] threadThe habits I'd recommend are general enough that they'd apply everywhere: Documentation and testing of all kinds. An ingrained resistance to be tied to any one technology, platform or stack. Clear communication. A curious mind.
First, you only need to come up with one good password (the one for the actual password file). If you ever leave the job, you just have to give them that one password and they can access the rest.
Second, it makes it easy for you to have good passwords for your resources. Plus, each resource can have a different password, so it may help limit the spread of an attack.
Third, if the company hires more IT staff, you can just copy the password file, rename it, change the password, give it to the new person, and have them change the password again. Probably not the best solution for 5+ people, but works well enough in small groups.
Fourth, KeePass offers a portable installation, which you can stick in Dropbox, on a usb drive, or wherever (no internet access needed). This is really helpful when you need to type in the password to the firewall that just took down the internet to your network.
Fifth, it's open source and free!
Setup version control and use it, it's like having a time machine if you mess something up and need to get back to a working state. Git is all the rage, but Subversion is simple to setup and run and understand. It's just you so having a distributed VCS isn't likely to reap any rewards.
Use an agile approach when delivering features/changes. Build an entire "vertical" of a change like say moving one app from MS Access to a Web UI completely (or whatever you're going to move it to). If you design and develop each layer, like db access, business objects, UI in serial fashion then it will be a longer time before end users can give you feedback. Get that feedback as early an often as possible.
So, respectfully implement the obvious stuff like version control, backups, etc and leave all of the 'can you believe how crappy this is' attitude at home. I'm extrapolating a bit from your 'horrendously designed' and 'zero knowledge' comments. Those people probably still work there, or are thought of fondly by the people who remain!
I don't really blame him, it's as if I asked a chef to design me a rocket ship, it was simply something he didn't know, and instead relied on information gathered through quick google searches and tinkering.
One thing to keep in mind is that technology at almost every company you will ever work for will be held together with some combination of duct tape and bailing wire. I have seen tables with no normalization whatsoever that support tens of millions of dollars of revenue. They key factor with IT is that it needs to work. And since these things tend to grow organically, almost none of them are optimized.