After a few days at my new gig, which sucks, I decided to get a little adventurous and post this on Craigslist:

Yes, I admit it –I get paid too much and do too little. In my last three contract positions as a C# developer I have made over $75,000 and spent most of my time sitting around. Considering all the training I have, not to mention the countless hours and dollars I have spent keeping my skills current, I can’t believe I can’t find someone who can fully utilize my skills and leverage my fourteen years of IT experience.

To give you an idea, I had one gig where I was hired by a giant Japanese corporation to making enhancements to an existing time tracking system. It was a three month contract, and I was done in a week. I mostly sat around for the several weeks, blogging, learning some new technologies, and knocking out the trivial tasks that were occasionally assigned to me. It wasn’t like I was scamming them – my manager pretty much told me to stop bugging him for things to do.

My next contract had me working at an established dot-com rolling out a new web site. They needed some back end work done and all I had to do was enhance an existing C# application that called a stored procedure, created a couple of text files based on some business rules, and FTP’d the data. For this engineering challenge, I was hired for a six month contract.

I was done in three weeks. That included UML diagrams, unit testing, documentation, and deployment.

For the rest of my stay at this dot-com, I rewrote their entire outbound data feed system using multi-threaded Windows Services that were entirely XML driven. That took a couple of months, but I needed to look busy. Too bad that their QA department was backlogged by several months, so the application gathered dust while I built NUnit tests and generated a 100 page technical spec with NDoc. I turned down their offer of a full-time job because I was bored and wanted to do more web development.

Most recently, I am at a dysfunctional non-profit that knows little about .NET. They make extensive use of clipboard inheritance and block-boxes written by long-gone contractors that are routinely disparaged. Every now and then one of the cowboys on the team will come by and tell me to copy a few hundred lines of code from some class and make a new web page that is sort of, kind of, like another one. If I suggest that maybe a user control is the way to go so that we can encapsulate the logic, I get a terse response and irritated glare. “We don’t have time for anything fancy – just get it done.” So I hold my nose, copy and paste, and dream of better things.

That brings me to your needs.

Do you even know what you are doing? Can you scope out a project, define the requirements, dictate an architectural vision, staff the job properly with talent, and oversee your staff in a manner that allows them to excel?

Or are you just another poser, throwing bodies at the problem, mumbling clichés and acronyms as your staff lounges, blogs, fiddles around with Ajax, LINQ, or whatever is cool and utterly irrelevant to your project?

Now be honest. You know who you are, so don’t call me. I’ll just get in your shop, figure out that you don’t know what you are doing, and rack up tons of billable hours. Of course, I’ll complete all the little assignments you give me in a fraction of the time you allocated on your Gantt chart, and then surf the net or dabble in XAML. All on your dime.

However, if you think you can keep me challenged and busy with meaningful, substantial work involving ASP.NET, C#, and SQL, I’d like to hear from you.

Oh sure, you’ll be skeptical and bombard me with all sorts of technical questions in the interview (maybe after you Googled for some), and I’ll answer most if not all of them.

We can talk about multi-cast delegates, Manual Reset Events, the maximum amount of threads that a Wait Handle can monitor, Datasets vs. DataReaders, @@IDENTITY vs. SCOPE_INDENTY(), inheritance and interfaces, yada, yada, yada…

You get the idea – I’ve been doing this stuff for a while.

But before you contact me, ask yourself these questions:

1. Can you keep a sharp, hardworking developer engaged, productive, and motivated?
2. Will you or your staff feel insecure if he knocks out deliverables at a blinding pace in a thorough, well-designed, disciplined manner?
3. Are you able to give this hired gun all the tools he needs? That means something other than the 14” CRT and the Pentium 3 that you throw at other contractors. (No joke, I actually had someone hire me at $50/hr to program in .NET on a P3 with 128 MB or RAM. This was a few months ago – needless to say, I left that gig after three weeks.)

If you are not already ashamed and indignant because you can’t meet these criteria, send me an email.

Don’t worry; I’m articulate, friendly and personable. I’ll be worth every dollar of my billable rate, and I won’t waste your time (that is, unless you want me to).

Posted in:   Tags:
Tunnel Rat posted on June 27, 2007 17:22

As the my team huddled tenatively around the DVD player, I played the scene from Casino where Sam (DeNiro) fires the redneck running his slots. Classic DeNiro...

Sam: Now you're insulting my intelligence. What's the matter with you...?
Redneck: I think you're overreacting.
Sam: Listen, you fuckin' yokel. I've been carrying your ass ever since I got here. Get your ass outta here.


I let the scene play out for a few more lines, and turned off the DVD.

Get your ass outta here!
Godamn, I wanted to say those words to Charlie, and the TAC also. In fact, I wanted all of them out.

"Man, I love that movie," I told the boys, smiling. They looked back at me, shocked. It was like I had just shown them a hard-core bestiality video. Fuckin' pussies.

I leaned against the conference table.

"Now, don't get me wrong, nobody's getting fired. But I do need to make a few things clear. We got a lot on our plate, and there's huge pile of work to be done by the end of the year. So I just want to let you guys know that I'm counting in you..."

Silence, and some shoegazing.

"...And I've been in places where companies lost faith in thier development teams. It happens quickly, and it ain't pretty." I scanned their faces for any hint that I was getting through to them. Nothing. I was embarassing them, and they didn't like it. I continued anyway.

"I've seen guys tapped on the shoulder, and then never seen again. I've been in shops where they outsourced the whole operation to Indians -- guys I liked to work with were kicked to the curb..."

"What, is there uh problem?" Burning Man asked.

"No, not yet, but we have a lot of work to do." I checked the clock -- I only had a few minutes left before I lost the conference room.

"Oh, and one more thing -- this company has a pretty good deal going for some of you guys with this 9-80 deal, and I'd hate to see someone on my team cause them to pull that privilege." I needed to let them know that I was on to their shit -- their coming in late, leaving early, and in general, being royal jerk-offs.

Charlie rolled his eyes. Mr. Coffee looked like he was running late for his daughter's basketball game. The TAC was confused. The three Asian guys all had something in common -- they weren't listening.

I have a theory that most Asians think white guys are stupid. I mean, after all, while most of my cracker friends and I were trying to score some good bud or fingerbang Suzy Rottencrotch, guys like the TAC were cramming for a Trig exam. Most didn't even get laid until they were well into their twenties. I don't think the TAC had ever even smelled pussy. So, by default, I was some kind of idiot in there eyes, unless I proved otherwise.

The tree hugger spoke up again. "What, is somebody on this team taking advantage of that policy?" whined Burning Man.

"No, just a heads up." I started packing up. "Thanks a lot guys."

Now, I don't care of someone comes in, kicks ass, bitches and moans, but generally, gets the damn job done. They can work two hours a day for all I care. But these clowns were far from productive. When they did get something done, it looked like a stinking, runny pile of feces...

...the TAC, with his stored procs that had more lines than the manuscript for Infinate Jest...

...Mr. Coffee, who built an entire web app with hard-coded links to a stylesheet that resided only on his computer, and then did nothing when the CIO called to inform him that he could see nothing but a black page...

...and Burning Man -- with his pretty hair, CD collection, and ignorance of the most basic IT concepts...

..and Charlie...fuckin' Charlie...

Hiding, dodging, slacking, engaging in all sorts of mastrubatory coding exercises that accomplished nothing -- I was sick of it. And I've been carrying their sorry asses since I got there, and like DeNiro's character, I was tired of it. I was ready to get my weekends back and my life in order. By then I didn't care what my team thought about my antics. I was in full frontal assault mode, and I was going to clear this damn tunnel.

The crap had started to seep into my family life again. The night before, after several glasses of wine at dinner, my wife and I had gotten into it after I started bitching about work.

"What is with you?" she had asked. "You get these jobs, they work you to death, and everybody you work with is an asshole. Maybe you're the one with the problem!"

Well, she did have a point -- I was an asshole. But I got the job done. These guys on my team where assholes, and got nothing done. But that was about to change.

I just had to make an example out of one of them, and Charlie was it. And that train had left the station.

When I came in the next day, Mr. Whiteboard called me into his office.

"Don't worry about Charlie anymore," he told me. "Everything will be taken care of next week"

Fuckin-A! Now we're talking, I thought to myself.

"Thanks. Look, I'm sorry about all the trouble I've stirred up. I appreciate your support."

"Ok," he said. He stared at me blankly. The meeting was over.

I was stoked. Charlie was on his way out. I could get some things done now. And since the Online Query App was out the door, I wasn't going to have to work this weekend. I called my wife and made plans for dinner.

When I came in on Monday, Charlie's cube was empty. The little snake didn't even say goodbye. Maybe he was escorted out of the building on Friday. He was sure worthy of it.

But now, I had to clean up his shit. All of his unfinished work would need be prioritized, rescheduled, and eventually, coded, mostly by me...

...I had to buy some time from Ferris and the other stakeholders. Man, it was a lot, and then there was that Suicidal Caller thing that the clueless, gayish CIO wanted done...

...and that Archive tool...

...and I had to get the TAC back on track..., Burning Man was going to have to set up the new servers by himself, after he learns what IIS means...

My phone was ringing -- it was the HR lady.

I got fired that afternoon.

It was like I had chased Charlie deep into to the tunnel, had him cornered, and at the last minute, he pulled the spoon on a grenade that blew both of us up.

I saw the ad for my old job on Dice the next week:

Title: Supervisor, Applications Development
Skills: VB.NET, ASP.NET, SQL Server
Tax term: FULLTIME
Pay rate: Market

The ideal candidate will have experience supervising the work of others as well as knowledge of developing and making changes to applications in Microsoft technologies such as ASP, ASP.NET, C#.NET, AJAX, VB 6.0, MS SQL Server, Web Services and XML.

Examples Of Duties: This position will provide first level supervision which involves accountability for assigning, coordinating and evaluating the work of subordinate staff.

1. Develop and make changes to applications in Microsoft technologies such as ASP, ASP.NET, C#.NET, AJAX, VB 6.0, MS SQL Server, Web Services, XML etc.
2. Design and develop, with the help of DBA, MS SQL Server database objects (tables, stored procedures, functions, etc.)
3. Develop software that meets requirements and provides desired functionality.
4. Work with consulting group and technical resources to analyze requirements and define solutions using Visio, Visual Studio etc.
5. Test implemented software changes to ensure functionality, stability and scalability.
6. Develop and deliver required technical documentation.
7. Participate in project and design meetings.
8. Resolve complex technical issues.
9. Follow defined software development methodology.

Mr. Whiteboard was going to have hire another SAD.

Posted in:   Tags: ,
Tunnel Rat posted on June 26, 2007 17:16

I Predict a Riot. I couldn’t get that song out of my head.

For days I had been driving into work at TCTSRN, listening to that Kaiser Chiefs song about hooligans and condoms. And I was starting to sense that something was building.

...I Predict a Riot…

Mr. Whiteboard had started to give me the stink eye after I mocked his habit of changing code in stored procs and rolling them straight into production. We weren’t really seeing eye-to-eye on the whole Charlie debacle, either. I had show him the HR paperwork after I wrote Charlie up for sitting on his ass instead of resolving a major production break, and he had done nothing. I started to sense that he was up to something, but couldn’t figure it out.

...I Predict a Riot…

Because when a shitbird IT manager starts feeling pressure, they tend to resort to all sorts of tricks to protect their turf. That is how, in spite of overwhelming evidence of their incompetence, they manage to retain power for years. And they don’t like to be threatened with exposure of their incompetence.

...I Predict a Riot…

And I had threatened Mr. Whiteboard.

TCTSRN had a Compliance Department and it was their job to ensure that the company was not playing fast and lose with patient data. They audited things and responded to confidentiality issues. But most importantly, they said it was the responsibility of all employees to report privacy violations.

When the last prod break happened, Mr. Whiteboard should have notified the Compliance people and at least given them the heads up that there might have been a breech.

But he had done nothing.

...I Predict a Riot…

Man, I was ready to stir up some shit.

At my next meeting with old shovel face, I asked if he had done anything about that HR paperwork I had given him.

He looked at me. Blankly. “You mean that CAR form you wrote up for Charlie?”

“Yeah, isn’t it supposed to go to HR or something?”

“I’ll take care of it.” He didn’t sound too convincing.

I picked it up a notch. “You know, we had some privacy issues on that last production break.” I leaned forward, lowering my voice. “Do we need to notify the Compliance folks?”

He knew what I meant – I could get him fired. He stared at me. Blankly. I thought I could see my reflection on his forehead.

“I’ll take care of it.”

The meeting was over.

...I Predict a Riot…

So, I had dropped a veiled threat to my boss, and was working on getting one of the turds on my team fired. The rest of the boys needed some attention. They just weren’t getting the hint.

Projects were undone, trouble tickets three months old were still open, and they still hadn’t given me any documentation detailing the applications that they thrown into production over the years. Bastards.

With the atmosphere thoroughly polluted by Mr. Whiteboards foot dragging and Charlie’s belligerence, I had nothing to lose. I was going to fire things up a little bit.

...I Predict a Riot…

The morning of my weekly staff meeting, I dashed out to the local Blockbuster video store to pick up a special movie. I found it on a rack of older titles – Casino.

I got back to my desk a few minutes before the meeting and loaded the DVD into my portable player. I queued up the scene where DeNiro is about to chew out the redneck who was running the slot machines. I was getting tired of my team insulting my intelligence, and nobody could make that point better than DeNiro…

Oh, shit, I just lost my train of thought…My manager just snuck up on me while I was blogging…wanted me to sign my termination letter…it’s my last week at this gig…

…Damn, I have to finish this up later, maybe after I leave my current contract in a few days. I don’t know why I should even worry - I turned down their offer to go perm and have been, for all intensive purposes, sitting around for the last two months…having to smell Bababooey’s lunch and trying to look busy, blogging, maybe even doing a little bit of moonlighting on their dime…

…Fuck it – what are they going to do, fire me on my last week?

…Let the blogging continue in earnest…

My team shuffled in to the conference room. Charlie and his dingy white shirt and bell-bottom slacks. God, he looked like he belonged in the motherboard aisle at Fry’s. Mr. Coffee and his, um, Starbucks cup. The TAC, probably still trying to figure out how to stream HTML out from a stored procedure. And Burning Man, with his lavender hair and old Doc Martins.

“Hey guys, I have little treat today. It’s a scene from one of my favorite movies.” I turned on the DVD player. “Now this movie is rated R, so you guys don’t mind if there is some adult content, do you?”

Burning Man looked scared. “Like what, Nazi stuff?”

Geez, what a fuckin’ hippie. What is it with people like him? Why, if you have hair cut about your shoulders, and dress fairly conservatively, and show up on time, and also happen to be a white middle-aged male, you're assumed to be a fucking Nazi?

“No, just a little cussing, that’s all.”

I rolled the tape…

Posted in:   Tags: ,
tunnel rat posted on June 25, 2007 16:14

Gee, I must have pissed off some CEWPs (Curry Eating Wage Pirates), because the day after I posted my last blog my ISP got hit with a massive DOS attack that shut it down for a few days.

Now, I’m not pointing any fingers, but it wouldn’t surprise me if some CEWPs in Bangalore or some other open sewer of a city in India got together and slammed my ISP’s servers after reading my post. That would be typical of a culture that spent their time and energy developing nuclear weapons instead of fixing their decaying infrastructure that forces men to piss in public urinals in full view of female passerby.

I can’t believe these offshore companies are even trying to recruit American programmers in the U.S. I keep getting calls from thick-accented Indian recruiters with unpronouncable names, wanting me to work on contracts on the other side of the country. And if you mention that maybe working for Indians may not be the best scenario for an America developer, you are met with outright indignation, albeit in broken English. Maybe they are starting to get some push back from American clients who find themselves forced to deal with shoddy programmers who can barely speak English.

And evidently, the Indian diet evidently has caused some issues in the American workplace, as this post from Craiglist’s best shows.

But enough about the CEWPs – I need to wrap up the
TCTSRN thread.

Six weeks into my gig at that non-profit, where I was SAD (Supervisor, Applications Development), I finally had my chance to get rid of Charlie.

We had launched the Online Inquiry App, and it took all of a day for the Senior Business Analyst who gave me the specs and tested the app to figure out that it was broken. Like, major security, HIPAA violations broken. Like, anyone could see confidential patient data which they did not have authorization to see. It had something to do with the hacks buried in the login process. Easy fix, and it would only take a few minutes to correct the issue.

But there was one problem -- I wasn’t around when they found out about the bug.

I was spending the day in Leadership For Results training class with a bunch of ladies, and one or two male middle-managers, doing role-playing games and other worthless exercises dreamed up by HR consultants.

By the time I got back to the fourth floor that afternoon, all hell was breaking lose. Mr. Whiteboard was running around dealing with some other production break, and the analyst filled me in about the nature of the Online Inquiry App problem.

“Did you tell Charlie?” I asked her. As worthless as he was, he could have fixed the bug pretty quickly.

“Yes, I told him this morning.”


“I haven’t heard,” she told me before rushing off to put out another fire.

I made my way over to Charlie’s cube. He wasn’t around. Neither were Mr. Coffee, or the TAC. It must be Starbucks time for the Asian developers, I thought.

So I decided to wait in Charlie’s cube. I prepped for an ambush. Lock and load, bitch.

He showed up five minutes later. He looked freaked out when he saw me sitting on his desk.

“Hi Charlie.”

He said nothing as he scurried to his chair. The cube was small and L-shaped, and I was on one end looking over his back as he logged in. I had a good field of fire.

“How are we coming on that production problem?” I asked calmly.

“Wud problem?”

“You know. The Online Inquiry App.” His computer screen opened up, displaying a bunch of code that was part of his “Massive Architectural Framework” that I had told him to stop working on.

“Uh, I dun know. I havend look ad id.” He started shutting down windows on his computer, hiding his work.

“So we have a production break, and you’ve known about it since this morning, and you haven't looked into at all?” I triggered the Claymores and initiated the ambush.


“What’s the deal? It looks like an easy fix,” I told him.

“Why you giving me heat? I dond do nuding unless you tell me.” He was returning fire.

“Don’t you think this a serious problem?” I was laying down rounds in full-auto.

“I dun know.”

I started putting down some covering fire and securing the perimeter. “How about the server migration project? Where do you stand with that?”

He tried to outflank me. “I still working on dat.” He showed me a half a page of worthless specs.

“That’s all you got?”

“Uh, I don’t think I like this…You giving me heat.” He was withering under the barrage of small arms fire.

I was done bullying him. Yeah, I admit, I corned the little creep and pushed him around a bit. But I wanted to let him know that goofing around and taking leisurely coffee breaks when things were blowing up was not standard operating procedure. He was using my extensive oversight of his work as an excuse to do nothing.

But he was too clever for his own good. I had layed a trap.

Nothing intentional, but I had taken a legitimate production issue and his lack of response to it and used it too my advantage.

I had enough here to pen-fuck Charlie.

I went back to my desk, fixed the code, and rolled it into production. Not like I had to worry about a QA department to test the fix or anything.

With that fire out, I went to the HR portal and found the CAR (Corrective Action Report) form. Six pages of red-tape, but the first step in documenting Charlie’s wayward response to things. I was doing things by the book, just like the HR lady had suggested.

I got set for the next ambush. Charlie’s days were numbered.

Posted in:   Tags:
Tunnel Rat posted on June 8, 2007 16:24

Man, it’s hard to blog consistently. It takes a lot to drag yourself out of bed an hour early everyday and write a few interesting, coherent paragraphs.

But I found myself on some other blogger’s blogroll (Scruffy Looking Cat Herder), and that gave me some newfound inspiration. BTW, that’s a pretty good blog from another passionate developer.

I’m tempted to blog at work, but that is not very smart. For one, my manager has a tendency to walk by my cube and glance at my monitor. Like most middle-age guys, he needs reading glasses, but I think he scan my screen from five feet away and figure out that I not typing code. Secondly, it’s hard to get in the writing groove in a fairly busy office. Finally, the company may be monitoring what I am doing with their computer, although I doubt it. They can barely monitor their own web site and keep it running.

But some things are starting to get my blog juices flowing, so I am covertly typing this text inside what looks like a functional specification document with a bunch of tables and techy mumbo-jumbo. God, I wish I had my own office again.

Now, what I really want to write about is CURRY EATING WAGE PIRATES.

You know -- HI-Bs from India.

Those folks that you can’t understand because they speak and write in broken English.

The ones who make foul smelling food that they eat at their desk.

And write really bad code for a fraction of the price of an American coder.

You know, the foks who always nod in agreement, even though they have no idea what you are saying to them.

The ones that are imported by big companies that claim that they cannot find enough qualified coders in the U.S.

I am surrounded by two of them as I write this. One is really, really obnoxious, so I don’t talk to him. His name is Babo, but I like to think of him as Bababooey.

He talks really fast about technical stuff and makes no sense whatsoever. He’s a blowhard that rolls his r’s. And of course, he makes stinky lunches.

But the worst thing is that he has a habit of sneaking up behind me and reading my screen, and making asinine comments about what I am working on. I guess in his country they are used to looking over your shoulder while you code, probably because the ratio is ten programmers to one computer over there.

“Ah, a VinForms app. You shoood yoooz Vindows Presentation Framework…yada yada yada….”

And you should go back to that shithole sub-continent you came from, Mr. Stink-Boy, I wanted to tell him.

At first I was polite. Now I just ignore him, even when he stands over my shoulder, mumbling about the work I am doing. I act like I can’t hear, or say something like “what, you wanna read my email now?”

Bababooey once tried to suck up to me by sending me PDFs of course material he had copied from an AppDev class. He said he had all sorts of digital manuals, and showed me a ring full of thumb drives that he pulled out of his pocket.

“You vont need do buy any booooks, jus ask me, I have dem.”

I reminded him that we have copyright laws in America. He sneared and mumbled something sarcastic about China.

I sent an email to the AppDev company and said some programmer was peddling their copyrighted material, and it looked like he's in a piracy ring with his H1-B buddies, trading curry recipes, software, and digitized tech manuals. They were not pleased – the courseware runs about a thousand bucks a pop.

And the recent controversy about the Senate immigration bill really has me worked up. The politicians actually want to bring in more Bababooeys to illegally duplicate courseware, write bad code, mumble their way through the day, and nod like retards. They say that there is a shortage of skilled programmers, and the only way to solve the problem is to increase the H1-B quotas.


If there really was a shortage of developers, I would be making twice what I made 10 years ago, not 60% of that amount. And I’m a free-markets kind of guy, and don’t mind competing in the global workplace. But dirty, nasty, maggot ridden truth about Indian programmers is that they are usually horrible programmers, and for the most part, insular, passive aggressive snakes.

Part of the reason has to do with the caste system. Because of aggressive affirmative action policies inacted by the Indian government, there are a huge amount of "untouchables" that have made their way into Indian software companies. They have a modicum of education, but are severely discriminated against by the Brahmims and other upper-caste members of the society because of their poor communication skills and lack of social graces.

The offshore companies send most of these "Dalits," as they are known, to America so that they won't have to deal with them at home. So, if you find yourself staring at the blank face of a mumbling, dull-eyed H1-B, rest assured that he was not even allowed to sit in the same room with his bosses back home.

I once had a client ask me to do a phone screening of some potential contractors for a project that needed some more bodies. I talked to three, and the most adequate was a man with a pleasant Hindi accent. He was fairly articulate on the phone and answered most of my questions correctly. I recommended him to the client.

The body shop sent someone across country the next day. Needless to say, this was not the same mofo that I had talked to on the phone. This guy could not speak a lick of English. Plus, he was surly, confused, and utterly worthless. It was the old bait-and-switch. My dumbass supervisor told me to get him up to speed on the project and parked his curry-eating ass next to my desk for two weeks.

It was a hopeless cause. The guy could barely read English, much less code. Plus, to add insult to injury, I had to spend so much time getting him to do the simplest things, I missed some of my own deliverables. When the burn rate got to be too much, they let me go with half a day's notice. The firm was obligated to give my Dalit friend two week's notice of termination, so he ended sitting around for a while longer, grimacing, fumbling around with some code, and frowning at everybody else on the project until he was shipped back to New Jersey.

Honestly, has there ever been a successful commercial software product produced by an Indian company? Even the rigid Germans have SAP, but that is understandable because those guys are such great engineers, they found a way to exterminate 12 million poor souls very efficiently. Bastards.

But the Indians have nothing. All they do is send indentured servants to America, where they take up residence in poorly run IT shops. And any IT manager that thinks they are saving money by hiring H1-Bs is fucking idiot.

No, really -- if you are doing that, you are a dumbass. How do you expect to get complex applications written by people who come from a country that still has the plague? Did it ever occur to you that the thick accent that makes it impossible to understand the H1-Bs you filled your shop with also makes it hard on your native programmers, who now have to deal with a language and cultural barrier?

I have a theory. The IT managers who bring these ill-dressed, mumbling buffoons into the country and pay them below-market wages have no clue about programming. To them, tech-speak may as well be Latin. They don’t understand complex programming issues even if they are explained to them by an articulate, patient, American programmer. So it doesn’t matter to them if a musky-smelling H1-B is feeding them a load of geek bullshit. It’s all the same, so why not save a few bucks?

Sorry for jingoistic rant, but the Wall Street Journal’s editorial page said today that we need more foreign computer scientists. Sure, and we also need more editorial writers working out of some Bangalore slum – I am tired of paying so much for that paper. I think a nickel a copy is about the right price, and I am sure all those journalists with degrees from Columbia wouldn’t mind stagnant wages for the rest of their careers.

But H1-Bs are a reality, so I’ll be content to be a festering ball of rage, giving Bababooey the stink eye and relaying my numerous anecdotes about working with his ilk. Trust me, it’s not only their lunch that stinks – it’s their fuckin’ code.

Stay tuned…

When all you have is a hammer, everything is a nail. For the folks at TCTSRN, all they had was a 20 ounce ball peen called T-SQL to solve their IT problems. That’s fine if all you need to do is generate file extracts or shuttle data from one source to another behind the scenes of an enterprise application that had a front-end. But after a few years, the TCSRN users started to demand more, like custom intranet applications. If you have been doing nothing more than data-diddling for a long time, you are woefully ill-equipped to deliver anything more than crap to the end-user.

I was trying to get that point across to my team – they didn’t know shit, and they were going have to get with the program. I was more than willing to show them the way, mentor them, coach them, whatever. But they where going to have learn something more than SQL.

They didn’t like that idea.

For one, SQL is a procedural language. It’s great for linear thinkers. The code at the top runs before the code at the bottom. Nice, top down paradigm.

Secondly, you could keep monkeying with a query until you got the results you wanted. Hit EXECUTE, and you get instant gratification.

So, with the nice procedural nature of SQL, and the immediate results that show up in your editor when you hit F5, it becomes a very comforting programming environment. Sort of like a application development security blanket. Always there. Stable. Controllable. Complex enough to keep you awake. But even if you are trying to solve complex data issues, all you need to know is the basic syntax, and you could hack your way to a solution. The language hasn’t changed in over a decade.

But developing applications requires more. Event-driven programming, object-oriented programming, multi-tier development, remoting, etc. – some of that is hard shit that requires some creativity, tenacity, and curiosity. My team had none of those traits.

This became painfully evident when Mr. Whiteboard asked me to work on a web project with the TAC (Thick-Accented-Cambodian).

“I don’t want you to do the coding, but help him out,” the shovel-faced bozo had asked me.

That would be rather tough, I had thought to myself, since the TAC had never coded anything but SQL. But I took it as an opportunity to demonstrate how things can and should be done in the shop. This would be the app that I could leverage as a learning exercise for the team.

On the surface, it was a simple page that queried the massive back-end system, combing through millions of records to return just few, depending on the specific criteria the user entered. With the brute force approach of building a dynamic query and passing it to a stored procedure, it would take minutes to return a result – a worthless solution. But with some sophisticated front-end work using AJAX, a solid middle-tier object that does the bulk of the processing, and a basic stored proc that returns small recordsets, the app would rock.

Not that the TAC was going to be able such an app – he was a SQL-writing idiot who knew one way of doing things – brute force. His stored procs sometimes where 5000 lines long. He thought temp tables were a gift from the heavens – and fancied himself to be a genius for knowing how to use them.

Get a clue, you data-diddlers – temp tables are no big fucking deal. If not used properly, they are just a way to get yourself in more trouble. And most of you are really lacking in the creative side, so I see a lot of brute force in those nasty stored procs you SQL hackers are so proud of. So many of you write like you get paid by the line of code. The rest of us are not impressed – after all, there is something called elegant coding. But I digress.

To top it off, the TAC has a nasty habit of nesting sub-queries. His code looked a lot like this:

From TableYada Where YADA_ID IN (Select
From Where YadaYadaID IN (Select YadaYadaID
From Table YadaYadaYadaId)))…

... And so on, and so on and so on…

You get the idea. It was like the TAK would curl himself up in a little ball of logic and fuck himself.

So I decided to lead by example. I came in on a Saturday (that was getting to be a habit), and wrote a nice prototype ASP.NET application that solved the problem. Leveraging some 3rd-party AJAX components (not some Atlas vaporware), I had a UI working in hours that queried that database and offered drill-down functionality without post-backs and excessive delays. It used one stored procedure that was twelve lines long.

I commented the C# code, excessively. I wanted the TAC to get the idea -- not everything can be solved by SQL.

It didn’t take long for me to figure out that the TAC was not impressed. I met with him the next Monday in my office.

“Did that code make sense?” I asked him.

“Uh, wud, the web page thing?”

“Yeah, notice how the middle-tier database code reduced the round-trips?”

“Uh, ummh, maybe,” he stammered. “But maybe, uhmm, it not so good. Maybe you can make it stored procedure, so not so much C sharp code.”

Really, I thought? Little shit-for-brains SQL boy thinks we need more spaghetti code…

Fuck, I was going to loose it….

“And how would we debug that?” I asked. “There are four levels of detail, each with its own query.”

“Uh, maybe you use PRINT statements,” he said. I realized that this marble-mouth cretin had never used a debugger. It was a lost cause. All he had was a hammer, and the world was one big nail to him.

Posted in:   Tags:

I've been away from the blogging routine for awhile, and have had some time to reflect on a few things. You see, I have been doing some heads-down coding for the last six months and haven't had to deal with any management or political issues, and I've come to a conclusion.

Most programmers are shitty employees.

No, not bad coders. Bad employees. Of course, I generalize.

But is there a group of people more anti-social, belligerent, unjustifiably arrogant, and plain unproductive than programmers?

And God-forbid one should dare suggest that. If so, prepare for indignant rants, suggesting that management is always the problem. After all, how dare someone expect an employee to communicate professionally, follow some standards, and for the most part, not be a fucking self-indulgent, quasi-autistic jerk all the time?

As someone from both sides of the great programmer/manager divide, am starting to realize that maybe the poor reputation of I.T. managers is not very accurate. Some suck. Some suck more. Some are very, very good.

As for programmers, most are horrible people to work with, and especially, to manage.

For example, my current contract has me working in a cube on a floor that is primarily filled with salespeople, and I’ve noticed a few things.

  • They dress nicely.
  • They smile when they pass you in the hall – even if they don’t know you.
  • They banter, flirt, and generally engage in polite social mannerisms during the workday.
  • They hold the door open for you.
  • They say ‘excuse me.’
  • They are polite to coworkers and bosses.
  • They wash their hands after using the toilet.

Most programmers do none of these things.

OK, I’m sure the trolls are ready to flame me and say “If you weren’t such an asshole, people would be nice to you!”

But even the programmers I don’t know, the ones that work on different floors, that have no reason to think that I am an asshole, share these common traits:

  • They are rude.
  • They dress poorly.
  • They are downright mean. Like “fuck you, I can code” mean.

Just an observation, and I am probably over-generalizing. But I try to counter the stereotype by being somewhat polite, holding doors open for people, and whipping the anti-social sneer off of my face when I am not staring at the screen.

So for an IT manager, there is a huge hurdle that has absolutely nothing to do with technical competence that impedes their ability the get things done and successfully manage projects -- their staff are assholes.

And I’ve noticed a cottage industry developing in the blogosphere that revolves around IT manager bashing, and I am partly guilty of that. But let’s not give the jerk-off programmers that dominate the trade a pass. They are the ones causing management to move jobs to India. I mean, if you want a surly, smelly developer with poor communication skills, you can get one from WiPro or Infosys for a lot less money.

Now for an update – I haven’t felt the urge to get up early and blog lately, and I can’t with good conscience blog at work. But I’ll try to post a little bit more often.

Posted in:   Tags:
Tunnel Rat posted on March 28, 2007 16:02

I got a lot done that Saturday. Now, I’m not a workaholic, and strongly believe in the XP philosophy that if you are going to work overtime, it should be done in small, infrequent intervals. But without much help from my “team,” shit was just not going to happen.

"Team" was a generous term. Team would imply that they could work in a coordinated, collaborative manner. Not so – they worked together like four guys in a circle jerk work together.

When I came in the next Monday, I fired up Visual Studio to wrap up some lose ends on the Online Inquiry app I had worked on over the weekend. The piece of shit site was finally getting stabilized, and if Mr. Whiteboard could get his act together and verify that it worked properly, we could launch in a week. I checked the code into Source Safe and moved on to some other tasks.

Big mistake.

When I finally got some half-assed specs from the overworked business analyst who sorta, kinda, maybe knew how the thing was supposed to work, there were some gaps. Evidently, the security of the system was so well designed that every user had the same login id. The way they differentiated who was who was by assigning a unique password, and the code had to figure who the user was by querying the database for that password, along with the group code (which was being passed around in the query string – in the clear). Not very secure. In fact, a hackers dream. Crack the weak password, guess which one of the four group codes to use, and you are in. Kiddie script stuff.

Not that you would be privy to much, except PERSONAL MEDICAL DATA, like the fact that Juan Esconseco in Orange, California was getting treatment for genital warts, or that Stacy Mooring in Yorba Linda, California had received a prescription for Lithium. Not very important, unless you had just started dating Juan and thought he had beauty marks, or you are married to Stacy and didn’t realize she was bipolar and thought that her violent mood swings were due to PMS.

The fact is, with folks like Charlie and Mr. Whiteboard in charge of your sensitive medical information, the chances of your medical data being secure are slim to none. They have other things to worry about, like their kid’s basketball games (Mr. Whiteboard) or beating some gangsta wannabe in some violent video game at the local internet café (Charlie). Security is an afterthought.

But not to me. I had done what I could to tighten the security holes in the Online Inquiry App, and was ready to circle back around a few days later. I first had to spend a day in a Leadership For Results class. Mr. Whiteboard’s idea. I have a bunch of coddled punks on my team and an impotent boss, and I’m the one that needed the leadership training.

Right. Sit in a class with a bunch of middle managers and department heads and do silly exercises designed to make me a better leader. No fucking way. No amount of role-playing was going to help me deal with the squad of bozos I had. But I went through the motions, played nice with folks like the Director of Coordinated Care and the Manager of Executive Compliance, and kissed a little ass with the HR lady that ran the thing. She was, after all, the one that turned me on to Charlie’s bogus resume and was helping me navigate through the shitstorm that was festering in Mr. Whiteboard’s shop.

When I cracked open the code a few days later, the work I had done was gone.

I did a double-take. Chill-out, I said to myself. Let’s make sure it didn’t get moved around or renamed, or put in folder created by a Vietnamese coder with limited English skills, like “Businez Leyer” or something.

No luck. I couldn’t find the class I had written. I was starting to freak.

It was a very stressful, nerve racking job, pushing the rat's mental state to its limits. Crawling through narrow, pitch black tunnels, sometimes for hours looking for a heavily armed enemy who would if he got the drop on you not hesitate to kill you.Occasionally under the strain a mans nerves would break and he'd be dragged from the tunnel screaming and crying. (Link)

Charlie had laid a trap. But I knew what I was up against, so I prepped myself. I checked the app to see if it would still run. Somehow, it was working like it did when I had wrapped up my changes a few days earlier. That meant the functionality that I had coded was there, somewhere.

Charlie had moved my code around, and didn’t bother to leave any comments, like “I moved your fucking code to class bla-bla-bla, you round-eyed piece of shit.” Just moved it, probably to some place it didn’t belong.

I found my logic lurking in the front-end, mixed in with a bunch of Charlie-code. Charlie-code was ugly, and I could spot it a mile away. I got my shit together and scheduled a meeting with Mr. Whiteboard.

When I walked into his office a few hours later, he looked scared. He always looked scared when I went to go see him. Let me try to “manage up” and help him out, I thought to myself. He wasn’t cut out for this stuff.

“I got the app security stuff working this weekend,” I told him.

“Oh. That’s good.” He flashed me a fake smile. He looked like he was passing a gallstone.

“Yeah, I figured out there are no unique user IDs, so I tightened that up a bit.”

“Yes, I know, we, uhm, came up with that to make it easier to set up users. And there is a “Z” login that you can use to test all the accounts. It’s in the code” He looked ashamed. Deep-down, he knew that wasn’t right, hard-coding a backdoor to make things easier on him. Lazy bastard.

“No prob, I found that. But I had everything working, and now my code is gone.”

Mr. Whiteboard grimaced, like another gallstone was moving through his alimentary canal. “Did you check with Charlie?” he asked.

He was getting wise. At least he was dialed in to the fact that Charlie could, and would, do all sorts of crazy shit to maintain his position as Head Motherfucker In Charge of Code.

“Well, I was about to, but I wanted to check with you first. See, the code was moved around somewhere. I think we need to talk to him, you know, reinforce the need to communicate things.”

He took a deep breath. “Oh boy.” God, he hated this stuff, I could tell. He wanted so much to be adored by his staff, and Charlie was Golden Buy, his pick of the litter. And now he had to do something about his behavior.

Mr. Whiteboard got on speakerphone and rang Charlie’s extension.


“Do you have a second, Charlie?”

“Wud you need?”

Maybe you could get your little ass into your boss’ office, I felt like screaming into the phone.

“Uhm, we just want to talk about a couple of things about the Online Inquiry app. It will just take a second.” Mr. Whiteboard was begging.

Charlie walked into the office and sat down next to me. No pleasantries were exchanged, just grunts and nods.

It was a short cross examination.

“I wrote some code to handle security in the app, and now it’s gone,” I told him.

“Yeah, I move id do da frond end.”


“Da frond end.”

“Oh, the front-end. Why?”

“Dad where id belong,” he mumbled.

“How come you didn’t comment your changes?” I asked.

He shrugged.

Mr. Whiteboard had had enough. “Thanks, Charlie.”

That was it. No discussion about the importance of communicating with your supervisor, yada-yada-yada, nothing. He just didn’t have the stomach for it. I wasn’t going to get much backup from this clown, and if I came down heavy on Charlie, or anybody else, Mr. Whiteboard was going to back them up. I was screwed.

“So, what do we do?” he asked.

“I’ll tell him to roll back his changes and leave my code where I had it.”

“But where does it belong?”

Jesus, now I was going have to get into a technical discussion over this? Not going to happen.

“That’s not really the point,” I told him, trying to remain calm. I wanted to pound my fist on the table. “Ideally, the code should be in the middle-tier, it’s more secure that way. But he shouldn’t just move it around – that’s the issue here.”

He stared at me, blankly. He had no clue what I was talking about. I stared back at him, blankly. The meeting was over.

Posted in:   Tags: ,
Tunnel Rat posted on January 2, 2007 18:34

Something was not right.

While doing bug fixes on the Online Inquiry App, queries were timing out. I upped the ADO.NET connection timeout to get around the problem, but that was a short term fix. Users can’t wait 30 to 60 seconds to get a page to load, at least not most users.

Have you ever been on the phone with a customer service rep that is waiting to pull up your record, and they say “Sorry, my system is a little slow today?” This is usually because performance is an afterthought for most developers. Especially those working at non-profit companies in the health-care sector.

I checked the queries. It was painful. The code was dynamic SQL, meaning that they were made up at run time, depending on what criteria the user selected. You did not know what was being submitted to the server unless you stepped through each call to the database. Sometimes the queries would be very fast, other times they would take almost a minute. And the pages would hang.

Oh, yeah, I’m sure there is some DBA pinhead out there reading this and saying “You could run a trace or use SQL Profiler to examine the queries! Gosh, you’re so stupid.” Well, fuck you, Mr. DBA. Most of the time you need special rights to run Profiler, and I don’t like to trace. So get back to your data-diddling, asshole.

Finally, I found an eight table join that was hitting a table with three million records. That is not a lot, but if you don’t leverage the indexes, you’ll be doing a table scan that brings the query to its knees. And some of these queries were hitting columns without indexes.

For the sake of keeping my development momentum, I thought about purging that table of all but 10,000 records. I fired up a delete query. As I was about to execute, I paused.

What if this was production data, I wondered?

After all, the database names weren’t prefixed by intuitive terms like “DEV” or “PROD”. I couldn’t put it past Mr. Whiteboard or Charlie to assume that these queries were read-only, and that it wouldn’t hurt to develop against production data. It’s not like some developer is going to go in there and blow out a few million records of live data, right?

Developers can, and do, purge tons of data in the course of real application development. That is why they need development environments. And QA environments. And Production environments with logins other than sa/password.

But for Cheap I.T. Bastards and Lazy Hacking Turds, having the discipline to not turn your production database into a sandbox is too much to ask. It costs money. It takes time. And it requires you to communicate – which is not a strong suite for someone trying to protect his turf or sabotage a new supervisor.

I was going to bring this up with Mr. Whiteboard. I closed the query window with the delete statement, updated the bug database and got ready to go home. It was Saturday, after all.

Posted in:   Tags:
Tunnel Rat posted on December 28, 2006 18:21

Back to TCTSRN...

As the S.A.D. (Supervisor, Applications Development), I felt it was my responsibility to get my team the tools that needed to be productive. The right software and hardware can make a ton of difference for productivity and morale.

For example, The TAC and Burning Man did a lot of work with massive text files, and this type of task cannot be done with a basic editor like Notepad. I checked online and found the program they were asking for online selling for $39.

Charlie had also been whining about wanting a dual-monitor system. As much as I hated the feral creep, getting him some new gear would go along way in shutting him up and reducing his compulsive tendencies to sabotage me. I had been using dual LCDs for the last two years and it was a huge difference over a single monitor.

Considering TCTSRN had some decent desks, current generation computers, ergonomic chairs, and 17” LCD’s, I thought I could get Mr. Whiteboard to spring for some upgrades.

So I thought.

There is a breed of manager, supervisor, or director in I.T. that can only be described as the CHEAP I.T. BASTARD (CITB). They lurk in the middle tier of companies, and they have the power to make a developer’s life miserable, merely because they hold the purse strings for hardware and software. Mr. Whiteboard was such a creature.

Toiling away for years in vi or Query Analyzer, or Notepad, or worse, a command prompt, they cannot imagine there is a world with programmable mouse buttons, slick IDEs, text editors that show you byte counts, or things called “XML Editors.” The CITB is a bottom-dwelling scavenger, one who takes pride in doing things in the most Spartan manner. And they’ll be damned if they are going to blow a few bucks of their budget to get a developer some widget or, god-forbid, a pair of LCD monitors.

I found this out at my next meeting with Mr. Whiteboard.

“Some of the guys said they need a real text-editor. I found it online for $39,” I told him.

He looked at me, blank-faced. Man, I was getting sick of his vacant stares. Our relationship had declined steadily with the Charlie fiasco.

“What for?” he asked.

“Well, they have to scan a lot of big text files while they work on the extract programs. Notepad doesn’t cut it. Oh, and I think we should get set up with dual-monitors.”

“Dual-monitors? Why?”

“If you take a look at their desktops, they usually have ten or twelve windows open.”

“Mmmm.” It was obvious that he couldn’t image why anyone would need more than a couple of apps open. But then again, he had never been a developer, just a data-diddler, hacking out SQL in Query Analyzer. Sophisticated application development requires numerous windows open, one or two for Visual Studio, several SQL-Server consoles, editors, file managers, and browsers, not to mention iTunes or Pandora.

This was going to get nowhere. The TAC had told me that he had been asking for that cheap text editor for three years. Mr. Whiteboard wasn’t going to spring for it. I thought I could eventually wear him down, but the CITB was a tough creature. Sometimes the only way to get through to them was to bring your own gear in or shame them into laying out some dough. I started to fantasize about showing up at our next meeting with a $39 check made out to TCTSRN.

He changed the subject. “So how are things going with Charlie?”

“It’s a challenge. I’m trying to keep him busy on other things besides the Online Query app. I did talk to HR and did some checking on the procedures and steps that we would need to ---.”

“You talked to HR?”

“Yeah, just to do some checking on the --.“

“I thought we were going to work this out together?” He was pissed.

“I, uh, I just wanted to get some background on the, um, uh, process.”

He glared at me. What an asshole, I thought. I had taken positive steps to remedy this severe personnel problem, and I was getting reamed for not keeping things between him and me.

“Let me know the next time you feel the urge to talk to HR.” It was a threat.

“Sure, no problem.” The meeting was over.

I went back to my desk and inventoried the situation:

  • I took a big pay cut to get supervisory experience.
  • I got conned into running a pathetic team of surly hackers.
  • My boss was a Cheap IT Bastard.
  • I couldn’t fire anyone or hold them accountable.
  • I was not to talk to anyone in HR.
  • I was responsible for getting a shitload of work done by the end of the year.

Barely a month into this gig, things were looking grim. I was going to have to take matters into my own hands.

Posted in:   Tags:

- Vineet Nayar, CEO, HCL Technologies

Recent Posts

Slumdog Comment Generator

Not Sure How To Respond?
Use the Slumdog Comment Generator!


«  October 2019  »
View posts in large calendar

Month List

The thoughts expressed on this blog may or may not be the author's own and are protected by the 1st Amendment. Any attempt to reveal his identity by contacting a slumdog hack at Google, or a corrupt Desi sys-admin at his ISP will be dealt with promptly and severely. Civil and criminal penalties may apply if one is found to have used private information in an attempt to get the author fired at the Hindu-only I.T. ghetto he currently works at. In addition, any Desi who attempts to burn the author's house down because they are enraged over his writing will be prosecuted to the fullest extent of the law. This isn't India.

© Copyright 2019 Life of an I.T. Grunt

View My Stats