There is no “I” in SHUT UP!

We’ve all had him… that manager who thinks he’s a wonderful team player but who is more like a Nazi than anything.

He thinks it’s teamwork to override everyone’s advice.

He thinks it’s teamwork to force people to work the way he wants to work that doesn’t make sense to anyone else.

He thinks it’s teamwork to have the minority opinion and force it on the group.

And of course he thinks it’s teamwork to monopolize every meeting with his own agenda(even someone else’s meeting).

So what do you do with someone when you can’t just tell them to shut up?  That’s a tough one and something we’ve all had to face.  At my last big gig there was a guy that none of us liked.  He literally sabotaged projects and he even swung a real sword around the office one day.  And for some reason the bosses wouldn’t get rid of him.  This guy was like the teflon don and nothing we did could get rid of him.  And that’s what I don’t understand.  What is it about these guys that the managers like so much?  Why do they consistently get rid of qualified techs and keep the morons?  Why does the guy with 3 kids who takes on every project in the place and produces more code than anybody get fired for an honest mistake when the little asshole who lives with his parents and is 4mos behind on his only project keeps his job?

I’m telling you, there’s something wrong with the American job marketplace.  Companies don’t know how to retain employees and they don’t care.  I really can’t tell you how many times I’ve been told by some HR tool that a DBA is a DBA and they can replace someone just like that.  Well you guys are probably all DBAs… does it really work like that?  Are we really all the same?  Can you just replace any DBA with any other DBA?  I really hope not because if that’s true then why did I even bother trying to get my MVP?  Or get my certs? 

OK, that was kind of a little jaunt there for a min… I was talking about dealing with that guy at work.

The truth is I don’t really have any of those answers.  It’s so hard to deal with someone like that because if you’re rude to him he’s the first one to go running to daddy to tell him you aren’t being a good soldier.  And now you look like the asshole.  And you can’t go to daddy yourself because now you look like a baby who can’t solve his own problems. 

Here are a couple ideas though.  These guys rarely act like themselves around the bosses so the bosses don’t know how they really are.  So you can start recording your interaction with them.  That’s a little underhanded and some companies don’t like that, but you can do it if it’s bad enough to prove a point and you need to prove to your boss that he’s unworkable.  Another thing you can do is to always make sure you talk to him with someone else present.  If you can, make it the boss.  Explain to the boss what this guy is like and that you want to hold all official meetings with him in the room to make sure you get heard and the right issues come out.  If you can’t always have your boss there, then whenever you have a meeting, send out meeting notes to him, the others involved and the boss.  In that email state that it was advised that he do this for these reasons and that he declined for this reason.  This way maybe the boss will read it and ask what happened, and at the very least you have a record so that when it all crashes, you’re covered.

Look, there is no real solution.  You just have to feel out the situation for yourself and see what it’s going to take.  It’s a shame that an inability to effectively deal with someone like that often times drives good people away.  I’ve worked in one company where they did regular 360 reviews and the managers looked through them and if someone got a low score from their peers they dug deeper.  And they often got rid of people based on those scores.  You have to be careful with something like that though.  Sometimes an entire group can hate someone just for doing the job he was hired to do.  So like an entire dev group can really hate a DBA coming in and locking down production when they’ve been allowed to do whatever they like for a long time.  And in a case like that they can use the 360 to get their power back… but I’m not bitter, I swear.

Technorati Tags: ,

A Learning Plan

I realize it’s hard to find time to study with work pushing at you all the time and with family pulling on you after that, but you’ve gotta try to find some time or you’ll get left behind.

I’m certainly not perfect, but I am pretty good at making time every day to study something.  It’s not that hard really.  Just take 15mins out of your lunch break.  Or take 15mins at the end of the work day before you leave, or in the morning before you get started.  I used to spend the first 30mins every day going through newsletters, or reading a few pages in a book and going through an example.  It’s slow going to just do 15mins a day, but at the end of a month you’re further along than you would be had you not done anything at all.  Slow going is better than no going.

And I’ve interviewed guys before who were just pathetic.  You could tell that they hadn’t bothered learning anything new in a long time and even what they knew wasn’t all that.  And once I even got the opportunity to interview the same guy again like 2-3yrs later and you know what… he hadn’t changed a bit.  I don’t think he’d picked up a book in all that time.  And there’s just no excuse for not learning more these days.  There are so many free resources it’s staggering.  There are free sites with plenty of tech articles, there are free video sites, there are newsletters, forums, etc.  There’s just no excuse.

So really, don’t get left behind.  Dedicate yourself to 15mins a day.  Make it the same time every day.  It’s only hard to get started.  Once you’ve got the habit you’ll begin to love making even slow progress. 

Technorati Tags: ,

I Warned You

I managed to take the 70-450 exam for Katmai a couple weeks ago and I was surprised to find that I got a powershell question.

As well, I was looking through some practice questions for the Katmai Dev exam (don’t remember the number)and there were a couple powershell questions on there as well. 

So I’ve been saying to people for 2yrs now that they’d better start learning powershell and now it’s starting to creep into exams even.  So you guys get boned up on your powershell and feel free to write me if you don’t know where to even get started.  I’ll be glad to help.

Mini Vacation

I’m on a mini vacation in Santa Monica and of course I took my computer and blackberry because a DBA is never really off-call.
I took a couple calls today and answered a couple emails to which my boss replied… maybe I should remind you what vacation means.

And it’s not that I don’t know what vacation means, it’s that I really don’t mind taking a couple mins here and there to make sure things are going ok while I’m gone. It’s kind of a small price to pay really.

So I head home tomorrow evening and I’ll be back in the office wed.

I even managed to learn something on this trip. I’ve never tried searching for an object that doesn’t exist but I was reading on the plane that if you enter in an object name that doesn’t exist into Object_ID(), it returns NULL. Good stuff that. So consider that your trivia for the day.

That guy you can’t stand.

Is there someone at work you just can’t stand?  That one guy who is a thorn in your side at every turn and not only do you not get along with him, but he’s just as stupid as the day is long…

Well I’ve found an excellent way to divert myself from how much I hate that guy.  I write the scripts to remove their access from all the servers and put them in a dir and just wait for the opportunity to use them.  There’s really something about getting out of a meeting with a guy you just can’t stand and going back to your desk and writing his drop login statements.

Try it, you’ll love it.

.Net Children

I spent the week at TechED in L.A. and I had the (good?) fortune to sit in on a couple .Net sessions.  The most memorable of course, and the one that attracted me to begin with was on data access tricks.  I didn’t have a session guide with me at the time so I didn’t know it was a .Net session till I got there, but man, once i started listening i was amazed.

Ok, so the course was about data access tricks… and hearing .Net guys talk about SQL and DB access is like listening to your 5yr old explaining to your 3yr old why it rains.  It’s no wonder why there are so many poor apps out there when one of the big data access tricks is to create a view in the DB for large joins.  Now, I’m not saying that the guy suggested using a view instead of putting a large join query on the front end… no, not quite.  He was actually announcing it like it had just been created… the latest thing developed by the SQL world to get around an age old problem.  And I’ll tell you too… the ooos and aaaahs were plentiful.

Another good one was creating a view to get around all that pesky crap the DBAs make you do like solving many-to-many queries with lookup tables.  The way they were whining about that and saying what nonsense it was is incredible.  I thought about raising my hand and offering some constructive criticism on the matter, but I get enough of those conversations at home when I’m arguing with my kids about why they can’t have candy for dinner in the middle of the street.

Now, ordinarily I wouldn’t mind this kind of thing too much, but I think part of the problem with .Net devs being so puerile about these things is that their leaders aren’t guiding them.  Because instead of complaining about DBAs making them use lookup tables, which are necessary in many designs, he could have approached it from the professional angle of… hey you know how you have to solve a many-to-many with lookup tables and how much work that is on the front end?  Well here’s an idea, have your DBAs give you a view for that on the back end and you can just select from it in your C# code.  Now that makes .Net guys sound like professionals who know a thing or 2 about coding and about data access instead of whiney babies who are being made to go to bed early by the DBAs.

Technorati Tags: ,,

So I know I’ve said this before but it bears repeating because it keeps coming up… devs just don’t get it.  And seriously guys, if you really can’t see why your DBAs make you do the things you do, then you deserve this rant.

You take performance and concurrency pretty seriously in your apps, so why can’t you apply that to your data access as well?  So it’s time to grow up and become real adult IT folk.

I’m just full of it

I have a friend whom I don’t get too see hardly ever and he wrote me the othe day and said that he really enjoys my rants here… and he says I’m only half full of it most of the time.

I like that. I don’t think I’ve ever been described as only half full of it.
So thanks man, you know who you are.

The Speed of Stupidity

One of the biggest problems DBAs face when trying to cleanup an environment is fighting the user base. We’re quite often forced to limit access they’ve grown used to and even to institute policies the limit what they can and can’t do within their code.

Now, here I’m talking about SQL code mainly, but it also stretches to things like deploying new reports and the like.

I call this post the speed of stupidity because most of the problems that need to be cleaned up happen because users get an idea and before they even consider whether it’s a good idea or not, or whether the way they thought of to do it is the way it should be done, or whether somebody’s even already doing it, they bang out the code real quick and push it to the server… where it proceeds to do its particular brand of damage. And this is really the hardest thing to control in any company where people have had full reign to do whatever they want whenever they want. And it’s really hard to explain to them and to demonstrate to them that they’re doing more harm than good. And what’s worse is that they typically have the FULL backing of upper management.

And management is where it gets tricky because quite often it’s the directors and VPs who are pushing their people to produce this code right away. They honestly have lost their ability to reason the logistics of their business. They never even stop to think of performance on the server so it never crosses their mind that there may be a reason to wait. They’re so concerned with the fact that they had what they consider to be a good idea and they’re now tunnel-visioned on that goal. Not only that, but at this point they’ve actually convinced themselves that their business can’t last another day without this code being in place. This is where that reasoning breakdown comes in. Do you honestly mean to tell me that your company has grown and made money and done solid business for 15yrs, but it’s all going to crash down because you don’t get this new report by noon? Do you really think this report is that important? Is it important enough to bring the other reports to a halt?

And that’s at the heart of this post. It takes a while to architect a good report and get the code right and test it and tweak it, but you can be stupid in an instant. This is what DBAs have to fight. We have to find a way to convince upper management that they can push code into production just because it crossed their minds. They have to learn to slow things down and think them through. It’s still ok to give their people assignments to write reports, and other SQL code, but they have to understand that there has to be a process to not only make sure that it’s going to be done well, but also that it hasn’t already been done by someone else.

And I’m telling you, that’s a hard attitude to change. So the next question is, how do you go about changing that attitude? Well, it happens very slowly. You first have to determine the problem. Then you have to determine a fix. Then you have to gather stats from the server. And sometimes depending on the nature of the problem, you could need to gather the data for just a day or 2, or a couple months even.
If it’s SQL code, you can code your fix and run the 2 blocks of code next to each other and log the performance differences. Then you can pull stats on how often that code gets run and show a definite improvement over a block of time. If that code is causing deadlocking, or blocking, or just other general contention you’ll also want to log the amount of time you spend dealing with these issues. This is what can take a month or 2 because you’ll need a large enough sample to be conclusive. Then when you’ve got the performance gains charted out, you can also list the time you spent dealing with the issues and present that to management. It’s really hard to ignore the issue when the numbers are right in front of them. Managers respond really well to hard numbers and if you present them with the hard numbers that prove how much time you spend on issues that could have been avoided by following a process, then they’re much more likely to listen. And there could be some other factors as well. These issues tend to stack up on each other and can effect SLAs and application uptime. So these are other factors that should be presented if they apply.

When you take these numbers to the manager you’ll want to present it in a way that more helpful than offensive. You know he’s the one who’s been allowing this to go on, and he does to. So there’s no need to rub his nose in it. Just present it as a way to solve a problem that’s costing the company money. Look, here’s all the time I’ve spent working on these issues in production that could have been avoided had there been a process to review the code beforehand. A manager would be a fool to ignore this level of proof that things need to change.

Look guys, I know having that new idea gets you excited and you want to see it materialized as soon as possible. But that doesn’t mean it should be. Take a minute and think whether the company will really fold if your code isn’t pushed into prod right away. What’s the real business value to what you want to do? Will it really help you make decisions or help you do something you really need, or is it just nifty to be able to do? Don’t waste time and resources on something that’s just nifty to know. It has to actually provide something useful to your business.

OK, I’m bordering on rambling here but you get the idea. Let’s slow down and start doing things right.

Instead of working, I blog.