About Me

I'm a software developer and technology enthusiast. I've been writing code for a living since 1998, but really ever since I can remember. At work I write C#, but at home I write Java, Ruby, Python... just about anything I can get my hands on. I'm a fan of Agile Methodologies. These are my thoughts, this is my blog.

Equilibreal

Labels

Working From Home

Recently a colleague of mine did a post mortem on working remotely (Remote Pairing Matters) after having been just let go from our company. I started thinking that I hadn't evaluated my own remote working experience after having now worked in an office for 3 years. I worked remotely for 4 years for Intel Corporation. For 2 years I worked in the same town as an Intel site, where none of my coworkers were. For another 2 years I worked in a different state, far from any Intel friends. I've thought about what went well, and what didn't, and summed up the experience for you in these words of wisdom.

Why would you want to work from home? Well for most people this is actually not a choice, but a compromise to support work-life balance. My fiancee moved to San Diego, and I wanted to be close to her as we were soon to be married. Later when we moved again, my mom was sick and needed more direct and accessible monitoring of her health care. I was very grateful that Intel was willing to support this model for me (and several of my colleagues in similar situations).

Talking to the Boss
Assuming you want to work remotely because of a family reason like this, make sure to sit down one-on-one with your boss and talk it out. Explain to him why you want to work remotely, how it is important to you and why it will make you a better employee (less interruptions, less time off for emergency travel, etc). Your boss will probably ask you questions about how this will not interfere with your work, how you will handle the phone and internet connectivity. If you are a large company, they may have a standard plan for this, but you should also have a solution ready to propose.

The Setup
When you finally get agreement to WFH (work from home), set up a good workplace straight away. I know, you probably roll your eyes anytime your company mentions an ergo evaluation, but we lifelong software developers know that this stuff matter to your longterm physical health, so don't skimp. More than that though, setup a workplace away from distraction, with all the tools you need within easy grasp. Setup your computer, keyboard, peripherals like speakers, printer, webcam. Keep the phone nearby for conference calls, and make sure you have a headset which reduces outside noise for both you and your coworkers on the other end of the line. If you'll be using a webcam, make sure the background is free of anything innappropriate and embarassing.

Think about the software tools you might need to stay connected. My colleague Tim mentions Skype/Webex for pair programming. I've used Microsoft Netmeeitng and Yuuguu with success. You might want to opt for the faster internet service and get a 2nd phone line dedicated for work (unless you want your 5 year old picking up the phone on a sales call). Ask your company if they will cover the cost, because many do. How about getting a Google Voice number? You can customize it to route phone calls from colleagues to all your phones during business hours, but go to voicemail during off hours. Spend some time evaluating the best options, because the toolset could make or break the experience for you.

Routine
Ok, so it's your first day WFH, and you decide to rough it with no shower and a pajama business suit. You haven't eaten breakfast because you just rolled out of bed and onto your keyboard. Around 10am you start your first conference call and your stomach starts growling loud enough to be heard in China (and not through the phone), and you start spacing out because your caffeine high from last night's Halo frag fest starts to wear off. What did you do wrong? You forgot to have a routine, newb! Even when working from home, you need to have a routine to maintain peak performance during the day. Sure it's ok to slum it once in a while (i'm sure you've all had a hangover once or twice on a Friday morning).

Most days you'll want to make the coffee, get dressed, take a shower (better shower before getting dressed), and etc before starting the day. It will pay off in the long run (trust me on the shower thing). If you have wife and/or kids at home, life will be harder. You need to make them understand to respect your privacy during the day. Close the door, put up a sign, do whatever it takes to keep work and life separate, otherwise you'll soon find yourself sending emails at 11pm to make up for your lackluster performance earlier.

Staying Connected
You can be the best employee in the world that nobody ever hears from, and you'll get absolutely nowhere in the company (this can be said for those who work in the office to). In fact, the quickest way to lose your WFH privelege is to never be heard from again. Make good use of the tools. Sign into IM first thing, and make sure you respond quickly to questions. If you are having a quiet workday where nobody is bothering you, send an email or IM to let people know you are alive. If you will be away from your "desk", let people know, same as you would in the office. Keep those communication lines open and active! Periodic office visits are very helpful as well, if you can arrange it. Good companies will even pay for it, because they know that even though many people can work virtually, nothing replaces face to face time. This is the best time to build those relationships with new colleagues, and strengthen the old ones.

I’m a huge advocate of virtual employee arrangements where it makes sense. That being said, nothing replaces the vibe and energy when everyone works in the same office. So as you switch jobs, if you have a choice, you might want to alternate WFH and WIO (working in office). After I was virtual for 4 years, I found that I really missed the personal relationships, the long lunches on a lazy Friday, the hallway conversations about random topics. I also found that my immune system was more fragile, because I wasn’t exposed to all those germs every day. The odd times I did travel, I was always sick for several days afterwards.

These are things to weigh against all the other considerations. I loved my WFH experience, and my friends were envious of my good fortune. Above all, if you do WFH, enjoy it. Just remember three little words: Naps during lunch.

Open Source, Shmopen Shpource

Why isn't everyone writing open source software?

I have to ask myself this question before I ask anyone else. So self, why aren't you contributing to the open source community? I was recently reading a post on hacker news from a fellow UIUC developer (albeit many years my junior) that he was contributing for the first time, and made me wonder why I haven't done this already. I mean certainly there's been opportunity in my earlier days before I was busy with married life. Did I lack inspiration - perhaps. But really it was a lack of motivation, and making excuses that I'd rather take my ideas and market them, make money from them for myself and my family. I have a daytime job, and do I really want to expend the effort at night, coding into the wee hours to help some people who will never contribute to my bottom line? Well yes, maybe I should.

I think back to Malcom Gladwell's book about the biggest names in the industry, the people who made billions from their ideas, and most of them have a couple things in common: opportunity (being born at the right time and place in history) and training. They each had fulfilled a 10,000 hour minimum requirement to become monsters in the industry. Think about the best coders you know, and what can you say about all of them? While they may have a natural technical ability (and let's face it, you need a certain brain to be a good coder), they all have written a LOT of code in their lifetimes. This consists of both code inside and outside their jobs. So really, if you want to become the next Page/Brin or Zuckerberg, you really should get a start on your 10,000 hours now. Luckily hacking doesn't have the same expiration that athletes encounter when their bodies stop working as well. Nope, good coders (Fowler, Martin) can code late in age (no, I'm not calling you guys old). Some people say coding is a young person's game, but I call bullshit on that one. Young people are more willing to work for little or no money, for long hours, and companies, most notably startups, like this. I digress. If you are going to get to your 10k hours, isn't it better to contribute to the community at the same time? Wouldn't you like to help the collective good?

Let's imagine for a moment that the American cutthroat, entreprenurial, dog-eat-dog attitude could be magically transformed into the Ster Trek utopian society. People wouldn't work for profit, they would work on whatever interested them that also benefited society. Before people cry "socialist", doesn't this sound appealing to everyone? Coders would work on whatever project interested them the most, filling the motivational need they have to either solve a ridiculously complex problem, fill a deep personal need for the Frogger Android app you've been missing your whole life, build a better browser (can you hear me Microsoft), rewrite the h.264 codex... whatever, it doesn't matter. It's like that question from Office Space: "What would you do for a living if you had a million dollars". What would you code if you didn't have a day job and had to pay the bills? That's the open source project you should work on. And working on the open source project at night is going to make you a better coder during the day, and could potentially improve your skills enough to make you more marketable and land you a better job. And if you happen to work at a good place like I do where we use many open source libraries to help our for-profit software, you could be helping the open source community WHILE you work. Double rainbow all the way!

So what open source project am I going to work on? I'm actually not sure yet, but I know I'm going to contribute now. I've found the motivation I needed. Will you?

Code Tax

Everyone knows the aphorism "Nothing is certain, except death and taxes." It is with that certainty that I declare a CODE TAX! Can you afford the monthly payments? What is a code tax? It's a concept similar to technical debt. Let's say you have a code base that's in perfect shape, no major defects, no design issues, the perfect set of interfaces, abstractions, OO modeling. Perfect! Now you have a deadline, project management is breathing down your neck. You decided just this once that you'll take a few shortcuts. You'll write some code without tests, you'll just put in a few methods here, a few global variables there to solve the problem quickly without properly handling various situations. You just accumulated some technical debt, and pretty soon, you're going to have to pay some code tax (yes, i know you don't usually pay tax on debt, but just roll with me here for a minute).


So the next set of requirements come down the pipe, and you are short on time again. You haven't had time to go back and refactor those changes, and so they are just hanging out there. In fact, you have to cut some corners again. You've just increased your tax. The more you take (shortcuts, technical laxity, etc), the more tax you owe! Wouldn't you like to reduce your liability?I know what you need, you need a few deductions! TDD - test driven development. Write some tests, or write a LOT of tests, and you can reduce your taxable code income.

Nobody likes the tax man, so please do your best to avoid him.

What does it all mean?

Yes, I know, equilibreal is a misspelling. Those who know me know I would never leave a misspelling on my website or blog if I could avoid it, and I would proof something as important as the start of my blog. Also, right now, the red squiggly is taunting me. I don't have OCD, except when it comes to spelling. Now that the internet has been 'live' for years, naturally most single word URLs are going to be taken, so I knew that to satisfy my need for simplicity, I would have to compromise by utilizing a made up word.


I love the word equilibrium, because that perfectly sums up my feelings on life. I strive for balance, for the static state, the equality, the balance equation. I'm not an extremist in anything, and if I am, then it's only for a while until i can return to an equilibrial state. I believe in the yin and yang, the dark and the light. As Sinatra would say, you can't have one without the other. Don't we as a culture like that dichotomy? We like the hero juxtaposed with the evildoer, the calm before the storm, the sunset and dawn which is that perfect balance of light and dark. Equilibreal is putting the "balance in reality" because that's what I'm about.

I'm interested in technology. I have a computer science degree and have been interested in technology since as far back as I can remember. These days I'm a coder, programmer, hacker - pick your favorite term. I work with an elite group of developers who are as passionate about technology as I am, something I had been missing for a few years before that as I transitioned through some jobs in the industry. Now that I have found a good home again, it has rekindled that passion in my heart and I want to write about it. I'm as likely to write about cell phones and laptops as code and hacking, so hopefully you'll find something you like here. I'll be putting my particular spin on things, which is to find the balance in everything.