Archives

Archives / 2004 / February
  • Paying money to development/QA team for finding bugs ;-)

    The title of one of the previous posts reminded me that I did relatively unusual thing during the last milestone - starting from specific date in milestone, I offered $1 for every bug people can find in the product I’m working on (Telephony Application Services). The success criterion was that bug will get accepted and fixed by the end of the milestone.

  • What is BVT (Basic/Build Verification Test)? (Part III)

    Grand final. If I would have to summarize everything I have to say in one sentence, it’ll be: paranoia is a virtue. Yes, repeat after me: paranoia is a virtue ;-) So, here’s our problem – how to write code what is responsible for verifying the correctness of some other piece of code? I don’t have a good answer for this, if I would, I’ll be currently retired and living from profits of “GK's patented technique for developing high-quality software“, spending my days reading good literature, writing some cool code, working on PhD, raising kids, and going to gym in the evenings ;-) Or maybe not, I'm too much of a workaholic anyway. Some people say that the only possible way to go is formal methods and languages like Z. Unfortunately I’ve never met anyone (possibly I just socialize with wrong people ;-)) who has successfully done anything with formal methods outside the academic circles. The cost is too high and there aren’t many knowledgeable people around either. Anyhow, here are a couple of pragmatic things we’ve learned during last couple of years in our group:

  • Using "Bug of the Month" column to determine somebody's C/C++ skills

    Those of us who read regularly either "Dr. Dobb’s Journal" or "C/C++ Users Journal" definitely have noticed the "Bug of the Month" column where various bugs are given for curious reader to track down. After remembering Eric Lippert’s article "Six out of ten ain't bad" I had this strange idea - what about picking 10 (or any other number) random problems from "Bug of the Month" column and using this as some kind of indicator to determine the C/C++ skills of the person being interviewed? Will it give better/broader/more random coverage than EveryonesFavouriteSetOfC/C++Questions? It’s definitely a good self-assessment tool ;-) Please note that I'm talking about specific technical skills only, not general qualities as intellectual horsepower, problem-solving skills, creativity etc. My main rational is based on a idea that one should be able to prove that his/her knowledge is practical, applicable, and can be used to solve real life problems. Fred Brooks once said: "A scientist builds in order to learn; an engineer learns in order to build."

  • Directing ATL/CRT assertions to file or debug output

    In real life the test organization is running overnight simulations, performance tests or stress tests on your codebase. In some cases it’s done with debug build which means that the assertions in your code will be enabled. Quite often somebody will start the test run at 08:00 PM, return next morning, and discover that after 30 minutes of execution this nice message-box saying that an assertion failed suddenly appeared ;-( As a net result your entire run is blocked and no actionable metrics is gathered. Sure, you need to investigate every assertion and understand what’s wrong, but sometimes you may not care. People assert all kind of different things and some invariants, pre- and post-conditions may not be relevant to what you’re trying to accomplish. To paraphrase Orwell: all assertions are equal but some assertions are more equal than others.

  • What is BVT (Basic/Build Verification Test)? (Part II)

    In my previous post about testing I covered the basic definition of the BVT. Now let’s talk about how to make the entire process to work in real life with real people and taking into the account different agendas everyone is having. Initially we practically used the Oracle (this is politer way of saying that semi random decisions were made ;-)) to pick some set of tests which “looked like BVT-s” and mark them in our internal test case management system as BVT-s. What happens eventually is that somebody will write a piece of code which will break one of these test cases and then you’ll reach the situation when you’re forced to justify why this test case is very important and product code must be fixed ASAP.

  • North America Wadokai Summer camp

    I'm going to Hilo, Hawaii this July. Wrong, not for the vacation, but for sweat, blood, and tears ;-) The North America Wadokai Summer camp has been officially set for July 18th thru the 24th. This event is sponsored by Wado Guseikai USA and the Canadian Zenkuren Wadokai Association and hosted by the Hawaiian Wadokai. Invitation is being extended to any Wado practitioner on this planet. The following people will be teaching:

  • What is BVT (Basic/Build Verification Test)? (Part I)

    During upcoming weeks I'm planning to compose a series of posts which will describe (a) what are the BVT-s; (b) how different disciplines (development, program management, and test) are coming up with the BVT-s and achieving consensus; (c) how BVT-s are executed, results are interpreted, and what is an impact of BVT failure(s); (d) what are the characteristics of a good BVT. A reader should take a note that I’m not prophesizing the absolute truth and I’ll be talking about the way we’re doing things in Microsoft Speech Server team. Your mileage may vary. Different teams have different practices across the Microsoft and even outside the Microsoft you should not try to adjust some specific methodology/process to your needs and blindly follow the process. Following blindly the process reminds me one software design project about 5 years ago back in Estonia when we’re doing high-level software design using OMT and trying to squeeze out just three more state diagrams for the sake of having state diagrams in the final design document ;-) You don’t have to make this mistake.

  • How to cut your couch into pieces? (Part I)

    I have to start from the year 2000 which is when I joined Microsoft and my friend Targo proposed that we all, me and his family, rent a house together. So, we rented a house until July of 2002. Targo’s family was planning for a second child and we decided to split (that’s why I only know how to deal with kids who’re less than two years old ;-)). During the move we divided the furniture and I inherited an old couch (which we’ve got from somebody else who got it from some other person etc. etc.) Two weeks ago I had a problem: I buy lots of books due to my addiction to reading, books need to be stored somewhere, therefore I need book-shelves, unfortunately I had run out of the room in my apartment for book-shelves.

  • My programming mistakes: const BSTR

    One evening I was reading through the Eric Lippert’s blog, noticed that his guide for using BSTR-s is published, and suddenly remembered one programming mistake I made about 3 years ago. I was just hired to Microsoft and writing my first piece of C++ code which had to do some stuff and use MSXML API-s while doing it. The only thing I knew about ATL and COM was what I’ve read in articles before and code samples I’ve inspected in diagonal. Anyway, I ended up writing the following variable declaration:

  • Yes, you can just delete the pointer

    One must write good code. One must write perfect code. One must write as efficient code as possible. One thing which amazes me is that there are number of people out there in C++ world who're still checking for pointer being NULL (0) before deleting it. Here's the pseudo-code:

  • Who is GK?

    I've been with Microsoft Speech Technologies for almost 3.5 years. Most of my time has been spent working on Microsoft Speech Server (new and proud member of Microsoft server products community.  My place of birth is small country called Estonia. You can check the CIA - The World Factbook for more information. There are actually very few people from Estonia working at Redmond. Most of us are proud graduates of University of Tartu (Institute of Computer Science). If you ever want to visit this country then I'll be happy to give you some guidance ;-)