Friday, May 24, 2013

7 Deadly Sins of Technology

1. Turning off without shutting down

Years ago it was actually possible to damage your hard drive by simply turning off your computer rather than shutting it down. Technological advancements have made that risk negligible. However, turning your machine off can still cause data issues. If you're in the middle of a critical operation, such as a software update, you can cause big problems by cutting the power. Think of it like performing open heart surgery and then turning off the heart bypass machine in the middle.

2. Opening emails/attachments/links from an unknown source

When you do this, it's like licking the handrail descending the steps into a subway. If you get sick, it's your own fault.

It's generally not entirely possible to completely ignore emails from people you don't know since email is such a ubiquitous form of communication. A couple of rudimentary ways to weed out the illegitimate emails: Does the sender address look real? Is the sender name properly formatted? Is the subject about sex, trying to sell you something/asking for money, or promising a prize?

If you open an email, do not open attachments unless you know the sender. Do not follow links unless you know the sender. Even if you know the sender be wary if the content raises any flags such as unusually bad grammar or advertisements, solicitations, etc. Before following links, make sure they point reputable domains.

3. Not saving often or creating regular backups

The universe conspires against you when you're working on something vitally important and under a tight deadline. It's not just in college. Backing up data has become so much easier in recent years. Many routers now have simple to use network storage options for USB hard drives. Dropbox, Amazon Cloud Drive, and Google Drive have very simple solutions for storing your data in the cloud. They work automatically once configured and you can access your stuff from anywhere. I recently started using AeroFS which allows you to create your own private cloud on your own hardware. It's very simple to set up and use. While it lacks the web file browsers of the aforementioned cloud drives, there is no monthly service fee (for up to three users) and I'm only limited by the size of my hard drives.

4. Using insecure passwords

Passwords don't have to be hard to remember in order to be hard to crack. Several years ago, Thomas Baekdal wrote a great post about this, which can be summarized as put 3+ random words together. That's it! "Windows ostrich Mountain Dew" would never ever be hacked but is easy for me to remember: my OS of choice, my blog, and my fuel. Of course a lot of sites that require a password are lame and would say that's not secure, even though it is. So come up with something shorter and make sure to use a capital and a number. "p1anoplayYes"

UPDATE: What makes a password secure just got more complex. This post at Ars Technica explains how hackers go about figuring out passwords. Page 3 of the article is particularly revealing.

5. Not installing updates as they become available

Installing updates can be really annoying, especially Flash. It seems like they always pop up at the least convenient time, you never know how long they'll take, and they often require a reboot. So we don't install them. Updates keep your system and applications working smoothly and, more importantly, securely. Failing to install updates is like having your front door smashed in and you just don't have it repaired. Sure you know everyone in your neighborhood by first name but that doesn't mean you're safe. Just do it though. Maybe not the minute the notification pops up, but within a couple of days. If you do it at the end of the day, it won't inconvenience you.

6. Not keeping up with changing technology

I'm talking to YOU, Mr. Still-Running-Windows-XP (or old version of OS X). For one, you're opening yourself up to security vulnerabilities that Windows 7 and 8 (or OS X "moon cat") protect against. The longer you wait to adopt newer technology, the harder it will be for you to adjust. You'll have a better user experience, guaranteed.

7. Being an early adopter

Wait, didn't I just say to keep up with new technology? Yes I did. What I'm saying though is that it's okay to wait for the technology to become mainstream first. Jumping in early can cause at least three different issues.
  1. Remember HD-DVD? Some technology fizzles out before it goes anywhere. 
  2. Sometimes the technology isn't quite ready for big time when it's first released. Windows 8, for example, took the OS in a completely new direction. The visual design is gorgeous (definitely 10 years ahead of the ugly, out-dated OS X), but even I think the the user experience is disjointed. Windows 8.1 is hopefully going to make that a lot better. 
  3. New technology usually costs more than established  tech. Sometimes it's fun to be on the cutting edge, and there's nothing wrong with paying a premium to have the latest and greatest, just don't be ignorant of that fact that that's happening. Sometimes waiting can save you big bucks.

Wednesday, May 22, 2013

A Common Vocabulary

A while back I asked if ignorance and close-mindedness meant the same thing. Admittedly, I asked this question to prove [to myself] that I was right and someone else was wrong. With the passage of time, that motive has all but vanished leaving behind a stellar example of a necessary component of communication: a common vocabulary. When this component is missing, communication can't happen. It's like taking your hair dryer to Europe and plugging it in with your converter set incorrectly. The appliance tries to run for a few moments and then the motor burns out because it's being supplied with the wrong voltage.

This all started on Facebook when an acquaintance of mine posted the following:


It struck me as odd that he should be so perturbed by ignorance. I have a very distinct memory going back to the start of my sixth grade school year. My teacher that year was quite the literary scholar. A few days before the start of school, the teacher held an informational meeting for all of the students and their parents. It was a means for everyone to get to know each other a little better and go through the daily schedule and other things about the impending term. I have no memory about the context anymore but somehow he was explaining ignorance. He said that there was nothing wrong with ignorance; it was simply not being knowledgeable about something. For some reason this has stuck with me all these years.

I asked my acquaintance if he really meant close-mindedness rather than ignorance and explained how I believe that those two terms express different meanings. This sparked a lively debate in which he contended that they mean the same thing.

This one word, just 9 letters, caused a communication impasse. This was just a Facebook post that had no weight of importance whatsoever. Just imagine though the implications of how a one-word communication misalignment can affect an outcome between a supervisor and employee. What about in a contract between client and vendor?

Verbal communication is a pretty complicated process and even though we start it at a very young age, it's still easy to muck it up well into adulthood. If my manager says she wants something done "right away" that could mean
  1. Stop what I'm doing now and switch to that other task
  2. Finish what I'm doing and then switch to the other task next
But it also has to be taken in context. Should I work through lunch or stay late? Is there a client call schedule for later in the day? Is the developer going to be out of the office tomorrow?

I think the key principle here is to eliminate ambiguity whenever and wherever it is perceived. Ask questions. Be explicit with expectations.

With my conversation above, six out of six respondents to my survey said that ignorance and close-mindedness did not mean the same thing. But there is that seventh person out there that has a different understanding, regardless of the situation.  He might be someone new that the client brings onto the project after the contract has been written. We don't always share a common vocabulary but by being proactive about the seventh person lurking out there and then being as descriptive as possible, even of that which seems obvious we can ward off problems before they happen.

Monday, April 1, 2013

Are These Words the Same?

Please help a colleague [me] out and respond to the following survey. Your answers will help me prepare for a followup post. All data is collected anonymously as far as I know.

Sunday, February 10, 2013

When We Don't Get Along

Relationships are complicated and dynamic. Whether personal, intimate, or professional, they all take time and energy to maintain; some more than others. At work, it can be very easy to feel trapped in a relationship because it's generally not practical simply up and quit or get transferred to another department. What do you do?

Well first, how does this even happen? It could be a simple clashing of egos or personalities. Maybe your coworker has an annoying habit. You might think he's rude, impulsive, or arrogant. Maybe you think he keeps taking credit for your good work. Maybe you think he keeps passing you over for a promotion or in some other way keeps you from climbing that ladder.

Sometimes you can go to H.R. Violence (physical or emotional), sexual harassment, even body odor are things that can make for a quantifiably hostile work environment and should be taken to H.R. But when it comes down to personality issues and character defects those aren't necessarily H.R. kinds of matters. 

Otherwise, the best course of action is to talk to the person about the issue. He may or may not acknowledge the issue as a problem and may or may not try to change it. If he doesn't change, it can be really easy for us to get passive-aggressive and try to make them change ourselves. Maybe we covertly place a bottle of hand sanitizer on his desk because he's not good about washing his hands. Maybe we start sharing pages from our inspirational Maya Angelou daily desk calendar because he's not very thoughtful.

There is absolutely nothing wrong with politely asking someone to change their ways. However, it's imperative to know that it's impossible to make someone change. If you ask someone to do differently but they don't, there's still a change that happens and it's critical to understand this:

He is no longer the one with the problem; you are.

It doesn't seem fair, does it? He's the one with the irritating whatever. It doesn't bother him. You have no control over it. You have options though:
  1. Get over it
  2. Get away from it
  3. Get overwhelmed by it
Option 1 is probably the hardest because it requires you to be the one to change. We're not good at internal change. And when I say, "Get over it," I mean to truly let go it, accept that he will not change, and cease to be bothered by it. This takes time. This takes patience. This takes love.

Option 2 isn't always very practical. For your own health and well being, it may be necessary to consider it. If you can't find peace with your coworker, it may be the only way to get away from your feelings of frustration.

Option 3 is hopefully not an option at all for you. This is where you neither get over it nor get away from it. Situations like this are breeding grounds for resentment. Some very wise people once told me that resentment corrodes the container. Left unresolved, this can lead to you becoming a bitter, unfulfilled person and cause you to hate a job that you once loved.

Coworkers don't always become friends but that doesn't mean they have to be enemies either. Talk problems out with your coworkers but also look within because sometimes the solution is stored within your own heart.

Friday, February 8, 2013

Selling the Dream

I used to be acquainted with someone whose motto for running his business was "Sell the dream but deliver the reality." Does that make alarm bells go off in your head? It does mine.

We all have dreams. Maybe it's buying a house or getting student loans paid off. Perhaps it's a vacation to somewhere exotic. My dream car is a Range Rover Evoque but it is just that, a dream car because at this point in my life I can only afford one in my dreams. Dreams are where our every wish and desire are fulfilled. Sometimes dreams do come true but usually through a lot of hard work and determination.

Now if I went down to say, CarMax, told them I wanted a Range Rover Evoque, had $25,000 to spend, and they said, "Okay" I'd be pretty excited. However, if when I showed up to pick up the car they handed me the keys to a Honda Accord, I'd be pretty upset. Just to be clear, I drive a Honda Accord, his name is Eric. He's unassuming on the outside but slip into the driver's seat, wrap your hand around the six-speed manual, and you'll soon learn there's more than meets the eyes. In other words, it's a great car. Nonetheless, if I'm promised one thing but given something different - or worse, inferior, I will not be a satisfied customer and in fact I will feel cheated.

Besides the obvious that the customer doesn't get what they expected, doing business this way establishes a relationship built on lies from the very beginning. If they're willing to tell a big lie, no doubt they're willing to tell little lies the entire time they're working together. Unfortunately by the time the client figures out what's going on it's too late.

In a perfect world, business ethics wouldn't even be a topic of conversation but I think this behavior is reprehensible. And I'm proud to say that I think my current employer is the most ethically sound company I've ever worked for both in the ways they interact with clients and how they treat their employees. I digress. I personally don't ever want to get burned so it is my desire to put out into the world that which I think can help others.

Here are some things to look out for to make sure you don't end up locked in with a snake oil salesman:
  1. Promises to do a lot more than any other bidders
  2. Promises to do the project for a lot less money than any other bidder
  3. The proposal is extremely vague
  4. The proposal is so long you don't know what it's talking about or is full of a lot of flowery language about how wonderful their company and process is
  5. Any part of the proposal seems to be too good to be true
  6. The vendor has no concerns about meeting any of your requests (not to say they can't be fulfilled)
What you can do to protect yourself:
  1. Solicit multiple bids and compare them in detail, not just the price quote
  2. Insist on extremely detailed contracts*
  3. Demand transparency
  4. Get references for recent, comparable work. Check them and look at the finished product if at all possible
  5. Listen to your instincts - If you think you're being lied to, you probably are

* I recommend watching this video. It's aimed more at the vendor than the client but the advice is spot on and really, contracts protect everyone. Note, there is a fair amount of vulgar language and there is one metaphor used that is poorly chosen. Nonetheless, I think the good outweighs the bad.

Thursday, February 7, 2013

Don't Judge a Book By Its Cover

We teach our children not to judge books by their covers. Literally, when they're young and start picking out books to read themselves, not to do this. A book may not have any eye-catching artwork. It could be worn and tattered. The plot introduction on the back might be unappealing. And so we try to instill in them that before forming an opinion about a book you should dive inside and get to know the full story. As children age, this proverb takes on a broader meaning that we shouldn't make snap judgements about other people. Just because someone has tattoos and piercings it doesn't mean he's a felon. Just because someone is clean cut it doesn't mean he's a nice person or trustworthy.

And so all our lives we're taught not to jump to conclusions. Then we grow up, make a career in software development, and that all goes out the window. "How so?" you ask?

Estimates.

It seems most our work starts with estimates. Someone contacts us wanting a new website. They want to know how long it's going to take and how much it's going to cost. If we told them we'd let them know when we're done, they'd get up and leave immediately, laughing all the way. A conversation is had. Likely several conversations are had. The potential client might even have a pretty detailed outline prepared of what they want. If they have an existing site that they want redeveloped into something befitting 2013, we'll do an thorough analysis of it. Nonetheless, we still have to make a judgement call based on a cursory amount of information.

Is this a bad thing? Nah. I don't think so, and I'll explain why in a second. But, I want you to realize that that is what we do all the time as a matter of practice. Think about it. Turn that over in your mind. Chew on it.

Despite what our parents teach us about making snap judgements regarding books and people, we're actually trained to do that sort of thing all the time. The light just turned yellow - slam on the break or step on the gas? Sweetie-Pie wants to know when dinner will be ready. A guy named Big Precious is selling iPads out of his trunk. We spend hundreds of thousands of dollars on a home and even though we have inspections, you still don't truly know what's hiding behind the walls.

Still chewing? Even though we get a lot of practice at making calls based on the information currently available, isn't it still just a little crazy what we do? Saying this is how long a project will take and this is how much it's going to cost? Software development is some complicated sh!t. Technology is constantly changing. Requirements have ambiguity. There are hundreds of things that can happen to cause the most accurate estimate ever to be completely destroyed. Quoting the wrong numbers can not only spell the end of a business relationship but the end of the company.

I think it's messed up but I realize the client is just mitigating their risk. They don't have unlimited money and they don't have unlimited time. It really isn't unreasonable for them to know how much and how long.

There are many ways we can mitigate our risk too including:
  1. Gather as much information as possible
  2. Use what you've learned from previous experiences
  3. Add in ample wiggle room
The big thing though is to be painfully transparent with the client once you crack that project open and dig in. Let them know your progress. Alert them ASAP when reality isn't matching up with the assumptions initially made. If an unexpected complication pops up, sound the alarm. Let them get their hands on the product early so they're not surprised by anything either. Keeping the client informed gives you leverage to negotiate changes to the schedule and cost. The clients are people too. They know things happen sometimes but they deserve better than to be blindsided.

I'm probably not saying anything new here but I hope that I'm putting our process in a perspective that helps us to use it more effectively and keep from getting burned.

Friday, January 11, 2013

Sometimes Doing it Old School Works Best

The truth is, I'm really bad at keeping track of the things I have to work on, things that I have worked on, deadlines, etc. I've tried to utilize apps and programs of all kinds as well as notebooks and sticky notes. Nothing seems to be very effective for me. But, I think I've finally found my solution. While I'm only two weeks in, it's been far more successful than anything else.

My problem with programs and apps is that I test programs and apps so I almost always have my work up on my screens. And I'm a window maximizer. I don't like having four or five things showing on one computer screen. So in order check my To Do list or record an activity, I have to switch from my work to something else. That may seem trivial but for my simple mind, it's apparently very disruptive. Consequently, I've been using a notebook because for me, I don't have nearly the same level of mental disruption to scribble something down quickly. Notebooks, however, get to be very messy and disorganized.

My solution: an appointment book. It's not just any appointment book but it's also not an extraordinary book either. What I have is actually a weekly calendar. The left page has 6 rows for each day (Saturday and Sunday share a row) and the right page is just a ruled page for miscellaneous notes. My particular system is to have a two columns one each day. The left column is my To Do list and the right column is my Accomplishments list since planned vs. actual is almost never the same. The ruled page is there to note information I want to keep handy for the week not for keeping notes during testing. The book itself is hard covered which makes it usable away from the desk. It also lies flat and open so it's easy to reference no matter what I'm doing.


The moral of the story is, if one method doesn't work for you, try another until you find the one for you. And the best solution might not be the most technologically advanced, which is okay. So far, this has been working really well for me, which I think my boss @kelleykoehler is very happy about, perhaps an appointment book like this would be helpful for you too.