Archive for the ‘Employment’ Category

Take Yourself Less Seriously, Manage Scope Creep

Tuesday, May 13th, 2008

Given the oportunity, your boss and your client would add so many requirements to your project that your only hope to meet your deadline was to forsake your personal life and donate your evenings and weekends to your job.

This is uncool.  Unless you’re in Houstin trying to bring home Jim Lovell, no one’s life but yours hangs in the balance of your work.  I urge everyone to ask themselves how important, really, is their function.  We tend ot build up walls around us and believe that our problems are big deals, but the reality is that in ten years we won’t remember what we did at work today.

So next time you’re asked to add “one more feature” to your prototype, decide if it’s best for the project, and if it’s possible for you.  It can be hard to say no, but humans weren’t intended to sit in front of the computer programming meaningless crap all day.  Go out and enjoy your life!

Form Trumps Function

Wednesday, April 30th, 2008

One (sad?) truth I have learned through the past several years is this: Form Trumps Function, every time. You can write the most elegant code in the world, produce an application that meets requirements 100%, but if it isn’t pretty to look at, your time has been wasted.

In fact - you can show a client a beautiful shell of an application that has no functionality at all, and they will love it.  Show them the same application feature-complete but without the design, and they will not want to pay for it.

The bottom line is this - when writing code, be it for web or for the desktop, always have an eye for the ‘look’ of your product.  Even when a separate designer is involved, the programmer can take responsibility for the ‘feel’ of the application - how the buttons move around, tab order, this kind of thing.

I am considering spinning this blog off to a second one devoted to designing applications (both GUI and web).  The design element can’t be ignored, so hopefully getting programmers more involved in the process will improve the situation on all levels.

Programming Doesn’t Mix With Family

Monday, February 18th, 2008

Back in 2006, George Alexander detailed a great list of traits essential for successful computer programmers. In this entry, we will look at those traits and see how they apply (or not) to the family life of a computer programmer.

In Canada, the Ontario government decreed the third Monday in February would be a holiday known as “family day”. This ends the decades-long stretch from January through March known to Canadians as the “dead zone” – the longest unbroken span of work weeks of the year. Nobody is complaining about a long weekend lightening the dreary winter months; except of course the four million or so workers who don’t qualify for the holiday, but that’s another story altogether.

Computer programmers don’t all fit the secluded, socially-inept stereotype. But for those of us that have families it can be difficult to shut off at the end of the day and become “human” again. Perhaps the shift that has to happen isn’t as extreme as, say, a soldier who comes home from overseas and has to go back to being a functional family member. All the same, the thinking needed to fulfill the duties of an analyst/programmer isn’t always compatible with the thinking needed to helm a family.

1. It’s not about computer languages

Leave you C++ code on your computer at work. It took you years of study, trial and error to warp your mind and destroy your soul enough that programming was opened up as a source of income. Don’t put your family through that.

I’m not worried so much about the blank looks on their faces and their faked encouragement when you go off all proudly about the sorting algorithm you finally managed to optimize. What about the day when they actual understand some or all of what you’re talking about? You’ll feel horrible for killing part of what made your loved ones human.

2. Drive and passion

Hopefully some of the passion that drives you to excel as a program is also present in your personal life. My father-in-law comes home from his job at 2pm, takes a short nap, then works until 1am improving his house and spending time with his wife and kids. His household is one of the warmest and happiest I have ever had the pleasure of being part of.

My father-in-law realizes that what you have now is always temporary – don’t take your loved ones for granted because you don’t know for sure if you will still have them tomorrow. Everyone would benefit from living every day as if it was their last; if that were to happen, computer programming may not seem all that important anymore.

3. Dealing with Change

The nature of IT careers requires us to constantly be aware of “the next thing”. Things always get “better” so in order to provide the best solution we must accept changing ideas as the norm.

In many ways, this is totally incompatible with family life. Families like stability – you’re responsible to come home from work with a positive outlook, provide financial security, consistently enforce household rules… and the list goes on. To provide the best family life possible, you must take reasonable actions to protect your family from change.

Even a move can be hard to deal with, especially for your children. I attribute this to why many workers choose to commute long distances rather than finding homes nearer to where they work. I once met a man on the Ottawa-Toronto train who was commuting to his day job – spending all week in Toronto and coming home to his family on weekends. He was involved in a new startup and wanted to make sure it was going to take off before dislocating his family; he was protecting them from unnecessary change.

4. Break It Down

Every day we apply the divide-and-conquer approach to achieving large tasks. We don’t “go to work”, we have a shower, get dressed, get in the car, drive to the office, park. Likewise, when we show our kids how to repair drywall, we don’t show them the final result and say “make it look like that” – we show them the steps it took to get there.

As important as breaking tasks down to their components can be for solving large problems, it doesn’t have as huge a place in family life as it does in work life. Your family is not a complex set of problems needing analysis and design – you really need to understand how the things you say and do today affect those around you in the long term. Day-to-day financial planning is disastrous – the big picture is far more important that individual transactions.

5. Do Not Reinvent the Wheel

A disciplined programmer knows that quality code can be re-used in other programs – rather than solving very similar problems again and again it is possible to create a single solution that can be copy & pasted or simply linked into the next project. It took thirty years of scientific reasoning to advance our field to this stage; unlike our well-defined little jobs, family life must be constantly evaluated and redefined.

Once my wife and I announced we had a baby on the way, everyone began crawling out of the woodwork to give us their “advice” for pregnancy and raising children. Of course, there is no code reuse when it comes to this stuff – every parent and child is different and it’s our job to figure out what works best for us.

6. Practice, Trial and Error

Here is one area where work skills can transfer over to your personal life. Rather, I would suggest that when it comes to trial and error, the skills you learned in your personal life are serving you well in your programming career.

Do I have to go out of my way to say that no one is perfect, and everyone can always get better with trial and error? Try new things, find out where you made mistakes, try again.

Although not everyone is or wants to be, I’m married now. As I was growing up, every failed relationship taught me a little more about myself and about how I should be treating women. In a sense, each ex-girlfriend was really “practice” for the next. The constant re-evaluation seems to have paid off. The point is – never stop trying to improve, because there’s always room to get better. We have to own our failures as well as our successes.

7. Mentorship

If you have children, they depend on you for food, clothing and shelter. More importantly, they depend on you for guidance – even when they think they know better than you do anyway. As a parent, your job is to be in control and have all the answers even when you aren’t in control and when you don’t have any answers. Going back to #3, you must be a constant source of stability.

The same is true if you don’t have kids yet. Everyone has their own problems and no one needs or wants to solve yours. The world is too full of people who won’t take responsibility for their own thoughts and actions. Solve your issues on your own time and just enjoy being with other people.

As Fernando Lamas (the real one) said, “It is better to look good than to feel good.”

8. Be Open to Criticism

When we deliver a project to a client there is an expectation that the results don’t contain a lot of problems because we have gone through a quality control process to arrive at the best possible solution. Part of that process involves having someone else look at your design and critique it.

In the real world, we get criticism from a myriad of sources whether we solicit it or not. We don’t ask family members whether they approve of the way we installed our cabinets but we get their comments anyway.

No one goes out of their way to hurt or put down someone else – at least, this is what I would like to believe in my naive little understanding of the world. Even the handy family member is trying to be helpful when he complains of how he can’t fathom why you would use plywood instead of… you get the idea.

Like anything else, it all comes down to filtration. Take the good with the bad and don’t let people get under your skin. Sometimes they may just as well offer a tidbit that you can grow on.

9. Bug Off!

As with seeking criticism, software development involves a lot of self-starting even when it’s not strictly requested. Case in point: bug testing. No self-respecting programmer takes the design at face value, programs it, and submits it for testing without evaluating the product in the project’s grand context. We desire our work to be perfect to a fault and when it isn’t our ego takes a blow. Computer programmers especially tend to be obsessive compulsive about having their solutions in perfect order with no strings left untied.

I warn you – the obsessive perfectionist view that helps win promotions at work does nothing for your personal life. Girlfriends, wives and especially kids don’t share your drive for order. You have learned many of your intuitions and must learn how to turn them off when you get home or you will slowly go insane.

A few examples of things that will turn your crank but are worthless to normal people (unlike your mutant self):

  • The kitchen was not tidied during cooking
  • The kids colouring books when shapes were only partly filled in, or coloured over the lines
  • Report cards with any non-perfect grades
  • People not trying to get every last coin in world 1-4 of Super Mario Bros. 3.

10. The Significance of Communication

Computer programmers are not like normal people. Normal people don’t obsess over math problems. Normal people don’t do the mental acrobatics needed to understand pointers and floating point precision. Most people don’t care about x = x+1. Those who do know that at face value it is meaningless (0 = 1?) and can’t comprehend why you would choose a profession in which the most important calculation is nonsense.

So don’t try to explain your work to your family. At best they won’t understand what you’re talking about and at worst you’ll ruin their minds like you have ruined yours. If your kids grow up to be computer programmers they won’t thank you for it.

Are You Thinking About Working from Home?

Saturday, January 26th, 2008

For many employees, the idea of working from home is like the promise of living in a dream; free from the trials of office culture, and hovering managers.   The ability to wake up in the morning and skip the commute to work seems like such a wonderful and alien concept.

Those of us who “live the dream” know there are caveats to watch for.  While working from home is certainly more flexible in some aspects than a traditional office environment, you are still employed and you still have to work.  When you work from home the place you live is suddenly, in a sense, partially owned by your employer – you blur the line that separates “work life” from “home life”.  The greatest warning I could give to someone considering this change is: Remember - you may be at home, but you’re not on vacation therefore you are still on the hook to be productive.

This article will outline the biggest issues I’ve had to face over the years while working from a home office: finding the discipline to work, the reaction of family and friends to your lifestyle, the work-life balance difficulties that arise, and the need for a dedicated work space.

Anyone considering taking the leap to this environment should really be aware of the situation they are thinking about getting into.  They should be certain that they have truly informed themselves of the facts pertaining to their new path and that they have the will it takes to make the changes needed to be successful.

Discipline

We’ll start with discipline because this is the one area that can really make or break most home workers.  Webster defines discipline as a form of “self-control”, “orderly or prescribed conduct or pattern of behaviour”. (See: http://www.m-w.com/dictionary/discipline)

What it boils down to is this: Are you able to focus on any given task early enough and long enough so you deliver your results on time and fully complete?

Put another way: Would you consider telling your boss that your report is “almost done” or is “ready, and will be sent shortly” when in fact you haven’t finished it yet or even started working on it, knowing full well they couldn’t check up on your status?

If you think you might take advantage of your satellite status by working fewer hours under the illusion that work is getting done, you probably do not have the discipline needed to succeed in working from home.

It’s happened time and time again – I’ve assigned work to another employee (particularly a new one) who also works from their own home office.  I ask if they have enough time to complete the work and am told ‘yes’.  As the deadline approaches, suddenly their work is plagued with unspecified delays.  The deadline comes and goes, the work is “done” but I don’t have it.  Two weeks later the assignment is delivered; that is, if it gets delivered at all.

Like in the office world, unexpected issues cause deadlines to be moved around.  If there is a problem getting your work done on time – say so.  Leaving your work until the last minute because no one is constantly checking up on your progress is a surefire way to find your situation escalated to the point of not being able to meet the requirements of your job, period.  Empty productivity leads to blank paycheques.

This is not meant to be negative.  Truly understanding the way you approach work is absolutely critical before going down the road of telecommuting.  You have to be honest with yourself and not make this move if there’s any chance at all you lack the focus to continually keep working without supervision.  If you can’t toe the line, you will hurt your chances of advancement, you may lose your job, and you will make your employer gun-shy about giving the same opportunity to another employee who would excel in this environment.

Family and Friends

The attitudes held by family and friends in your life, and how you deal with them, will also affect your success in working from home.  If the people who surround you don’t work from home themselves, they won’t understand your situation.  They may equate your being home to being accessible to them on demand, not realizing that the requirements of your job are just as real whether you perform your function from an outside office or from a home office.

It’s going to be up to you to set boundaries.  When you’re at an office, you’re not home and therefore not accessible to your family.  The same has to be true when you’re working at home – many people use a separate room as an “office” and close the door to shut off the outside world.

The flip side of this is you need to have “home time” too – so your family can have access to you.  It may sound simple at first blush but the line between home and work blurs very quickly (more on this later).

Another concern faced by home-workers is the perception that the work they do is somehow less challenging because they don’t go into an office.  The truth of the matter is in fact the opposite – but when you tell people you work from home your status is automatically degraded in their eyes.

It was even suggested to me on more than one occasion that I get an office job during the day “since I didn’t have to work during the day anymore”.  Our work doesn’t disappear because we no longer go into an office – we still have to put in the time.

Work-Life Balance

The biggest challenge for me has always been separating my “home life” from my “work life”.  When you go to an outside office to work, there is a clear distinction between being “at work” versus being “at home”.  You may bring work home with you, but when push comes to shove you can leave your job at the office and shut off for the evening or for the weekend.

When you work from home, you are always at work.  When you wake up, you’re at work.  When you go to sleep, you’re still at work.  It becomes much more difficult to turn off your work mindset when everything you’re responsible for is just a room away.

This works against you even more because of the perception that due to their flexible hours, home-workers don’t work as much as their office counterparts.  This boils down to you working harder for more hours to prove the work you do is as valuable as your office counterparts.  Since work mode is always-on, it makes having any other kind of life more difficult.

If you have a family, your spouse and children want to see you; at some point you have to find a way to “turn off” your work self and spend time with them.

Although working from home offers more flexibility in terms of hours so you can help with the daycare and watch daytime dramas, any hour you miss in order to meet home responsibilities becomes an hour you have to make up later.  This is where your self-discipline comes into play.

Work Space

If you’re considering working from home, look around your environment right now and find out where you can carve out a work space for yourself.  That laptop on the coffee table in the living room may be okay for browsing the internet a few hours every night, but you need something more dedicated than that if you’re going to spend in upwards of ten hours a day working from your home.

The best thing you can do for yourself is to dedicate a room entirely to your work use.  This has many advantages:

  • You can close the door and shut out the world if you need to focus on work
  • You can easily document the space used for tax credits (where eligible)
  • All of the materials you need to perform your job will be available in one location; this will help you to work most efficiently
  • You will be better able to separate your “work life” from “home life” because you have a true office space to go to, rather than sharing your workstation with other functions in your home

Do What’s Right for You

Not everyone is cut out to work from home, in much the same way as not everyone is cut out to work in an office.  There are as many “right” ways to approach careers as there are people in the world.  In the end, you need to decide for yourself whether you have the skills and most importantly the desire to commit your work days to a home office environment.

Are you ready to allow work into you private life?  Are you ready to lose the face-to-face contact that comes with the office environment?

I would recommend everyone, if able, should try the home-worker situation at least once in their career; but only if they feel comfortable with the idea.  There are a lot of benefits and drawbacks to any work environment you choose so the only way to really know what’s best for you is to try all the possibilities.