The Inquisitive Coder - Davy Brion’s Blog

Thinking outside of the typical .NET box

Archive for the 'Rants' Category


Dealing With Recruiters

Posted by Davy Brion on 18th August 2008

One of the things i dislike the most about being a developer is dealing with recruiters. Even if you’re not listed on any of the job-sites, these people still call you, often in the middle of the workday. I generally feel uncomfortable when you have to deal with a call like that while you’re at work because i don’t want people to think i’m looking for another job (which i’m not). So i keep the sound of my phone off, and i only answer calls from numbers that i have in my contacts or recognize. If i don’t know the number, i divert the call to voicemail (and i don’t really listen to those messages either).

So today i noticed that a certain number tried to call me 4 times. Of course, i don’t pick up. Tonight after work though, i was expecting a call from someone else and i accidentally answered a call from the same number that had tried to call me today. Turns out it was some recruiter.

Him: “Hi I’m So AndSo from DevelopersMeatMarket and i was wondering if you were looking for a new career opportunity”
Me: “Nope, not interested”
Him: “I actually tried calling you a few times today, don’t you even wanna hear me out?”
Me: “Not really… I actually try to avoid recruiters, to be honest”
Him: “Well, you do realize that recruiters are an important part of this business, right? After all, we’re the people who get developers great jobs. Answering those calls is very important for your career.”

owkey… if there’s one thing i dislike more than dealing with recruiters, it’s dealing with recruiters with an attitude.

Me: “Oh really? So tell me, what do you say to your customer when he starts complaining to you that i’m spending too much time dealing with recruiters for my next job?”

At that point he sounds uncomfortable, as if he had no idea how to respond to that.

Me: “Or should i start ignoring other recruiters once i start working for your company?”

Him: “Well, umm… ”

Again, silence.

Me: “Right, i think we can wrap up this conversation… good luck finding somebody”

And then i hung up. When will they learn?

Posted in Off Topic, Rants | 5 Comments »

Positively Negative

Posted by Davy Brion on 12th August 2008

I’ve seen some negative feedback on my last post, either from people telling me how they felt about it in person or through email, and from some people on their blogs or just ‘through the grapevine’. And obviously, everyone is entitled to their own opinion. But if you really had problems with that post, i think that there are 3 possibilities:

  • you might be the kind of developer i was talking about and you don’t realize it
  • you completely missed the point
  • you aren’t looking at the bigger picture

I don’t want people to think that i’m only being negative, so i wanted to clear this up. Now, if you are the kind of developer i was talking about, then i really can’t say any more. If you were offended by it, then this blog is probably the wrong place for you. I’m sure you’ll find something more interesting to read that fits your goals and purposes more closely.

As for missing the point… some people think that I look down on developers that don’t follow the ‘ALT.NET’ principles. I really don’t look down on them. If you go over my post archive, you’ll see that i have quite a few ‘introductory’ posts in there. The whole point of writing posts that introduce concepts to people who don’t know about them yet is to try to teach them something new. Why on earth would i go through the trouble of writing ‘introductory’ posts for people that i suppossedly look down on? If i am confronted with developers that don’t follow these practices i usually think they either don’t need these practices/principles, or that they simply don’t know about them yet. It surely doesn’t mean that i think they are inferior or anything like that. Again, if that’s what you think, you really haven’t been paying attention to most of the things i’ve been writing about in the last couple of months.

And then there are the people who think i’m merely bitching without offering any solutions. I really think they’re not looking at the bigger picture. Do you want a solution to the problem i discussed in my previous post? Here’s one: don’t hire people like that! They are very easy to weed out during interviews so this really can’t be a problem. And if they’re already there: get rid of them! Even if you have to pay them severance pay or whatever, it’ll be cheaper than the mess they’ll leave behind. I currently don’t have to deal with them in my job, and i can’t even begin to describe how much more productive everyone is if you don’t have to deal with all of that. Another thing i can’t figure out is that in some places, bad situations like the ones i mentioned in my post really can’t be talked about. How could you possibly try to change anything for the better if you can’t even talk about the problem? Do you really expect to introduce change without even being open and honest about the problem? That might take years of time, and if you are willing to spend that much time on it just so you wouldn’t have to be honest, then by all means go ahead, but don’t expect any sympathy from me when you’re venting privately. You do have the possibility to introduce change for the better. But if you sit around being quiet and waiting for the problem to go away, then maybe you aren’t the right person to introduce changes for the better?

So i guess what i’m trying to say is that sometimes you have to be honest about the negatives if you want it to evolve to something positive. We all have our own ways to try achieve that and not everyone can deal with that. But no problems ever got fixed by pretending they weren’t there.

Posted in Rants | 4 Comments »

Can’t We Just Stop Living In The Past?

Posted by Davy Brion on 5th August 2008

So we were about to start working on a new project at work, and everything was looking good. We were planning on using NHibernate for our data access, but today the client asked us to implement a “standard” data access layer with stored procedures.

Much like a Vietnam veteran who’s suddenly reminded of his traumatic experiences in the war, i too was speechless. Not only that, i was shocked. Chills going down my spine. Didn’t all those anti-war protests teach us anything? Why must we revert to all this useless violence? How many innocent developers must suffer needlessly due to these delusions? Why are the wrong people once again making the decisions?

I seriously don’t get it… i’ve been trying to comprehend this for a few hours now, and i just can’t. Now sure, i could just “let it go”, do my job and not worry about it. Then again, if i were someone like that, i probably wouldn’t have a technical blog and you probably wouldn’t be reading my posts anyway. See, i’m pretty passionate about software development, more specifically, about trying to do it in a good way. And when i’m subjected to ignorant constraints like these, i shiver. I tremble. I get pissed. I vent.

Still, in this case, there’s really nothing else we can do for various reasons i won’t get into here. A “standard” data access layer with stored procedures is what they want, so that is what they will get. It’s their money, after all. But still, what a stunning display of ignorance and shortsightedness. It’s 2008. This myth that stored procedures are the most secure and best performing way of designing your data access layer really needs to be put to rest. I sincerely doubt that any of the much-touted benefits of going with a stored-procedure data layer is actually still relevant in this day and age. Not to mention the fact that it is simply a waste of money. There are much more cost-effective ways of developing software these days and they really don’t necessarily mean you’ll end up with inefficient data access. Perhaps some day, we will no longer be confronted with delusional constraints that are only based on sheer ignorance. I for one, can’t wait. This might actually be one of the few good things about Microsoft’s upcoming Entity Framework. Perhaps even the IT dinosaurs will start to realize that maybe ORM isn’t all that evil or difficult.

Posted in Rants, Software Development | 19 Comments »

The perfect workplace

Posted by Davy Brion on 24th April 2008

The perfect workplace for me is a place where:

  • People have the required skills and motivation to perform their jobs competently
  • People are honest about mistakes they make… after all, we all make them so we might as well all be honest about them
  • People who play the political game are fired, or if possible, not hired
  • People aren’t offended when told that something they did was not good or could be better
  • People who are sick just stay home instead of infecting others
  • It is accepted that developers spend a little of their worktime to read blogs, mailinglists, etc… to learn
  • People are judged on what they do, not how busy they look
  • People who work together on something are located in the same room
  • People have enough common sense to go to a meeting room or a more secluded area to discuss something that is specific to their project, so they won’t bother everyone else in the room. If that’s not possible, a little bit of voice control would be nice
  • People don’t engage in Buzzword Driven Development ( = claiming to do certain practices or activities while in reality hardly doing them or doing a half-assed job of them)
  • Managers trust the developers
  • Managers don’t make promises they know they can’t keep
  • Managers prefer a long-term vision instead of going for the quick short-term win while completely ignoring the negative consequences that will pop up after they have been reassigned
  • They have proper airconditioning
  • You have access to cheap (or free) drinks and snacks of a wide variety

Unfortunately I was sentenced to Enterprise Hell about 5.5 years ago so I’m not used to most of the stuff mentioned in the list… luckily i’m up for parole in about 2 months!

Posted in Off Topic, Rants | 4 Comments »

why oh why does visual studio create multiple .vsmdi files?

Posted by Davy Brion on 20th March 2008

I’m forced to use MSTest at work… i had to use it at a previous client, hated it then and i still hate it now (even though the 2008 version is a lot faster than the 2005 version).

One of the things that bugs me the most is the .vsmdi file it creates, or better yet, the fact that it keeps creating vsmdi files even though i already have one! I’m sure anyone who’s ever worked with MSTest has experienced this issue.

I’d be very grateful to hear answers to the following questions:

1) Why can’t it simply use the already existing .vsmdi file?
2) Why oh why has this problem been there ever since the 2005 version was released?
3) Why can’t they fix this? i can’t imagine this being a hard bug to fix… and i definitely can’t imagine needing more than 3 years to fix this
4) Is there anyone within Microsoft who’s actually used this crap?
5) Why should i use MSTest over the NUnit/TestDriven.NET combo? Obviously, Microsoft can’t even get the integration with its own product right.

Oh and before you ask, you can even get this problem without using source control or read-only files, so please don’t suggest that might be the reason :)

Posted in Rants | No Comments »

Tech Blogs: The good, the bad and the ugly

Posted by Davy Brion on 21st December 2007

A coworker of mine just started blogging and in his first post he said something that made me think:

And I must admit, the thought of showing of my knowledge to the world through the same means - a blog - has crossed my mind more than once.

And that probably captures the motivation behind the majority of all tech related blogs: showing off our knowledge. Showing people how smart and great we all are. Who doesn’t like to come off smart to his/her peers? Of course, most of us will tell you that we’re only interested in sharing or spreading knowledge. And there’s definitely a lot of truth to that. But don’t let us fool you… it surely isn’t the only reason we’re blogging about our technical adventures. The other reason is simply Intellectual Vanity. We think we have interesting stuff to say, or interesting content to share, so we do it. And we hope people like it and learn from it. And i’ll bet most of us hope people will think we’re good at what we do because of it. It makes us feel good when people say “i liked that stuff you wrote on subject X” or “those examples really helped me out, thx!”.

To me, there’s nothing wrong with that. A lot of great stuff is being produced and shared because of this and a lot of people are learning from it. That’s always a good thing. Some people take it too far though. There are some tech bloggers that don’t really produce anything meaningful or original. Some of them are just recycling material from other bloggers or are just rephrasing press announcements from large software vendors they have an affinity for. Some of them are just praising whatever new technology comes out without actually giving it a critical look. Don’t get me wrong, we don’t need to critize everything new that comes out but we should be honest about those new technologies. So why do these people even have a blog? Probably the same Intellectual Vanity that drives the good blogs and the meaningful content. Some people are only doing it for the name recognition i suppose…

A certain developer who used to work on a large project where i worked is a good example of this. He was pretty much worthless as a developer, yet from reading his blog you could get the impression that he’s an expert at what he does. Yes, he’s involved in the ‘community’ and is no doubt working hard on his career. He easily impresses people with simple demos of new technology and is making a good name for himself with the kind of people who are easily impressed by fancy ‘hello world’ applications. But he has about a snowball’s chance in hell to become a productive member of a real development team in ‘real-life’ projects. These are the kind of people who really shouldn’t be blogging about technical stuff.

So what kind of blog posts do i like? The ones that are original. The ones that take a complex or relatively unknown subject and make it clear to those of us who didn’t know about said subject before. The ones that provide workarounds for obscure bugs we eventually all run into. The ones that offer good advice on how to solve problems we all face. The ones that discuss what doesn’t work. The ones that discuss what does work. The ones that show us how to do something. I could go on for a while but i think it’s best to summarize it as follows: the ones that provide valuable information for us to learn. There are a lot of great tech blogs out there that are filled with this stuff. I often have a hard time just to keep up with all the great stuff that gets posted.

So you’re probably wondering why i’m posting this. After all, it doesn’t really fit into any of the categories i just mentioned. Well except that technically it is ‘original’ since i just wrote this stuff… Anyways, these are just some thoughts about tech blogs that i wanted to share. Maybe some people feel the same way about it :)

Posted in Off Topic, Rants | 5 Comments »

Why you should write tests before code

Posted by Davy Brion on 24th June 2007

It’s often hard to convince developers to write tests before writing the actual code. At least one of my readers (Hi Stefan! ;)) knows all too well how hard it was to convince me. I didn’t really believe it would be that beneficial to our projects. I could not have been more wrong. These days, i’m very much convinced that writing tests before writing code offers many advantages. Not only does it improve the code, it increases the chance of a successful project and can make developers better than they already are. Nevertheless, there are still lots of highly skilled developers that don’t do it.

So this is my list of reasons (in no specific order) why you should be writing your tests first:

  • It leads to developer-friendly API’s. When you write the test, you’re already the first user of your class. You’ll automatically define an intuitive API simply because you’re forced to think about it before you do anything else. This is one of the most underrated benefits IMHO.
  • If you do it right, there will be no unnecessary code. We’ve all been there… you’re implementing a feature and suddenly you think of something else you also need to write. A lot of times, that something else you write turns out to be unnecessary. And code that shouldn’t be there is a shame. The best quote i ever read about code was something like “code is not finished when there’s nothing left to add, it’s finished when there’s nothing left to remove”. I don’t remember who originated it, but it’s oh so true. This unnecessary code is just a waste of time. That code wasted time while it was being written, and it will continue to waste time everytime it is read. Think about that. How often have you spent time trying to figure out code and you weren’t really sure if it was actually being used? If you write your tests, and then only write the code to make the tests pass you should be able to avoid unnecessary code. It’s not always easy and it’s a matter of discipline but it’s really a goal you should be striving for.
  • It leads to better code. Code that is easily testable is usually flexible code. Flexible code is easier to change and improve. And the tests back you up while improving the code to make sure you didn’t introduce errors.
  • It increases the skills of your developers. In more than one way actually. When developers write code, they make mistakes. Every last one of them. The sooner you learn about the mistake, the higher the odds that you’ll avoid the mistake next time around. Some bugs aren’t discovered until the system is already in production. Often, the developer that made the mistake is not around anymore. How is he gonna learn from the mistake then? He won’t. If he has a test that will inform him of his mistake immediately after writing the code, he will have learned something. Just to be clear: i’m not saying that writing tests first will eliminate all bugs. It won’t. But it should severely reduce them. Another area where the developers will improve is design. The more tests they write, the more they will learn about creating code that is easy to test. And if it’s easy to test, it’s easy to change thus indicating good design.
  • A code base that is the result of test-first development is a code base that can be modified in a safe way. It allows developers to confidently make changes to code. We’ve all been in the situation where you need to fix a bug, but you’re affraid of changing the code because it’s very likely that you’ll introduce new bugs. If you have an extensive suite of tests, you should immediately know if you’ve introduced new bugs. This allows you to confidently make the change you think is the best one. Make the change, run the tests and if everything remains green, perfect! If it turns red, great! You’ll know it was the wrong fix before your customers, your manager and your boss knows about it.
  • Writing tests first allow you to significantly reduce defects. You’ll never write bug-free software. It’s very important that you realize that. But you should at least try to minimize the amount of defects in the software you develop. If you write your tests first, you’ll not only get instant feedback on newly written code, but you’ll also be better protected against regressions in the existing code.

This list is far from complete… these are just the benefits that i can think of at the top of my head.

I’m probably preaching to the converted already, but at least now I can simply direct the uncoverted to this post instead of repeating the same thing over and over again :)

Posted in Rants, Software Development, Test Driven Development | No Comments »

Programming Languages Don’t Matter

Posted by Davy Brion on 17th June 2007

Note: this was originally written on August 28, 2006

Programming languages have been the topic of endless discussions for years now, and a lot of people take these things very seriously. Well, a lot of developers take these things very seriously. Normal people don’t care, and boy are they right. Some developers will stick with a certain language purely for syntactical reasons. And some will dislike a language because of its syntax even though the language itself might be extremely powerful. Other developers prefer languages which mainly provide improved productivity, even though the syntax might not be as elegant or even cool. And let’s not forget the developers who choose a language based solely on how many jobs are available for that language.

I’ve only been working as a software developer for 4 years, but i’ve been writing code for the last 10 years. During those years i’ve written code in C, C++, Visual Basic, C# and Java. I’ve played around with other languages as well, but not enough to actually count them among the languages i’ve done anything more than trivial stuff in. One of the most important things i’ve learned is that the language simply doesn’t matter. A language can make some things easy, and some things hard. But in the end, the language is just a tool to help you write your code. The way you design and write your code should be done independently of the language you use.

I’ve always said that coding is like talking. Once you’ve learned to talk, you can learn any language to express your thoughts and feelings. It’s the same thing with coding. At least, it should be. Once you’ve learned to code, you should be able to write code in any language they throw at you. It’s just a matter of learning the syntax. The tricky part is that some languages will try to push you into certain directions that may or may not be the right path for you to take. Visual Basic is a prime example of this. Visual Basic tries to persuade you to take certain shortcuts. Shortcuts that lead to sloppy, ugly and even unmaintainable code. But it will be easy to write. At least, that’s what they (and i’m pointing at Microsoft here) want you to think. In reality this easy code will be your worst nightmare once you have to maintain the code over a long period of time. But does that mean that Visual Basic is an inferiour language? A language so bad it’s impossible to write good code in? No. A good developer will write good code in Visual Basic. Because a good developer knows how to write code ‘into’ a language, instead of ‘in’ a language.

Programming into your language, instead of in it is a concept that is explained in the classic software development book Code Complete by Steve McConnell. It basically means that as a developer, you should think of what you need to do, and how you want to do it, and then assess how to do that in the language you are using. If that’s how you approach writing code, you are programming into your language. But most developers let their language and environment dictate the way they write their code. These developers are programming in their language. And they’re gonna have a hard time when they’re forced to move to a new language. Do yourself a favor and stay away from these developers. If you’re hiring people, skip these developers. They may even be highly proficient in their current language but if they can’t think about code outside of their language, they will be a burden on your team once you switch languages in your company.

Knowing the ins and outs of your programming language is very helpful, but i’d never judge a developer based on his/her knowledge of obscure language features. There’s a reason why these things are obscure. Instead, focus on concepts, good programming practices and depending on the ambition of the developer, design patterns. These are the things that make a difference between a good developer, and a not so good developer.

Posted in Rants | No Comments »

My advice to Microsoft

Posted by Davy Brion on 17th June 2007

Note: this was originally written on September 17, 2006

I have never been a fan of Microsoft. In fact, i dislike a lot of their actions and a lot of their products. In the IT world a lot of people feel this way, and that number seems to be increasing every year. When was the last time you were truelly impressed by a Microsoft product? And how long did it take before you got annoyed at the various quirks and bugs that were still present in the final version? When was the last time you saw a feature in a Microsoft product that you’d never seen before in another product? Where is the innovation? Where is the quality?

Over the last couple of years, i’ve seen a lot of bad signs coming from Redmond and i can’t help but feel that Microsoft is getting worse all the time. I’m not management material, but i do believe the following items could set Microsoft back on track:

It’s Time To Retire Windows!

Spyware, worms, trojans, viruses… The Windows world seems to be infested with them. And it doesn’t look like Microsoft is capable of stopping all of these threats. Sure there are plenty of tools available to protect you, but no tool handles all of these threats in a decent manner so you’ll need to run a few of these tools if you wanna be reasonably safe. And for what exactly? Because Windows is so badly designed that it can’t be secured properly? Oh but that will all change with Windows Vista. I’m sure it will. After all, that’s what they said about Windows XP…

If there’s anything to be learned from the endless delays and cancelled features of Windows Vista, it’s that the quality of the Windows codebase is so low that one might wonder how much life it has left in it. If you’re a software developer, you know that a codebase can become so bad that it’s better to just start over instead of trying to hang on with the existing code. If you have to keep working with a low quality codebase, it becomes much harder to add new features and fix bugs. Great developers cringe at the thought of working with such code. Now look at Windows Vista. How many of the most interesting features have been cancelled or postponed to future Windows versions? How long has the project been overdue by now? How many of Microsoft’s top developers jumped ship to Google and Apple in the last 2 years? These are all signs that maybe Microsoft should start over with a new operating system.

Here’s what i would do if i had the resources Microsoft had: Try to release a somewhat decent version of Vista. This will buy you about 2 to 3 years time before your customers demand that you keep up with the features that Apple is continiously adding to their operating system. But once Vista is out the door, gather all the top talent at Redmond and start working on a brand new system. And why not learn from the lessons that Apple has learned with OS X? Base your new operating system on FreeBSD. This would provide Microsoft with a lot of stable and secure code already and the FreeBSD license permits Microsoft to add their own proprietary layers on top of it. Alright, we’ve already got the base system covered. Now, Microsoft already has parts of .NET running on FreeBSD through their Rotor project. If they port the entire .NET framework to FreeBSD, they have a great foundation to build their new system on. Build the entire upper layers of the system in .NET. No more C or C++ in anything but the inherited FreeBSD code. You’re always telling developers to use managed code to reduce security risks so it’s about time you start following your own advice. And yes, the managed code will be slower. But the required hardware can’t possibly be worse than what is required to run Vista properly.

The most important part of this entire project would be to completely ignore backwards compatability and previous Windows technology. Backwards compatability can be provided by Virtual PC (owned by Microsoft) anyway, similar to how OS X provided backwards compatability with OS 9 through their Classic environment that came for free with OS X. The goal would be to completely design and build this system for the future, not for the past. Forget the past. The past is Windows and look how that turned out. In case you haven’t noticed, this is very similar to how Apple designed and built OS X. Yes OS X, the operating system that is releasing a new version every year with loads of new features and improvements each time. It sure would be great for Microsoft if they had an operating system that they could improve rapidly and release frequently. And Windows isn’t it.

Don’t fight too many wars at once

Do you use Google to search the web? Do you use an iPod? Do you have a Playstation? Do you buy music through iTunes? Not anymore if Microsoft had anything to say about it. Microsoft seems to be obsessed with dominating every possible market in the IT world, and now even the entertainment industry. They have the Xbox to compete with the PS2 but the Xbox division to this day has only once had a profitable quarter (thanks to the Halo 2 release). They’ve been losing money on it for years now. If i were a Microsoft shareholder, i’d be pissed because all of the money could’ve gone into Research and Development to make their core products (you know, the ones that are actually profitable) better.

The same could be said about MSN Search, the Zune (their upcoming iPod ‘killer’), their unnamed online music store that will accompany the Zune and their whole Live initiative. Microsoft is pouring enormous amounts of money in these products but how long will it take before they actually become profitable? That is if they ever succeed. Why not spend that money on your core products so you can maintain your lead in those markets? And what about the enemies that you are creating? A lot of companies have been burned by Microsoft and most of them can’t react on their own. But sooner or later, some of the larger ones will band together and gang up on Microsoft. Will Microsoft be able to fight back? The old Microsoft could have. The current Microsoft? I wouldn’t bet on it.

Now, i realize that if a company wants to grow, it needs to look for new markets if there is no more possible growth in its current markets. And Microsoft can’t possibly grow any more in the operating system market. So it’s perfectly normal that it’s looking for other markets. But right now they’re fighting wars on too many fronts. They are attacking Google. They are attacking Apple. They are attacking Yahoo. They are attacking the entire Linux community. And which of these wars are they actually winning? Maybe they should try one at a time instead of all at once.

Be a leader, not a follower

I can think of 2 features that i had never seen in a competing product until Microsoft offered them in their products. One is Xbox Live which i really think is a great idea. The other is the wireless sharing capabilities in the new Zune device. Too bad they DRM’d the hell out of that. Anyway, the sad thing is that these are the only 2 original Microsoft features of the last few years i can think of. Meanwhile, Apple and Google seem to be coming up with brand new, original ideas all the time. And Microsoft just copies them. Poorly, i might add. Now, which one of these 3 companies should be able to invest the most in Research & Development? For all its money, Microsoft doesn’t really seem to be leading the field here when it comes to innovation. Why not? Where is all the money going? What are your 60,000+ employees doing?

I’m not sure what all these Microsoft employees are doing (does Microsoft even know?), but i do wonder what would be possible if just 1% of these employees would do nothing but think about new features and new products. Think about it. Around 600 people. Thinking. Creating. Experimenting. Surely it couldn’t be worse than what is being produced right now is it? Foster creativity among the employees. Come up with good ideas. Release quality products. Regain some of the mindshare you’ve lost among us geeks over the years. Make more money. If Apple and Google can do it, why can’t you?

Posted in Rants | No Comments »