Sunday, November 16, 2008

A Person's a Person, No Matter How Small

I got tasked with a project that for some reason strikes me as just plain fun. It's the kind of work that you take home with you, that gets in your head in your idle moments. Much to my good fortune, I started blue-skying about the project's potential, and got told that not only could we fill out the Happy-Path wishlist, the work had already been half-done in an earlier attempt to get the project done.
Pinch me.
Then the other shoe dropped: the reason this project stopped all that time ago was because the product would only have been used by four people. And now all of those people are gone, and the new guy is having to do their jobs.
I cringed at the idea that I might have to break the news to the client that they couldn't have what they wanted. And said a brief prayer of thanks that I hadn't told him about the many amazingly cool things we could do with his project.
I went to my superiors, expecting them to say, "Sorry, we can't justify the cost for just one user," and shoot the project down. Instead they asked the question, "How important is this data?" They had me talk to somebody in a different area who had asked management for the data. I discovered that not only was he going to need the information we had, but he'd need it to be produced using the blue-sky goodies we'd shelved. And the people that he in turn was needing to pass the data to would provide Federal funding to see to it the job got done.
Suddenly, that one miserable person has the potential to get something that's not only going to make his job a whole lot better, it's going to give him some cool tools...and raise his importance to everyone else around him.
Pinch me.

Monday, October 20, 2008

Corporate Kudzu

It's interesting, the differences between the private and the public sector, and yet there are also similarites. I've worked in government offices where not much gets done, and nobody worries about it.

I had one position where it seemed like no one had worked in the private sector, but they insisted they were, "just like a private company". It had this odd effect on the culture: no one who was a government employee could really be "fired", but they all spent their time worrying and moaning that any day, the axe was gonna swing. Everyone worked really late hours, and yelled a lot, but at the end of the day, they really didn't accomplish much more than any other agencies. I kept thinking they were playing "dress-up".



I didn't last very long there. I didn't have it in me to join in on the wailing and the gnashing of teeth. And I'm too cheery to let someone yelling at me convince me they're right. I also didn't talk politics: there were strong feelings about which party you supported, and if you didn't pick one and choose your allies, you were fodder for the front line.


One place that actually was a typical model and got to play dress-up: a billion-dollar multinational company that was simply beautiful. Beautiful people in expensive suits, women in the latest corporate fashions, and everybody buzzing like a beehive, thrumming with activity. It was like a dream, but you couldn't have it without stepping into the Pod...you were trained before you were allowed to start your first day, and the training was steeped in the Lore of Political Correctness: this is how we talk, this is how we use the phone, this is how we approach people, and these are the things we can and can't do because someone might have their feelings hurt.

It was kind of like a friend of mine's living arrangements--he was in a contract-driven "neighborhood association community". The kind of place with monthly meetings and a thick book of rules. He got in trouble for washing his car in the driveway. He got in trouble for popping the hood where everybody could see the icky engine--why couldn't he just let "The Mechanic" replace the air filter for him? (if you're like me, you're "The Mechanic". Not all of us can afford to overpay someone for a 5-minute part swap). And he got in trouble for generally not fitting in.

His neighborhood also had pest control come and take care of "the squirrel problem". The social sterilization procedures are what made this fascinating: someone had actually convinced the tenants that the Pest Control company doesn't harm the squirrels. Nothing bad--it was all for the better! They were gently captured in a cage full of treats, and then taken...away. To live somewhere happy and free. Some squirrel farm, where they had plenty of free space to roam.



I had a great time with the people in my billion-dollar multinational company: we had weekly meetings over a beer, we played pool together and went bowling, and still managed to crank out a lot of great achievements, crafting feather after feather for our caps.



And yet I always had this weird feeling that at some point, the squirrel truck would come. And I wasn't sure if I'd be on it or driving it.

Monday, September 29, 2008

Who's Holding the Bucket for the Bailout

This situation is a Financial World War II. Only this time, we are Europe and they are us.

We have been invaded by an insidious nationalistic propaganda that has deluded us all to the point of collapse. Our own people can't seem to stop the invasion because the masses are against them. We need someone to step in and stem the tide.

Unfortunately, this war doesn't involve boats or bombers or soldiers: it's about cash and credit. We need one or the other (or both, if you please), and the only thing we've got as collateral is an outstretched hand and a request for past favors returned to us.

If other markets demand liquidity, America will crash and bleed out like an Ebola patient. Other nations might like to think there won't be a domino effect, but the truth is that the more those dollars are pushed back, the more they drop and the less they give back as everyone scrambles for the exit. If our country won't nationalize its financial system by buying it up (and that statement alone tells you how bad off we are), then we need to outsource our credit to willing buyers.

Is this the Global Economy we've been waiting for?

Thursday, June 12, 2008

Let me Reiterate the Point

I had an interview with a company where the development manager used the word "Iterative" to describe the development model.



For those not in the know, software development typically falls into a workflow cycle, and this cycle can be described in many ways. "Iterative" implies that development begins, moves forward, and doesn't stop. Anything that modifies the development cycle along the way is held off and incorporated in the next iteration: "That's a nice add-on, but we're a bit too far down the road for that right now. Let's incorporate that into Phase 2." Everything is broken up into neat cycles.



What made this interview stand out was the constant re-use of the word "Iterative". It came up several times in the conversation until, when I was finally asked what development methodology I prefer, I'd have been incredibly stupid to say, "Waterfall." I pointed out why I liked the iterative model of development: it encapsulates the scope of each development cycle, it acknowledges the need for modifications along the way, and it provides them a place in the next iteration so that the project isn't constantly stopped and changed. Imagine the difference between changing your oil every 3,000 miles, versus driving with the hood open and the drain plug out and constantly pouring quarts as you head down the road. Obviously, when you wait to mess with things, you get somewhere.



The last time I heard "Iterative" in the conversation was thus:



"It's good that you can work in an iterative environment: a lot of developers get here and find that they can't work with it. They get frustrated because we are so iterative."



I get the feeling they don't quite understand what "Iterative" means...but it's the closest word someone has come up with to describe their crazy work environment, and because it's a buzzword, it sounds more reasonable. More businesslike. It calms everyone down: "It's okay; we're just being Iterative." I got the impression that their journey is more like the driver insisting the oil can't be changed yet...while a half-dozen user-demons are prying at the hood. And the backseat passengers (stakeholders) are telling the driver to just go ahead and pull the hood release so they can do what they want. Management would be passengering, trying to reach around and pop the hood for you because you're the only one with your eyes on the road.

Between the Lines

I had an interview today that told me a lot. It wasn't any one of these things, but the combination of them that gave away what working for this company was like.

When they said,
"The typical work-week is 40-50 hours"

They meant,

"The typical work-week is 50+ hours"


You can tell this because they also said,

"We're not clock-watchers here."

meaning

"If we were clock-watchers, we'd all be miserably depressed at how much time we spend here."


"People can come in as early as they like: some enjoy being here at 6 A.M. and others stay 'til sometime in the evening."

In other words,

"Most people do both"

or

"The typical workday is distracting and frustrating, but you need to be here. It's the times before and after the users and stakeholders get here that you'll be getting anything done."


You can't always infer these things this way--but in this case, the combination of the above phrases, and the way the Development Manager looked when they said them, told me the truth.


There's nothing wrong with hearing, "We need someone who can hit the ground running", but I'm coming across a lot of shops who seem to have cranked up the treadmill and everyone's trying to be George Jetson: "Help! Jane! Stop this crazy thing!"


A lot of times this is because the company has been running on a binge/purge model of staffing: developers are a dime a dozen, so let's get a dozen or two, run them on projects, and if/when things start to get tricky--deadlines slip or developers push back on the requests--we'll let them go and look for some new ones. This is reasonable, given the circumstances: it's hard for a non-technical person to interview for a technical position and know that a person's skill-set is what is needed. And there are a lot of programmers out there who talk a good game.


What happens when you have so many hands on the code is that you have so many different ways things were accomplished that the applications become more of a mess the more they are worked on. In this case a lot of the in-house work was going to be to bring everything to one platform. Matters were made worse by the fact that the company had acquired two other companies very quickly, and to keep things running smoothly and make the mergers happen as quickly as possible, they had simply maintained all three separate systems...of everything. Billing, HR, Auditing and more were performed three times over because nothing had been merged yet. Three cheers to them for wanting it done, but a chorus of boos for waiting for everyone's jobs to reach critical mass before acknowledging it was needed.

Monday, June 9, 2008

Nuclear Escalation

Lawsuit Lawsuit Lawsuit.


I'm not sure why some companies feel the need to throw the "L" word around, but there it is. Like eBay going after Craigslist.org, I fail to understand the need to legally assault anyone and everyone--just because you can pay lawyer's fees, doesn't mean you should.


I think it's because some people enjoy the power: I'm thinking of three specific businesses in my area that claimed (to their employees, at least) to be pursuing legal action against former co-workers. Some were people who quit, some were let go, but I think the reason the jilted take to the courts is because they see an easy win: the little guy's not a big company, and besides, he's not even employed now! He'll never make court costs. He'll beg to settle, and we'll draw up the terms. As I'd mentioned in an earlier post, telling your employees that the guy who left is getting hauled to court is good for morale: either your remaining staff think he must have been pretty bad to warrant that treatment...or they fearfully shut up and hope they're not next.


Oddly, for all the gab from management, I've yet to see any of these particular instances make the papers. I suspect it's because they never happen. Companies get stung, they react, and the bad guy may get a nasty letter from a lawyer. Hard to corroborate my sources when the alleged accused is long gone and not eager to talk about it.


Regardless of your circumstances, never burn any bridges. Even if you're moving to another state, keep your head high, do your best to remain amicable, and don't stoop to mudslinging if your employer tries to draw you in. Document everything and insist on getting things in writing (and refuse to leave the premises until they do, or you'll never get it). Most importantly, smile and wish them well. Because when you blow up, shout at people, use obscenities, or even just think you're clever because you deleted everything off the server, you open yourself up to being sued into the afterlife.

Wednesday, June 4, 2008

Environmental Extremes

I don't like having to work so many different places in IT: retention rates these days seem to be awful.



But the interesting thing has been the experiences I've had with so many different places.

At this point, I've been in massive corporate halls of beautiful marble, where everyone is beautiful and they wear the latest fashions...and I've been in 8-room offices with ripped furniture, beer in the break room, and X-Box on Fridays.

What I learned from this is that for me, it really doesn't matter where I work. It's what I'm doing, and who I'm with. Do I like what I'm doing? If not, can I at least keep doing it without coming home miserable and/or annoyed? Are the people nice? That plays an important part--if you like being around the people you work with, you can overlook a lot of sins.

I had one job that was very personally rewarding: I felt like I was part of something great, and I was doing a lot of good for a lot of people--except the ones I was working for. For them I could do no right. They made me miserable, did horrible things with no regard for the danger they placed the general public in, and they ruined my health physically with the most horrible work environment an office could ever manage.

What matters to you?

Methinks Thou Doth Protest Too Much, Part 3: The Raised Bar and the Sinking Quicksand

Despite the multiple hoops I have to jump through, I'm finding that the prize on the other side is sometimes snatched away. I feel sorry for Contracting companies right now because they're getting hit from both sides: the Scylla of desperate employees trying to squeeze top dollar from their contract, contract-to-hire, or direct-hire options; and the Charybdis of employers wanting fast movement through their own glacial slush.

To be specific, I have had three job opportunities that have taken the following steps:



  1. Beg the contractor to find them someone--anyone. The water-cooler story was one place where the hiring manager said, "I'm so desperate I'm willing to stand out on the road with a cardboard sign, in a chicken suit, to draw people in the door!"

  2. Hurry up and make this great guy wait. The company representing me says, "They loved your resume, and want to interview you right away--how soon are you available?" Then proceeds to be unable to get a straight answer as to when they'll interview you: is it this week? Next week? Either nobody at the company actually planned ahead, or multiple agencies are stoking my ego before the company's actually heard of me (possible)

  3. Stop the Train! It's getting too close to the station! There's always something that stalls the last step. If the whole operation died at the beginning, that would be one thing--I'd immediately assume the problem was with me. But what's happening is that the company finds some fault with me, something about my skills or personality that's "not a good match" despite being happy with everything up to that point.

This is all well and good--as I told one apologetic interviewer, "I understand that these things take time and you want to think it over. I'd rather you know that I'm the right fit than have you place me somewhere I won't bring value to you." (Been there, done that, it's part of why I'm now looking, thankyouverymuch)


The problem is that these particular companies I mention are making things worse for themselves. What happens is that with each candidate they reject, they raise the bar: reasons for rejection go from "Not talented" to "Not friendly" to "Wrong Hat Size." While this is happening, the work piles up and the project deadlines slide farther towards infinity. The work environment becomes a morass of quicksand that guarantees failure because even if they do find Mister or Ms. Right, that person's going to drown in a muddy mess. They're going to be miserable and bail on an impossible workload, muttering under their breath the whole while about what a crazy place that was.


One frustrated contracting rep told me he vented on the company. "Look," he said, "If I send you seven people a week, you tell me there's something wrong with all of them, and a week later they've all got high-paying jobs in your area, then the problem isn't the people." I don't blame him: this particular position has been open since July 2007. It's now June 2008 and the position is still unfilled. The last I heard was that they were insistent that they needed someone yesterday and it's getting more urgent by the minute. The other two companies have been 6 months and 70+ candidates, respectively (see previous post).


As desperation grows, "We need someone to hit the ground running" is the catch-phrase. But in which direction will they run?

Methinks Thou Doth Protest Too Much, Part 2: The Buyer's Market

I was let go in March. The only employment statistic worse than March's unemployment rate...was April's unemployment rate. So that means I'm up against a lot of competition. I also have to be less mercenary than my competitors: I can't take a 6-month contract and pick up and go, moving anywhere in the country. I have a family to take care of, but neither would you see me sacrificing my time with them to fly somewhere every Monday and come back every Friday.

What this means is that the companies who are looking now have the luxury of picking and choosing. They can also take their time. For my part, I have to commit far more time and effort, and hit the largest number of opportunities to improve my odds. Where a typical job hunt involves a phone pre-screen, a phone interview, and a quick in-person interview, now the decisions I've tried to sway have required the following of me:


  • Psychological profiles

  • IQ Tests

  • Agreement to be investigated for criminal, credit, and personal history

  • Online skill assessments

  • Preliminary phone screens

  • Technical phone screens

  • In-person preliminary interviews (usually technical)

  • In-person "get to know you and see if you fit with the team" interviews

More than one place has done all of the above. Most at least do a choice of IQ or Personality, then skill assessments, then the rest. It takes a lot of my time, and if you think about it, it takes a lot of their time, too. They have to read resumes, call clients or companies, assemble interview teams and schedule the appointments.

I was told that one place has been through 70 interviewees and still not filled the position. Imagine that for a moment. With three employees managing the process, a conservative estimate will come up with the following numbers:


  • Psych/IQ - 1/2 hour (1 employee schedules, evaluates scores, and handles e-mails)

  • Resume - 1 hour (2 employees spend a half an hour reading and discussing, and we'll assume they just read the one, and even be generous and lump skill tests in)

  • Phone screen - 3 hours (2 employees X 1.5 hours)

  • In-person Interview - 4.5 hours (3 employees X 1.5 hours)

Even skipping some steps, we have 9 hours per candidate, times 70 candidates = 630 hours to fill one position. I can't imagine spending 630 work-hours on anything that isn't directly related to a project.

What I haven't figured out is how anyone gets anything done in this model--after all, how many hours in a day do we have?

Methinks Thou Doth Protest Too Much, Part 1: The Opportunity Cost

Looking for a new job has been interesting, to say the least. When economic jitters hit a company, it's often surprising to see what bizarre steps they'll take to save money. No one has time for close analysis of financials in a business: that's the kind of thing you hear in Mutual Fund reports. Without taking a look at the waste, a company often makes guesses. They cut things that seem expensive. And in the effort to stop waste, that lack of forethought instead wastes more.

For the first time in a job search, I'm running across more than one position that is "cancelled". At some point along the way, the company just calls the whole thing off. "They cut the budget," I am told. "We had to cancel the position. Maybe we'll regroup in the fall."

The problem with this is seldom that the company spent too freely on a hiring binge. Usually the position was shopped out because there was a need for it. Something was getting held up, and now that something is not getting the attention it needs to get better (expect said something to possibly be amputated or outsourced by Q4 if things don't improve).

In tandem with my previous post about wanting the moon for the price of a cup of coffee, I just came across a position that was resubmitted into the system after being canceled. Same company, same job title, but at lower pay. And with some expensive buzzwords tacked on, the kind that normally push this job's salary in the other direction. Thankfully, we didn't get far with me before it was cancelled. But I suspect that the protests that the hire "can't afford to be done" are simply incorrect:

It can afford to be done. When you take into account what it'll cost not to.

Saturday, April 19, 2008

DWIM! ("Do What I Mean!")

I had an interview yesterday. It was described as a Senior level position that involves planning, analysis, architecting and design of a short-term project. This was the "personal interview", that initial sit-down that some companies will do just to see if you're the kind of person they want to work with. I was told that the way this company operates is to make the second interview technical.

I was not surprised when the first thing we did was sit down with my resume and start asking technical questions about my skills. I was disappointed, but not surprised.

If you're in a technical field, you're probably used to reading descriptions that don't match the interview. You're probably also used to interviews that don't match the job. What they tell you about the company is whether they are:
  • greedy
  • just incompetent
  • some combination of both
Greedy:

I regularly run across jobs that say they are "Senior Level", but the pay is Junior. I see "Junior Programmer" jobs that want the candidate to have years of experience and strong skills in things that can only be learned by reaching Seniority, such as modeling, business analysis, and formal documentation. Both of these indicate that your potential company does not wish to pay you. They want something for nothing, and they're probably wasting a lot of money cranking through employees who don't match. Don't become the next embittered disgruntled ex-employee of a place like this.

Incompetent:

I also see the Bad Match: skills specifically poor to the position, or in contradiction with each other. "Web Designer" should not say, "Must have strong skills in SQL, Stored Procedures, database." "Senior C# Programmer" should not say, "Must know HTML." And last, when you see "Java Programmer wanted: must know MS SQL Server, PHP, Microsoft", you should assume Incompetency A: they don't really understand what they need the job to do, or Incompetency B: they've compiled random spaghetti-code apps from multiple platforms over the years, and they want you to manage the mess.

Both:

The bottom line is that the companies I am encountering in my region want a Formula One driver for Cabbie pay, and they're going to put him in a beaten-up Buick without a pit crew. First place is the expected result. There will be no room for Second. The last guy came in Second. That's why we're hiring you.

By the way, that Senior level position that involves planning, analysis, architecting and design of a short-term project? It was listed as "C# Programmer"

Lollipops and Rainbows

When you interview with a company, anyone you talk to will tell you that the place is a wonderful place to work. This makes sense: the people you're talking to work there because they believe that their company is a wonderful place to work. Otherwise, they wouldn't be coming in day after day.

Or they're lying because they're desperate to get you in the door.

At the interview for my last job, my boss said, "We're a small company, so we're like a family. Everybody who works here, has been here for years. They love it here. No one...ever leaves because they want to." There are enough landmines in that statement to tell you otherwise, but my problem in believing it was my confidence in myself. I thought, "I can already tell that at best that statement is partially true, but I'm going to change their minds when they see what a great worker I am."

It was quite a surprise on my very first day to be kept two hours late in the boss's office while he spun me a tale of woe: the development team used to be 3 people, but two of them quit. As did the head of sales. I got a long story about how awful they were as employees, how misguided of them it was to leave, and by the way, we're suing them as well. Followed by more stories about exactly how bad some of the other people who worked there had been.

It was even more surprising to find out that the one other developer left on the staff had only started a few weeks before me. As did one of the two network techs. Leaving only 2 of 6 employees as anything resembling "long-term". Digging around the network revealed quite a number of names of people who weren't working at this place any more.

When I get into an interview, I have a trick for finding out if it's a good place to work. I wait until the end of the interview and get into a short "chit-chat" conversation with whomever is interviewing me. If there's a programmer in this mix, that's ideal. I'll give you this example from my interview yesterday:

Employee: Well, that's it then. You're free to go. *laughs*
Me: (smiling) Great! I'm going to get back out there and enjoy this beautiful day!
Employee: That sounds great. I wish I could do the same.
Me: You will! (checking watch) It's already 4 o'clock, and it's a Friday. You've only got one hour left, haven't you?
Employee: (bitter laugh) Ha! That would be nice. But that never happens.
Me: Well, I'm sorry to hear that. But just the same, I hope you have a good weekend.

If a place is really awful, they'll answer that last line with "I'd like to, but I'll probably be spending it here." No company will ever tell you outright that something sucks about their work environment. Ask them directly because they expect you to, but whatever they say, either read between the lines or toss it out after you get a chance to chat outside of the interview.

Tactics like this save you a lot of trouble: it's easier to find out if a place sucks with a little light banter than it is to hear how family-oriented a place is, and not know until the first time your child is sick that they don't want you leaving to take them to the doctor. Unless you take your laptop and promise you can check your e-mail. And will make up the hours when you come back in--working from home never counts. Most companies that I have had experience with consider this arrangement to be very generous, because it gives your family permission to need you, so long as you do your best to never stop working.

Try this trick when you interview, and you can easily arrange it to your circumstances. If it's a late-morning meeting, make a comment about going to lunch. If it's a lunchtime meeting, thank them for being willing to work through just to interview you. And any time in the afternoon, as you go, visibly count the hours to 5:00 and make a comment like I did above. Pay close attention to what they say, and respond to it sympathetically to see if they say more. A decent place might tell you that today they won't be going home on time, but this is unusual because of X. Or that they stayed late every night this week, but they're happy because they're going home early on Friday.

Even then, trust your instincts. Go with your gut. My biggest mistake at my last job was being willing to ignore the feeling and believe I could make the company better.

Wednesday, April 2, 2008

America: More Sides, More Stories, More Content

I'm sure there are more reasons behind my being let go. As much as I try to do my very best at every job (no, really--at times it's kind of creepy, the degree to which I apply my work ethic to myself), I would be a fool to think things are ever simple.

The problem is, you can't go down that path because it leads you to wonder what the thing is that caused you to be terminated. I was looked right in the eye and told, "You're a wonderful person, and you know we mean that because you know we've had some really terrible people before...and I'm sure we will have them again. But we have to let you go." In other words, let a good person go and start fishing around for bad ones? Knowingly telling someone that you love them and want to get rid of them means:

a) They're lying, and they really think you're a terrible person. But they also think you'll shoot up the place. "What would get you to walk out that door? That's what I'm going to tell you."
b) They're lying, but they can't tell you what pushed you out (for example, the boss's cousin needs a job and yours will do just fine). Sometimes it'll pain them because they really do want to keep you, but it's out of their hands.
c) They thought you were a good person, but then something about you set off an alarm.


You have to watch that last one, because it will always grow behind your back, and you won't know until it hits you. It may hit you so hard you never got the license plate of the Thing That Ran You Down.

A good rule of thumb is to avoid talk that is not work-related. If I have to talk about myself or my thoughts or opinions outside of tech, I try to make it as neutral as if you'd read it on the news. Or parrot a similar thing, from a completely different context:

"Of course, other countries have done X with that idea instead of Y ...",
then nod in acknowledgement at the response and offer little to no opinion.

We can all stand to improve ourselves, but you can't stop to look back and find the unknowable because the wondering will drive you mad. It will lead you down wrong trails and cause you to second-guess yourself, and that can be fatal at your next interview.

You will always be yourself: just continue to try to be better at it, and that's all that matters.

They Like Me! They Really Like Me!

Well, here we go again. Once more, I am told that I am a joy to work with, and do such a good job. Such a good job, that I have to go. Go on, you're "let go", like I've been paroled from prison.

In this case, we have a project where the original developer was burned out and quit in frustration, but not before writing a ridiculously low estimate. The shop goes entirely off the direct-bill, hourly model: you're only okay so long as at least 37 hours of your 40 can be charged to someone else. When Project Lowball runs out of hours, you're hosed. Carry forward the sins of the last person, and dump them on the next.

This also happened to a friend of mine: he went to a shop of 100% billability. They told him they'd give him his first billable project next week, but first they needed him to help them configure some in-house stuff. He believed them until he saw his first 2-week paycheck. They paid him for the Thursday and Friday of week two where he'd started working on a project, but the week and a half they had him working on their architecture, he didn't get paid for. When he quit, his supervisor actually blew up on him, yelling about what a "traitor" he was and telling him the company would sue.

That's the big thing--my (now former) company tells its ex-employees they'll be sued, too. As does another company I know of. All of them see people as "a drop in the bucket. If we don't fill it up fast enough, dump it out and go back to the ocean for more." And they know that as a business, they have to pay for lawyers, while the average person doesn't. I had strange voice-mails and e-mails contradicting the "you don't have to go home, but you can't work here" conversation I'd had. These are documented things, and they're designed for lawyers to use against you when they draft the threatening letter reminding you what a bad person you are.

Strangest of all was being told I'm fired because they can't afford to pay me when I'm not billable...then wanting to know if I was planning on working for two more weeks on the project.

It's good for morale if you tell your employees that the guy that left is going to be sued: it instantly turns a good person into a bad one. Damn, he must have been stealing, doing coke, and having sex in the conference room if my boss says they're going to court. People will easily believe bad things about others because that's what they're used to: it confirms the general cynicism that comes from being an adult.

About that bucket: are those drops water? Or blood? Time will tell...

Wednesday, March 26, 2008

Say it with an 'F'

The last 6 weeks have been a blur. What in the world could possibly have eaten my time so completely?

Two words: Windows Vista.

For the past 6 weeks, I have been hitting Microsoft's latest OS pretty hard. I did a series of upgrades to a desktop machine and contrary to rumors, Vista did not deactivate my license due to "too many changes". I did go ahead and format and reinstall from scratch after this, just because I thought that would help with my problems. I had no trouble re-activating Vista after a format, either.

That's the good news.

The bad news? Pull up a chair.

My conclusion is that many of the "performance enhancements" and "OS improvements" are really just band-aids on an Operating System that at some point during surgery, severed a main artery. The OS bleeds resources, when it's not draining them dry.

Some of this is the fault of driver manufacturers, and shame on them for it: they've had 3-5 years to work with various iterations of Longhorn and figure out 64-bit technology, and most drivers are developed on an aggressive cycle of updates. They should be used to a state of constant revision.

Some of this is nascent technologies, not properly addressed: I have now tried two different USB keys on two different machines. Both say they can be used with ReadyBoost, but neither ever works--both Vista machines spit them out as "too slow" to be used.

Another technology change here is that 64-bit hardware is having to dumb itself down at random to run "older" 32-bit applications: in other words, your programs might pick up on the fact that they can now use 64-bit technology, but the software that runs your keyboard or your IM program is running in an entirely different, lesser (32-bit) space that can support it.

And then we have bad habits, carried over. In the days of Windows 95/NT, we got in the habit of using "temp" files for better performance. This is all well and good: if you have to use a file a lot, may as well put a copy of it in one place where it's conveniently easy to reach. Maybe even let Windows create junk files of its own, scratch space for the crib notes that keep it running smooth.

Because computers are stupid, Windows has a hard time cleaning up after itself. Temp folders would get cluttered with old and unused junk, and users started finding themselves suddenly running out of hard drive space. We quickly learned where to look and how to delete the junk, and so Microsoft moved it for us, hiding more "goodies" in the "Prefetch" folder in XP.

We've had 7 years with XP now, so we learned the Prefetch trick, too. In the meantime, we'd learned that Windows leaned on the hard drive a little more than we realized: this little thing called "Virtual Memory" (or "Paging") let Windows reserve a huge chunk of the hard drive for itself on a regular basis. Think of it as a bucket for your RAM: whatever's moved in and out of the RAM, let's give that information some breathing room on the hard drive so it can be loaded in and out of the RAM as we need it. Depending how you set it, the OS could grow or shrink this hard drive chunk to anything it wanted to (and on some machines, it'd spend more effort playing with the size of this space, than actually using the space). All this in addition to Temporary Internet Files, a separate space on the hard drive where the browser can store all of its clutter and junk (and which XP also has a nasty habit of ballooning to unmanageable proportions)

Enter Superfetch, the one-stop shop for performance. From what I can understand, if there's a spike in system resources--say, for example, you open Microsoft Word right after you launch your browser--Superfetch pounces on whatever's being used and starts caching it like mad, stashing it on the hard drive in an easy-to-reach place, and using whatever it can to speed up whatever you just asked it to do. It takes a quick look at what resources are left on the machine, and grabs them all, overriding your typical OS operations to take command of your computer.

This is probably not so bad for Microsoft Office, or even Photoshop, but it's truly terrible for gaming because it means that suddenly your game is in a neck-and-neck battle with Vista for whatever resources you have left. Superfetch is like a petulant child with games that aren't aware of its existence: "It's mine! I'm taking it all! I was gonna give it to you, but now you tried to take it, and you can't have it any more!" I started noticing that my games would thrash like mad on the hard drive, then suddenly crash, often right after launch. Once I stopped Superfetch, these troubles went away.

I can only think that Superfetch is a way to treat memory leaks or instabilities generated by resource demand. In effectiveness, I can only compare it to your doctor noticing you're looking anemic, and prescribing a course of leeches.

I had a unique situation in which I was going to have one video card for a while, and then be able to add a second for SLi. I thought this would be a perfect chance to share the benefits with other people and really find out how much of a performance gain you could see when you upgrade your video. I ran benchmarks under three settings for a bunch of games, then put the SLi configuration together and ran the exact same settings again. Unfortunately, I had to scrap all of my efforts because my performance with two video cards actually went *down* than when I was just running with one. I'd carefully checked my configuration, confirmed with the hardware manufacturers (of the machine and the cards) that I had it all set up correctly, and still thought I was losing my mind. Unfortunately, no: either the drivers and hardware aren't ready for Vista, or Vista just hasn't figured out how to deal with them. Either way, I have more amazing hardware than I've ever had before in my life, and I'm back to constant blue-screens, just like the days of Windows 98...

I've also spent the last six weeks saying, "I finally think I've fixed the problem! This one thing I tried just might do it!" and being proven wrong, time and again.

System Specifications:

Laptop
Sager 9620 (aka Clevo D910C)
Intel Q6600 Quad-core Processor
4GB (2 x 2GB) RAM, dual-channel configured
dual 160GB HDs, 7,200RPM @ 3.0GB/Sec, SATA2, configured for RAID 0 (performance)
dual nVidia 8700M, 512MB video RAM (1,024 total), in SLi mode
Windows Experience Index (WEI): 5.7

Desktop
ASUS A8N SLi Deluxe motherboard
AMD Athlon X2 4400+ processor (dual-core, 64-bit)
4GB (1x1GB) RAM, dual-channel configured and tightly timed to manufacturer's recommended specifications for the motherboard and Vista
dual 160GB HDs, 7,200RPM @ 3.0GB/s, SATA2 (not in RAID)
dual nVidia 8800GTS 512MB video RAM (1,024 total), in SLi mode
Windows Experience Index (WEI): 5.2

Thursday, January 24, 2008

Bills and Billability

Contract work is a difficult game. You have to provide a product in a timely manner...but you only get paid for the time you spent on it. No one gives you a bonus for getting the job done early, but you can guarantee that it'll hurt you when you're late.

Most companies have to go by the hourly model: how many hours an employee spent working for a client seems to be the most efficient unit of measurement. Unfortunately, it's also a giant wrench in the works of your process. I know companies that make "billability" their policy. Some of them even claim "100% Billability is MANDATORY!". This simply cannot work.

The moment everything has to be billable, work becomes a game of hot-potato. People focus more on getting someone else to do the work while they write down that they billed for it. Hours get rounded up (and padded), productivity goes down, and people get stressed about who's going to pay for bathroom breaks and general ass-scratching time. This also means that any time someone is looking at a work estimate, the side wanting to close the deal is looking to trim the hours down, while the people doing the work are trying to keep their feet out of the fire more
than they're trying to honestly assess how long it will take. Padding grows.

That's just the beginning. Companies that emphasize billability can't charge the client for the time they took to drive to their office and meet with them. They can't charge for the time it takes to figure out what needs to be done and work up an estimate. And they can't bill for
any time that might be spent making sure the end product works without breaking and can be used by the client.

Worse still, the client doesn't want good code. They don't want elegantly-written, efficient programs because those take time. Get it done, and get it done yesterday. Documentation is the biggest casualty: even if your programmers don't leave the company, even if no one else is
assigned to the project, that same harried programmer can't sit down 3 months later and remember what he or she wrote. It doesn't work that way, any more than you could recite word for word an e-mail that you sent last week.

Suddenly the add-on possibilities become enormous: testing costs money, but bug fixes are billable. If my application breaks when it gets on your servers, even better: because now you have to pay me to come on-site and work with your people to get things right. Best of all, if the
client mis-spoke, or they forgot something, or they just feel you misunderstood what they wanted, you're off the hook: that's not unbillable hours, it's a Change Order. Or an Enhancement.

I once had a company tell me that the Hourly Model was perfect because it was "just like a Law Office, and those guys make a lot more an hour than we do." I talked to a lawyer I know: he said that the greatest loss to his practice has been mentoring. Junior partners are
reluctant to ask a simple question in the hallway because they'll find their mentor just charged half an hour to their client for the answer.

As a result, nobody gets better: they just get by.

Too Much of a Good Thing

Nobody appreciates a Prophet until after the fact. Then they most appreciate a Prophet who can refrain from saying, "I told you so."

Despite my last post about Honesty, you should realize that too much of it at once can poison a person. It's up to you to regulate the dose, but see that you do so, over time. Raise or lower the amounts based on how the patient responds.

An application I am involved in has seen the worst of it: no requirements, poor documentation, it's the re-write of a bad source application, and it's had complete staff turnover since it began. The data used to provide the application is not only a nightmare, it can't be changed because it belongs to another party and/or connects directly to other things.

The client who hired us to re-write the application doesn't care about this, and they shouldn't. You have to remember that the client doesn't care what you have to go through. They don't want to know about how awful it's been, how sad it was when the developer walked out, and how upset everyone's been at the office. What they care about is results. You have to have something to show.

Our team is making its best efforts. Progress has been unbelievably slow, for a lot of reasons. And worst of all, it seems to be extremely difficult to get anything going that the client can get their hands on and see for themselves. This is the last time to be laying the drama on the Man who signs your paycheck.

Many sins led us to this point, but it will be interesting to see whether our efforts will truly be allowed to continue. It would be a shame if they didn't, but it wouldn't exactly be a surprise.

Thursday, January 17, 2008

Money Changes Everything

I wish I were making this up...

I went to my neighborhood gas station to fill up my car. Standing at the pump, I noticed a cheery glow, flickering from the space in between the pumps. Flickering? Oh, that's not good. The sparks that started to shoot out confirmed it.

I immediately stopped filling, cradled the pump, and drove off without the receipt. Parked the car, went straight into the store, and found two employees. "Excuse me, you have a major problem right now--there's an electrical fire starting between the gas pumps."

That got their attention--"What?" "Where?" "Oh my god, shut 'em off!"

Oh, if only. But it didn't go that way. The Manager Was In Control. He said, "I don't see anything." I said, "Ill show you" and walked out there. The employee followed me, but the manager didn't. He stood inside the store and watched me. Coward. Thankfully, it had slowed down for some reason, and gone back to a flickering glow: the electrical box for the overhead lights was clearly badly grounded, overheating, and conducting electricity across the gap.

A woman had pulled up in an SUV. "You really don't want to gas up right now," I told her. "This electrical box is shooting sparks." She stared at me like I was the stupidest person in the world, didn't bother to look, and went right back to gassing up.

I went back inside with the employee, who was hurrying, "I'd better shut the pumps off," she said.

Back inside, the manager SPRANG INTO ACTION.

No, wait--he didn't. He said, "Hold on--I want to go see this." This time, I thought, "I am getting the hell out of here. I do not want to watch someone burn to death because this idiot thinks electrical fires are No Big Deal. He walked back, said, "I don't see anything. We'll just wait and see." I told him, "If you'd at least turn off your overhead lights, the fire would probably stop. Then you can get an electrician in here in the morning, and in 5 minutes he'll probably have it fixed for you."

"No, that wouldn't work--people might think we're closed."

Well, there it is: what was I thinking? We can't have people stop coming in! Safety is bad for business!

"Well, good luck to you then. You'll need it." And I left.

That was two days ago. Nobody's burned yet...but nobody's fixed it either. I imagine the cheery campfire glow is just the thing to huddle over, on these cold, cold nights. After all, what are the odds that someone will park their SUV just a little further back than normal? And the wind will waft towards the fire? And enough fumes will be trickling out of the pipe to catch? Probably no more than the danger from smoking at the pumps, which people do all the time.

Thursday, January 10, 2008

Okay, so Why?

On the subject of this article:
Herb Greenberg Picks Circuit City CEO as worst of 2008

If we all know about bad management at the top screwing a company, and article after article laments the golden parachutes given to idiots for tanking a company....why is it still happening?

Who looks at, say, Philip Schoonover's resume and thinks:

"Hrm....you hired expensive consultants who told you that the best way to save money was to fire damn near everyone who keeps the stores running. Then your company paid said consultants to "foment their plan into actionable items" (translation: 'to do it'). Wrecked the company's reputation, infuriated everyone from investors to customers, and drove the stock down more than 80%.

"When can you start?"

Perhaps it would be easier for everyone if, any time a company hires a CEO like this, the CEO in question just comes to their first meeting, drops their pants, and craps into a box in front of everybody. The message is conveyed instantly, time and money are saved all 'round by cutting straight to the point, and the golden parachute provides emotional comfort to the Board of Directors because they want the guy to go, and by that point they're willing to pay him extra if he'll carry the box out with him when he goes.

New Millenium Deal

I'm a natural at Sales; it just seems to be in my blood. Where other people thumb through inspiring books geared to "energize your synergy", I can simply...walk in and do it. Close the deal, get what I want, and make everyone happy.

That's really the big secret to being a successful salesman: make the customer happy.

Believe it or not, there are high rollers in the business who make the customer unhappy, but I guarantee you that this way never works out in the long term. I've seen aggressive bastards who cram deals down the client's throat simply by wearing them out: "Come on! What are you waiting for? I've got all this ready-to-go, and you're hanging your ass on the line with your superiors by not just signing the dotted line already!" I worked at one place where the Alpha Male stole from other people's orders to fill his faster. It made them look like buffoons to their clients because they were always "losing" parts of their orders. Alpha sold massive quantities at a loss, to gouge it all out on the next deal.

This is the tipping point between getting one's foot in the door and begging for a restraining order. Alpha Male would also pad the order with the wrong things, just to fix the numbers in the "Quantity" column and make it look like he'd turned the sale around: 15 of the flat-panels you need, 5 wrong ones that were lying around, and let you take the two weeks to figure it out and turn it around: not his problem, he put 20 monitors on your loading dock in 24 hours and you damn well better pay. He knew that in a large company, the guy that signs the deal isn't the guy that unpacks it at the dock and has to send some of it back.

Sales is the worst way to come into IT. I used to spend my time trying to make everyone happy, and in application development that is one of the worst things you can do. Because it means you start thinking about how to gloss over the rough spots when you have to meet with the client. You figure out ways to make it sound like things are going well when you have a fire on your hands. Making the customer happy, as I have learned, is absolutely not the same thing as "managing expectations."

Managing Expectations is really what software development is all about. These aren't widgets, and anyone who's spent any time in IT knows that a) there is no "turn-key solution" and b) "out of the box" is never what you want. Pretend otherwise and you're setting yourself up for failure.
  • Tell your clients when something goes wrong.
  • Tell them if you don't think it's a good fit
  • Don't cover your ass, because bad things grow in the dark
  • Don't throw anyone under the bus, because you never know when you're going to need them again

and most important:

  • Ask questions if you're not sure you've got it right

I can't begin to tell you how many applications I've seen get all the way to the demo, only to leave the customer baffled and angry: "Why did it look like that? That's not what our people do at all!"

Some people are afraid that going back and asking questions makes them look stupid. The truth is, it shows that you are listening. And that you care about the customer. My father is a master at sales, and he taught me a golden rule in dealing with people: that they love to talk about themselves. Let them talk, take an interest, and start thinking about how you can make that match with what you want to do for them, and you have a winner of a deal.

Leveling with a customer about things that aren't working can be your saving grace; everyone knows that software doesn't come out on time, delays happen, changes get made, and things don't work out the way they should. Being earnest about your intentions will carry you a lot farther than throwing a curtain over it all and pretending The Great and Powerful Oz has the situation under control. And last but not least, the simple courtesies can speak volumes about you: don't be late to a meeting (call or e-mail if you are), don't interrupt, and if you can't seem to communicate with the client, just do the listening, and save the convincing arguments for another day, when you can think it over and plan up a good way to show them why your way might be better.

And as for the Alpha Males? The customer may sign the contract, but they'll never be happy with the destination if you got them there via railroad.

Screen for LCD

When you aim for the Lowest Common Denominator, the only direction you will ever go is down.