Monday, January 12, 2015

Chronicles of Conrad as a Coder

I have never worked in the tech industry before.

  1. First day to work- try to build the work computer that I choose parts to customize and find out that my graphics card doesn't have linux drivers. I stay till midnight but still can't fix it. I get in to work early Tuesday and fix it just as people are streaming in. Phew.
  2. First week- so our company is a PaaS so we end up doing a lot of tech support for tech guys. I find out that my knowledge is in no way superior to the programmers asking me questions- it takes me a full work day to answer questions that my coworkers take half an hr to answer. My support work basically involves me verbally asking my coworkers and then regurgitating back to the people with questions. And my speed for this particular sort of work is 16x slower than my coworkers.
  3. Over the wkend, my computer completely breaks because of the graphics card issue. The more I try to fix it, the worst it gets, and it gets to the point where I can't even get to the GRUB bootloader screen. I learn a lot about mounting file systems, installing desktop managers, and debugging from commandline. I have also installed and reinstalled various flavors of linux over 10 times. I spend the whole Monday trying to fix this issue but failing. I had the foresight to bring a laptop to work and did not have the foresight to bring my power cable. I have to pop out to buy one and realize that Mac power cables are a total ripoff. Another day spent working at a tech company not using a computer. Manage to fix it Tuesday morning again- I make sure everything is well documented in case my computer blows up again.
  4. Second week- I move from my temporary stay that is 30 seconds away from work to my friend's place that is not in central London. I find out that what seems like a 30min travel time on a good day could easily become 2hrs+. Then the climax: the train station conductor convinces me to board this train that is supposed to go in to central London. Instead, it is a direct train going to Brighton with no stops in between. Brighton is on the UK shoreline and is a "classic British beach town". My coworkers hear about this, think it's hilarious, and encourage me to check it out before I come back.
  5. At end of this second week, it is getting close to Christmas, and I realize everyone is going away for vacation and people are advising me to stock up 3 days of rations because all transportation and restaurants will be closed... I ask if I can take some time off as well. I'm going back to HK so I ask for 2.5 wks of vacation... less than two weeks in. I fully expect the response to be "yes, why don't you just take an extended vacation and not come back".
  6. My third wk (and last wk before vacation starts) is nice and peaceful with no major accidents. Yay! Well I was supposed to experience my first deploy to the live website, but that occurs at 6am in the morning so as not to affect the workflow of our customers. Needless to say, the trains failed me again. I get in at the very end of the deploy. In time to share a post deploy celebratory breakfast with everyone. All in all, I consider my performance this week to be stellar in comparison to the other weeks. I jet off Friday night to HK.
  7. While in HK, I encounter what seems like a problem with my company's email server. I am unable to send emails for multiple days. That sounds bad- I'm just going to disappear for 2.5 wks and not respond to any work emails? It turns out that this time it actually isn't my fault. HK PCCW blocks their users from sending requests to non-whitelisted smtp servers because of spam. Literally the whole of HK needs to use their email server. I am speechless. I also end up tethering my phone a lot.
  8. On new years eve, I notice an irregularity on the web server and go in to try to fix it. I run a bunch of monitoring tools after ssh-ing into the server, identify the problem process, and decide to kill it. Then the server magically comes back up. I believe I am a true hacker. I later find out that my coworker had also saw the problem and went in and actually fixed it as I was fiddling around. Well... at least I tried. Hopefully whoever's process I killed won't be too mad at me.
  9. My first week back after the break- I am now super up to speed with everything, I can do support in 8x the time instead of 16x the time now, and I actually debugged and saved a couple servers from certain death! I am truly, truly a skilled and seasoned programmer now. Of course, I did restart nginx on our load balancer instead of reloading it, and brought down the thousands of websites hosted on our company for a couple minutes, but that only just a scare.
  10. It is now Friday of my fourth week. I am taking on cool side projects such as writing scripts for other people to use. Clearly I am a pro coder now. Here is one such script: clone a git repository of your config files (bashrc etc), and put them into your home directory by creating symlinks. Well but then of course you should create a backup folder for the configs that you are writing. Let's put them in ~/backups. Oh wait, that's weird, ~ doesn't expand to /home/username/. I just created a ~ folder in my current working directory, with backups etc in it. Well I guess I'll just "rm -rf" it.
 Let us just pause for a second to bask in the ramifications of this.

For the non-tech initiated, I just removed everything in the home directory. rm -rf is a locust that will go in and eat and kill and destroy anything in it's path. And I just released it on basically everything*. And there is no such thing as the trash folder where us pro coders play. Nothing is recoverable because you are expected to know what you are doing.

Let us pause again and imagine the worst case scenario.

* not everything. I guess "rm -rf ~" is better than doing it on "rm -rf /". But it sure seemed like everything then.