I'll admit that I am very unhappy with my current job.
Part of this is whining, I know, but just hear me out.
One major, major, major problem with my job is that I work for a small company, and am the only person here that knows tech at all.
This was really great for me at the beginning. I am very proficient in BSD and Linux, so everything (mailserver, file server, FTPs, VPN, firewall, etc.) was built on one the two. I've had the opportunity to work on some really fun projects. One of my favorites was building access points out of soekris boards and ubiquiti wireless cards (this was before ubiquiti started offering their own, vastly superior, vastly cheaper solutions).
I'm also pretty proficient at python and perl. Because of this, I've had the opportunity to build some really fun in-house stuff that people have loved. I built us a contact management system on python, and I've built countless extraction tools (grrr...text files) on perl. Currently, I'm working on a content management system for our marketing department. This is all really fun and great, but remember how I said I'm the only person here?
My typical day involves arriving here at 8:00 (or so, my commute is an hour long), then sitting in front of my monitors for about 9 hours, until 5:00 rolls around.
During the day I CANNOT get anything done. I'll end up reading HN, or working on my own website. (errr..this is inaccurate. What I mean is that I don't get any of what I consider real work done. Just managing the little problems that the users have)
Why is this?
Well, a major part of it is the almost constant flow of interruptions from people who's computers are "broken" (I am "the I.T. guy" [a title that I despise], so every problem from a phone cord with a loose connection to a user that has pressed the insert button on their keyboard and now how a "broken email" gets handled by me). I'm sure that every coder here can relate to the frustration of getting halfway into a problem, then being rattled out of it by something like somebody not being able to figure out a numlock key and why, after they press it, their "numbers don't work". The overwhelming majority of code I have written has been done from the comfort of a barstool sitting at a local bar that I like. For some reason, I can get more work done there, or sitting in my backyard in a camping chair in my pajamas playing fetch with my dog, than I could ever even DREAM of getting done while actually sitting where I am now, at my desk.
But that is just one part.
Another part is that I am the the only person here who has even a basic understanding of computer systems. Remember the wireless network that I mentioned earlier? Here is how it works. It lives on a physically separate switch from the rest of the network. On this network lives an openBSD machine running openVPN. If a client on the wireless network wants to connect to anything on the "other side" of the openBSD machine (which has three interfaces, one of them on the private lan, another on the wireless lan, and another virtual interface that is a VPN tunnel between the two) it has to authenticate with openVPN.
Pretty cool, huh? (maybe not, but I think so).
Nobody here understands this. Is this narcissistic whining? OMG THEY DON'T APPRECIATE ME! Yes. Yes, it probably is, but it is difficult to get motivated to do anything when there is no payoff of "good job" from the boss. (judge if you would like). The only thing that gets noticed is that things aren't broken. Holy hell though, when they are...
There was one time. One of our T1s went down (there are two, one of them for our private LAN, another for the internet lounge that we offer to our customers). My solution to this was to take an OpenBSD machine that I had sitting in my office, put it on both networks, and make it act like a gateway for our private lan so that we could route outbound traffic through it, and out the working T1.
This wasn't a problem, but it took about an hour (at first I was going to try and do it without NAT, the problem was getting the router on the public LAN to route traffic destined for our private subnet back to my new gateway).
Nearly the entire hour was spent in front of a terminal in our server room with my boss standing over my shoulder going "what are you doing? Why isn't this working yet? Blhack, we REALLY need this to work RIGHT NOW! I don't think this is going to work. We really need to think about another way to fix it, can't we just use the wireless (the public LAN has a wireless network available, I hope I do not have to explain why this would not work). Can't you just try it this way? (this person does not even have a basic understanding of routing, or what it is), have you tried rebooting it. Here, I'm going to reboot it. Just unplug it and let it sit for a while!"
sigh
I apologize for the stupid senseless whining here, guys, work can just suck sometimes when you're the only one here, ya know? Gets kinda lonely :(
It sounds like you're unhappy with your current job because you have two (or three) jobs. You need at least one other person to handle day-to-day tech support while you build and maintain the infrastructure. Maybe two people.
But your company is not going to pony up the money for that because it sounds like you're willing to do tech support during the day, then build the infrastructure for them for free, at night.
If you want to be happy at your job, then you need to explain that you're basically doing unpaid work, and that if they want to maintain the current level of service, you need at least one other person.
blhack I understand what you're saying. I worked in that kind of environment before. If you want to be happy in your current job it comes down to two things: Communication and Limits.
You have to find a way to communicate complex ideas to people who don't understand it. Find out what they understand and what their values are and term it in that way. It could be time, money or customer convenience.
The main aspect is trust. You get paid for the job you do so no appreciation is in order. It's their trust that you know how to deal with the crisis better than anyone that's needed. Let me tell you the only way they will trust that you know what you're doing is if they know what you're doing. If they don't get it they'll think you're a dumbass, or condescending or an introvert. All things bad for a team and bad for business. Imagine you are the teacher of a grade 10 class teaching derivatives and integrals. If your students don't get the concept then at some point they will start cursing at you as you write on the board - even though you know what you're doing and they don't.
That's the communication bit. The other half is to limit yourself from all things tech and do it routinely. This is not once a week gym time or when you're free. Book classes in martial arts or cooking. Take up smoking shisha at a cafe. Find something you can do regularly and often that has no part in your life now - and non-tech. If work demands some of your free time then you say NO. If that's not an option then hire an underling and train them on specific tasks.
There was another comment here about how we are not meant to live in cubicles. I like it. We are not meant to do one thing only everyday. That is mind numbing.
I've been in a similar job before, as the lone tech guy, and one small step that really helped me was to require that all work requests be sent by email. I put a sign on the door to my office/server room that said "Verbal requests will be cheerfully forgotten. Mail to tech@company.com".
That won't get rid of everything that comes in your door, and you may find yourself reduced to sending the email yourself, for something your boss walked in and wanted you to do. And it won't stop the "OMG the network is down" freak-outs, either.
On the other hand, it will hopefully reduce your walk-in interruptions, and it will give you more of a record of the work you're doing. Bosses who don't understand anything beyond rebooting can see how many work requests you're handling in a day, to tell how busy you are. Ideally, you can have the 'tech@' alias CC your boss and other crucial managers, at least at the start, so they can see how much you're doing.
I use this technique as well, an additional benefit is the record of requests from specific individuals: "Hey boss, check out how many times X has emailed me asking to reboot his 'workstation' for him."
Working at a small company is obviously very different from working at a large institution. Both have their pros and cons and I think that time spent at each is invaluable experience.
Who knows, maybe you've gotten all you can from this gig and are ready to work at a big company. The change in culture might be just what you need now.
Let me get this straight. You intentionally built out a custom DYI enthusiast IT infrastructure out of a random collection of OpenBSD and Linux boxen and then complain that nobody but you understands it? Unless you've completely documented how everything works and fits together you've made it very difficult for anyone else to maintain it. That's one way to ensure job security.
The mailserver is Postfix, the file server is samba, the FTP daemon is VsFTPd, imap is courier imap.
Are you a microsoft rep or something? None of this stuff is even remotely "enthusiast".
The Contact manager is just a web-frontend that I made for that sits on top of (and supplements) an existing system (as/400 green screens that they hate).
I'm sorry, but this is kindof insulting. What do you mean "enthusiast DIY"?
My apologies for offending. DIY is "do it yourself". An enthusiast (like myself) would prefer to use OpenVPN or FreeSWAN instead of a Cisco ASA, would rather use iptables on a Linux box than a commodity firewall, would rather slap a wireless card into an OpenBSD machine rather than to buy a commodity access point, etc. This is cool and all, but it makes it harder for other folks to deal with. Let's say your on vacation and there is a problem with the wireless. If you had used a commodity access point, somebody could have just reset it, as opposed to have to log into the OpenBSD box and unload/load the kernel driver, or frobbed it with ifconfig, or whatever.
Small companies and large companies have entirely different time/money tradeoffs and it can be hard to make the transition. At my previous employer it was fine to spend a week making something work by cobbling together existing projects with some glue code. It was fun and I learned a lot.
So when I started this job (working with large companies) helping out with a co-worker's task I started trying to solve a particular problem the skinflint way, ok we can repurpose this box here to serve a filesystem while the other box is down for the vendor to swap the firmware and then...
My co worker (rightly) pre-empted me and recommended $20,000 of SAN equipment to replace the problematic device.
Neither way is better in the absolute, it's a question of what variable you're optimizing for.
If you read more closely, you would see that this isn't a WTF, but more of a beautiful complex system that actually makes sense. blhack only used one OpenBSD box for the normal network and used the second one to patch the network together after one of the T1s went down. Sure, it's DYI, but it is simple and makes sense.
Whatever he used his boss still wouldn't have understood it. The problem he's having is balancing programming time, with IT time. Something I do very poorly myself, but it's not hopeless.
The funny thing is I've been interrupted 3 times while writing this comment, it's ruined my flow and I forget what I was going to write.
Oh yea, I lock myself in an office and close the door when it's time to work on spurts of programming, otherwise I feel burnt out and nothing gets done. I've also got a boss who's capable of doing IT work. Having two of us helps entirely, maybe a $25k a year intern to ease the "my caps lock is broken!" off your plate could help.
But seriously, take your 20% time and don't answer the phone and use it to program. You need your focus time, and then come back and do the rest of your job.
Well, a major part of it is the almost constant flow of interruptions from people who's computers are "broken" (I am "the I.T. guy" [a title that I despise], so every problem from a phone cord with a loose connection to a user that has pressed the insert button on their keyboard and now how a "broken email" gets handled by me).
Many of us know the problem of constant interruptions.
Fortunately there is a workable, mechnical solution to this problem.
1. Get an office with a door (this may require some social engineering).
2. Buy a solid wooden panel (about 1m² in size), two hinges, two screws and a nylon string. Make sure to buy the heaviest type of wood they have on stock.
3. Glue a piece of paper onto the panel with the answers to the most common questions printed on it. Think of it as your FAQ panel. There's a lot of room on a square meter, so in 8pt type you should be able to fit on there the answers to pretty much every question that ever crops up.
4. Mount the panel directly above the door with the two hinges at the bottom end. Make sure the panel has good travel and can swing into the "straight down" position. Bonus points if it can even swing through the opened door.
5. Flap the panel upwards so that it rests straight to the wall, pointing up to the ceiling.
6. Use the screws and the nylon string to the connect the upper part of the panel with the door knob.
So how does this help with the daily support workflow?
Whenever someone opens your door for support they will be provided instantly with the solution to their problem. The solution will hit them like a brick, so to say, before they even ask.
You still have to get up and swing the panel back into the home position after each case but that's more quickly done than discussing numlock-issues. Moreover you will soon notice a sharp decline in support requests thanks to the improved workflow.
One person I know who had this problem solved it by changing his hours to be 4 AM to noon. This gave him four hours before anyone else came in to prevent future problems, then four more hours to handle current problems. It worked well for a number of years, but eventually he ended up leaving for the West Coast.
Part of this is whining, I know, but just hear me out.
One major, major, major problem with my job is that I work for a small company, and am the only person here that knows tech at all.
This was really great for me at the beginning. I am very proficient in BSD and Linux, so everything (mailserver, file server, FTPs, VPN, firewall, etc.) was built on one the two. I've had the opportunity to work on some really fun projects. One of my favorites was building access points out of soekris boards and ubiquiti wireless cards (this was before ubiquiti started offering their own, vastly superior, vastly cheaper solutions).
I'm also pretty proficient at python and perl. Because of this, I've had the opportunity to build some really fun in-house stuff that people have loved. I built us a contact management system on python, and I've built countless extraction tools (grrr...text files) on perl. Currently, I'm working on a content management system for our marketing department. This is all really fun and great, but remember how I said I'm the only person here?
My typical day involves arriving here at 8:00 (or so, my commute is an hour long), then sitting in front of my monitors for about 9 hours, until 5:00 rolls around.
During the day I CANNOT get anything done. I'll end up reading HN, or working on my own website. (errr..this is inaccurate. What I mean is that I don't get any of what I consider real work done. Just managing the little problems that the users have)
Why is this?
Well, a major part of it is the almost constant flow of interruptions from people who's computers are "broken" (I am "the I.T. guy" [a title that I despise], so every problem from a phone cord with a loose connection to a user that has pressed the insert button on their keyboard and now how a "broken email" gets handled by me). I'm sure that every coder here can relate to the frustration of getting halfway into a problem, then being rattled out of it by something like somebody not being able to figure out a numlock key and why, after they press it, their "numbers don't work". The overwhelming majority of code I have written has been done from the comfort of a barstool sitting at a local bar that I like. For some reason, I can get more work done there, or sitting in my backyard in a camping chair in my pajamas playing fetch with my dog, than I could ever even DREAM of getting done while actually sitting where I am now, at my desk.
But that is just one part.
Another part is that I am the the only person here who has even a basic understanding of computer systems. Remember the wireless network that I mentioned earlier? Here is how it works. It lives on a physically separate switch from the rest of the network. On this network lives an openBSD machine running openVPN. If a client on the wireless network wants to connect to anything on the "other side" of the openBSD machine (which has three interfaces, one of them on the private lan, another on the wireless lan, and another virtual interface that is a VPN tunnel between the two) it has to authenticate with openVPN.
Pretty cool, huh? (maybe not, but I think so).
Nobody here understands this. Is this narcissistic whining? OMG THEY DON'T APPRECIATE ME! Yes. Yes, it probably is, but it is difficult to get motivated to do anything when there is no payoff of "good job" from the boss. (judge if you would like). The only thing that gets noticed is that things aren't broken. Holy hell though, when they are...
There was one time. One of our T1s went down (there are two, one of them for our private LAN, another for the internet lounge that we offer to our customers). My solution to this was to take an OpenBSD machine that I had sitting in my office, put it on both networks, and make it act like a gateway for our private lan so that we could route outbound traffic through it, and out the working T1.
This wasn't a problem, but it took about an hour (at first I was going to try and do it without NAT, the problem was getting the router on the public LAN to route traffic destined for our private subnet back to my new gateway).
Nearly the entire hour was spent in front of a terminal in our server room with my boss standing over my shoulder going "what are you doing? Why isn't this working yet? Blhack, we REALLY need this to work RIGHT NOW! I don't think this is going to work. We really need to think about another way to fix it, can't we just use the wireless (the public LAN has a wireless network available, I hope I do not have to explain why this would not work). Can't you just try it this way? (this person does not even have a basic understanding of routing, or what it is), have you tried rebooting it. Here, I'm going to reboot it. Just unplug it and let it sit for a while!"
sigh
I apologize for the stupid senseless whining here, guys, work can just suck sometimes when you're the only one here, ya know? Gets kinda lonely :(
Thank the gods for HN.