Sunday, 29 November 2009

Unit Testing Singletons

Much have been said about the singleton pattern, a short visit to Google shows that its mainly about why not to use them. However, for some reason, in all projects I have seen up to date I found quite a few usages of this patten. In fact in most places, this pattern is over used extensible. I'm guessing this is mainly due to the ease of implementation, and the fact that in most systems one can find several classes which are only instantiated once. (i.e. we only need a single instance in the system) This post is NOT about whether singleton are good or bad, for me that's not an interesting question. In realizing that most people use them, my goal in this post is just to show some useful tips on how to actually handle them during tests . But first lets look at a common implementation of the...

Sunday, 15 November 2009

Is Typemock Isolator Evil - Round N+1

Every few months the argument for and against the advance abilities of the Isolator mocking framework burst again. This time it started with this post: Test driven design – Willed vs. Forced Designs Disclaimer: I used to work for Typemock company and was in charge for a long time over the development of the framework. so I claim no kind of objectivity . the argument for and against usually circle around the following: on one side, people claim that Isolator "breaks" the language barriers and, by allowing any kind of design to be implemented will end up in helping to build a poorly designed system. on the other side, by allowing the freedom to design at will Isolator shift the responsibility back to the developer allowing him to choose the "best" design as he sees fit. here are some...

Thursday, 29 October 2009

Gathering worthwhile feedback

Tobias Mayer has got me (and I guess several other) thinking about the common feedback process used by trainers. While I think that there's much to learn from the general purpose form handed out at the end of a training, clearly doing it only at the end of a training session means you cant use it for improving during a lengthy course. Therefore I use two different techniques for gathering feedback during a course Course Retrospect this is actually quite simple and effective technique, towards the end of the second day. usually after I cover the sprint retrospect meeting. I conduct a short "retrospect" meeting with the aim of improving the actual course. My current favorite way is borrowed from Alistair Cockburn and we try to list out (together in an open discussion) the things which are:...

What have we learnt today (last day)

At the end of the last day of the course I've asked two different questions: What will be the easiest thing to implement at your company? What is probably the hardest thing to implement at your company? Here are the answers I've got (as is): The easiest thing Pair Programming usage of Task Board (General purpose) Stand up meetings Creation of product backlog Agile estimation Techniques using Pair Programming to help bring a new team member up to speed The Hardest thing Automated unit tests/TDD Division into Sprints (especially short sprints) Locating people for scrum roles and creating a self contained team XP Building a true self contained team. Pair Programming Again almost no overlap of the answers (other then a few saying TDD /AUT is...

Tuesday, 27 October 2009

What have we learnt today/ (day 2)

On the second day I’ve added two more questions to the list: What will be the be the most valuable thing to you? What is the most useless thing you have heard so far? Here are the answers I've got (again not edited): The Most Surprising A typical programmer manages 4-5 hours of ideal work per day. The actual Scrum Master role in a Scrum process. No hard delivery target (just an estimation), we commit Priority Poker. using Agile has brought companies to a defect rate of 1 per quarter. that sprints can be 1 week long including planning. that people can be involved/do tasks which are not in their main expertise area. (a QA helping a developer to estimate). The most controversial the SM doesn’t need to be a team leader. The option for terminating...

Is Scrum good for me?

The second question i get form most people (after "Does it actually work?") is does the Scrum process good for me? Mike Cohn has showed a great technique for evaluation which of the processes out there is most suitable for your project. you can find the details he...

Sunday, 25 October 2009

What have we learnt today?

I've started today another round of the Practical Scrum Course. At the end of the first day I search for some feedback in the form of two questions I ask: 1) What was the most surprising thing you have heard today? 2) What is the most controversial thing you have heard today? here are the answers I've got (not edited): The Most Surprising No true need for comprehensive documentation. Estimations are done in units which does not represent time. "Done" should be defined, sounds trivial but when one think of it ... Agile can works for large groups. Waterfall was presented as an example for a flawed process. Scrum can be an appropriate process for most projects (90%) Agile and Scrum, are established and well defined methodologies. No Clear definition of who is the...

Sunday, 18 October 2009

More Information about C.R.A.P

More details about the usage of C.R.A.P and what C.R.A.P is all about can be found in the following links: Metrics of Moment Clean Code and Battle Scarred Architecture Alberto Savoia talks shop about C.R.A.P....

Crap4Net

Measuring code quality is a tricky business at best. More then a few attempts has been made over the years however still a single solution has yet to emerge. The C.R.A.P metric has been born a few years ago and tries to combine code complexity along with Code coverage to indicate (to some extent) the quality of a given piece of code. There’s much more to say about the C.R.A.P metric which ill leave for the experts . I will say however that more information can be gathered in the Crap4J website. Over the last weeks I have been working on creating the Crap$Net project. The Idea is to bring the C.R.a.P metric into the world of .NET development by supporting the various tools used in this world. I am happy to say I managed to wrap this effort into an open source project which was published...

Tuesday, 13 October 2009

Iteration Zero – using Testify

One approach when starting out a new project is to dedicate the first sprint/iteration in order to build in the framework for the development process. that is building in all the stuff which will be required during the time life of the product. things life setting up the build server, preparing the installer establishing the framework for unit and acceptance testing. in short all the technical details an agile development environment expect to just be there. Today I managed to go into Mike Scott session in which he demonstrated his very nice tool called “Testify”. I don't want to go into all the details since it appears that just today Mike has finished to ‘open source’ the tool. (can be found here). I would however say that during the short time in the session (about an hour), Mike has...

Monday, 12 October 2009

Agile Testing Days - ATDD

I went to Berlin for the Agile Testing Days Conference. I’ve join Elisabteth Hendrikson tutorial about ATDD, while is full day tutorial about the basic concepts and technique of doing ATDD. fro me this is a great opportunity to augment my knowledge about best practices tools and idea of how to improve my ATDD skills. In the first part what really stood out for me is the time we spent about the various silos existing in a typical development environment. Specifically what i liked best is the emphasis Elisabeth puts about the need to break up those silos focusing on only establishing a clear separation between the role of deciding the “What” and the role of building the “How”. she quoted Tobias Mayer which defines in this post these roles as “The What voice” and “The How Tribe”...

Thursday, 17 September 2009

Integration Tests are not enough - Revisited

A while ago I wrote that Integration Tests are not enough (Part I). i Think that J. B. Rainsberger does the subject much more justice then in his latest session (Agile 2009) titled: integration tests are a scam. During his talk he also mentioned, as a side note, that what takes time and experience to master when doing TDD is the ability to "listen" to your tests and understand what they are telling you. I couldn't agree more, I wonder how we can help speed up this process. Any though...

Friday, 11 September 2009

YAGNI - It all Connects

Everything in software connects. Here a common thread that connects the following agile? principles: YAGNI - You Aint Gonna Need It. YAGNI is referred to the fact that most time in software development its useless to try and think ahead since most of the time we just don't really know if we are going to need this or not. as Ron Jeffries puts it: "Always implement things when you actually need them, never when you just foresee that you need them." KISS - Keep It Simple (Stupid) Which is the same as saying do "The simplest thing that could possibly work" we use this phrase when we want to emphasize that simplicity in software has usually much more value than we initially think. There is no one perfect design I'm not sure this has...

Sunday, 6 September 2009

Practical Scrum Course

At the end of the first day in my Practical Scrum course I've asked 2 questions at the end of the day: 1) What was the most surprising thing you have heard today? 2) What is the most controversial thing you have heard today? here's what I've got: The most surprising 1) That even for the simplest "project" it takes 2-3 tries to reach a good way of doing things. (In response to an exercise we conducted) 2) That the waterfall methodology is an example of a flawed model. (taken from wikipedia: Royce was presenting this model as an example of a flawed, non-working model (Royce 1970).) 3) That so far the Scrum process is not that far from what we are actually doing. 4) That plans don't have to be too detailed, and paperwork may actually be less important then we think. The most controversial...

Agile Testing Days

Ill be going to the Agile Testing Days conference in October and will be giving a session on "Quality and Short Release Cycle". It's my first time speaking at such a big conference along leading figures in our industry so I'm very excited and quite nervous. on a similar note the latest issue of "Testing experience" journal has been released and includes an article of mine (page 16). The issue is all about Agile Testing, includes some very interesting articles and can be downloaded here. Let me know what you thi...

Thursday, 3 September 2009

Branching is evil

Almost a year ago I blogged about "Source Branches". Over the past year this somewhat have become an ongoing discussion I had repeated a few times with. In fact believe that post was my most commented one ever. Today Martin Fowler has posted about the differences between Simple Feature Branch - each feature is developed on its own branch and merged when finished. Continuing Integration (CI) - no branching Promiscuous Integration (PI)- same as feature branching with the twist that each feature directly merges with other features that might affect it. he also explained the risks and benefits of each approach, and I really liked that post What I would add to that post is the human aspects that each approach brings. Feature Branch - The easy way out In my eyes feature branching...

Running all tests in solution using MSTest

There aren't many times I truly have something bad to say about MS. Its not that I'm a great fun, but I admit that in most cases they do get the job done (it just takes a couple of tries though). However, there is one thing that always tick me when working with MS products and that their ability to create product which doesn't work well with anything else besides other MS products. Normally I'm not into conspiracies and would of written it off as simple mistakes, but I'm guessing I just have to much respect for MS developers. And the thing is that this always happen at the really annoying small things when you least expect it, but when encountered really make you go *#*#*!*!$*!*#!. and the story goes like this: At one of my clients I'm helping setup the build server to run all the unit...

Sunday, 26 July 2009

Scaling the PO team

Second session was planned to be another session with Alistair Cockburn however, he choose to ignore the official session title and instead he conducted an interactive activity demonstrating the power of iterative development and effectiveness of an adaptive process. after that Ive joined a session focusing on the role of the PO in a scrum process and how to scale this position without damaging the entire process. The role of the PO in a scrum team is to represent the client. the PO is responsible of maximizing the ROI, i.e. he’s the one responsible for generating $$$. Specifically the PO is in charge of grooming the product backlog, which includes among other, writing user stories, prioritizing them and keeping track on what is getting build. The important thing to remember is that this...

Thursday, 16 July 2009

ScrumBan

After Alistair lecture the convention divided into 4 different tracks, I chose to attend the session titled as ScrumBan given By Yuval Yeret (a Coach in Agile sparks). In this talk Yuval introduced some of the ideas behind Kanban and how they fit inside a Scrum Process. So what is Kanban I not going to explain too much here info on that can be found here and here. I would just say that Kanban is what guided toyota when designing its lean manufacturing line and it very much resemble a Scrum process with two major differences: its more flow based and less iteratice kind of process. being a flow based process the amount of work In Progress allowed (WIP)is limited. When to use Kanban Kanban should be used in situations when one...

Opening talk – Alistair Cockburn

The opening talk title was “Effective software development in the 21st century”. As promised by the title this session was packed with so many great insights, advices and ideas for me to be able to repeat them all. But some stuff did stick and I thought i should share. Agile has grown beyond small organizations Yes, this simple fact still comes as a surprise for people outside agile circles. However one must remember that originally Agile methodologies (mainly XP and Scrum) were created for such teams. A fact that some Agilists tend to forget. What is important that current methodologies, as used today, have grown, changed and adopted to all kind of projects and they are still growing. For example the trend in which more engineering practices are picked by organization doing Scrum might...

Wednesday, 15 July 2009

Second Israeli Scrum Gathering

Well the second gathering has ended and it was great. while the amount of people coming this time seemed to be a little less than the first time (I estimate there were about 150-200). Content wise this day was way better. I think that this time most of the sessions were aimed for a more advanced audience, assuming at least basic knowledge of what is scrum and Agile. Another improvement was that this time the keynote speaker was physically present. While it was nice hearing Ken Schwaber through a live feed, it didn’t have the same effect as having Alistair Cockburn in the same room. And hearing what Alistair has to say is fascinating (more on that will follow). Like last time, the day was opened by a lecture given by the key note speaker followed by breaking up into 3 tracks lasting until...

Tuesday, 14 July 2009

Off to Second Israel Scrum Gathering

The second Israeli Scrum User Group gathering is happening today. Last time was really good and I expect this time to be even better. the Key Note speaker of the Day is Dr. Alistair Cockburn and the rest of agenda also looks promising even more. so if don't have any special plan I'm sure its not too late to co...

Tuesday, 23 June 2009

Tweaking Outlook to work With GMail

I have not yet managed to give up on email clients. I know that the "new generation" has long ago switched and is using a web client to manage mail, but I still like the use experience that outlook gives me (along with its calendar). The trouble is that working on multiple machine require some tweaking to make it comfortable. Downloading emails to multiple machines The trouble starts fro using the pop3 protocol. in general that protocol is aimed for a single machine use and when you download email to a given client, even if the messages are left on the server they are not downloaded to another machine. One possibility is setting up GMail to use IMAP but I personally don't like this kind of setup. luckily there's a way to work around this: Using POP on multiple clients or mobile devices...

Sunday, 21 June 2009

Versioning Scheme

There are various scheme for handling version number. But so far I haven't really encountered anything meaningful in any of the schemes. several days ago I encountered scheme which I really liked. The scheme is a variant of Change Significance and is specifically aimed for API libraries, that is while I'm sure it can be extended to regular products, its basic semantics is for aimed for API's libraries. and the semantics goes like this (using a four digit sequence): a change in the first number means the API has changed in a breaking manner. a change in the second number means there were additions to the API and a change in the third number means an that the internal behavior Last number is a sequential build number. Let take for example NUnit, if NUnit will adopt this...

Tuesday, 16 June 2009

TDD Problems for Practice

Every time I look or hear a TDD lecture, I always see the same examples. While its hard to go very deep in a 30-60 minutes lecture, the common used examples doesn't really reflects a real life scenario. How many in our daily job are coding a calculator? When I'm asked (which happens 90% of the time) if I have more "real life" example I redirect to the TDD Problem Site: The aim of this site is to contain a growing collection of software problems well-suited for the TDD-beginner and apprentice to learn Test-Driven Development through problem solving. and the real cool good thing about those problems are that they follow the following rules: they are real-world, not just toys they are targeted towards learning TDD (that is: they are small and easy enough to work out in say half...

Sunday, 7 June 2009

Myth Busted - NOT

In a recent post Scott Ambler starts by claiming Agile Myth:High Quality Costs Less than Low Quality - Busted! (at scale) later on when reading the actual content Ive learnt that he refers to very specific cases : For example, in situations where the regulatory compliance scaling factor is applicable, particularly regulations around protecting human life (i.e. the FDA's CFR 21 Part 11), you find that some of the URPS requirements require a greater investment in quality which can increase overall development cost and time. and This is particularly true when you need to start meeting 4-nines requirements (i.e. the system needs to be available 99.99% of the time) let alone 5-nines requirements or more. The cost of thorough...

Wednesday, 3 June 2009

Evolving Design - Its a must!

A couple of days ago I read Gil's post about "Good Design Is Not Objective", in it he writes So are there "good" or "bad" designs? Every person has an opinion. Opinions change over time. Problems and technologies change over time, and a design can help or interfere with the project, but you'll know that in hindsight. Yesterday, at one of my client a simple question turned into a related discussion. One of the software architectures asked me if I ever saw (and what do I think of) a system which uses a global variable repository. One that every part of the system could use at will  to store data and is used as way of communicating between various parts of the system. Apparently that kind of an approach is used in their system and he wanted to know what I would say. After thinking...

Tuesday, 5 May 2009

How NOT to write Code Examples

When working on one of my pet projects, I need to extend the visual studio IDE. Before starting out I wanted to get a better understanding of the IDE extensibility model. Therefore I allocated  some time to do a spike in order to get a feeling of the basic capabilities and the effort that will be involved. Usually when doing spikes I  like to dirty my hands as soon as possible, so I thought that best way would be to create my own sample add-in and play with it. So the first step of business was to create my own add-in project, that was fairly easy to accomplish since there's a build in wizard for creating an add-in project (it hides under other project types-> extensibility: The next step for me was to try an add a custom...

Monday, 4 May 2009

The future of scrum

Lately I've heard rumors about SCRUM starting to define the developer role inside the scrum team. Yesterday in the 3rd Israeli scrum forum, those rumors were confirmed when Danko announced that the scrum alliance is contemplating adding a Scrum Developer certification course. When I asked for details, he said that its just the beginning, but the Scrum Alliance is now starting to discuss the various engineering practices and decide which of those to adopt as inherent parts of SCRUM. Its about time. A good Development process One of the things that always bothered me about SCRUM is the idea that one can define a DEVELOPMENT process without actually going into how software is developed. This led me to describe SCRUM as a management process which is very suitable for managing software development...

Friday, 3 April 2009

ALT .NET II - Wanted Board

For those who might have missed the chance to write up the details:...

Israel ALT .NET II was a Blast

Like the first one I had a great time in the second gathering of the Israeli Alt .NET group. No matter how I look at it the "Open Space" format along with the people involved have made this gathering one of the most enjoyable conventions I've been in a long time (actually since the previous one). For those of you who have missed it Here is the agenda of the day: My only regret is that we didn't have more time to put in more sessio...

Tuesday, 24 March 2009

ScrumBut - No Release Planning

"Were doing Scrum-But ..." The ScrumBut phenomena has started to appear more and more as scrum has started to take its hold in the industry. I want to add one ScrumBut i was in charge of and it went like this: We were doing scrum but: We had no release planning. At the time we were undergoing so many directional shifts that each time we tried to flesh out a release plan, it changed drastically causing any planning effort to fail. Also our acting PO wasn't involved enough, a fact which also contributed to to difficulty of achieving a stable enough release plan. So we went and continued without it. And actually it wasn't a complete disaster, we achieved a very short sprint length of 1 week, we added to that various engineering practices like TDD, CI and Pair programming and we managed...

Wednesday, 18 March 2009

Open Houses

So many announcements today. Anyway next week Ill be giving two open houses: The first will be at Sela University on the 23/3 and will deal with the trouble of planning and estimation in the software world. (As far as I know most of the places are  taken, but if you're interested leave me a comment and I'll se what can be done) The second one will happen at Haifa on the 25/3 show why Design For testability is not a prerequisite for doing TDD. (the slides for this can be found he...

ALT.NET Israel - 2nd Gathering

Been some time since our previous encounter so we thought we might enjoy another meeting. Anyway, we will meet on April 2nd and 3rd, at Sela University. Details are on the alt.net israel’s usergroup: http://groups.google.com/group/altnetisrael/browse_thread/thread/4ab4329c4bdd8253 (hebrew) I would like to thanks my associates at Sela making this possible. Signup link will be published short...

Sunday, 15 March 2009

NUnit Extensions - Adding Logic at Run Start

Most of the time using NUnit is very straight forward. Recently however I needed to add some functionality that will make life a little bit easier. In this post I'll show how to add some setup code that will be executed once at the start of the test run. Why is this useful? actually I don't have a clear answer. Here are some reasons I came up with : Run some special set up code which is just to costly to run at every setup (even if only for class setup). Transparently enforce some logic on all tests (i.e. without the need for other programmer to explicitly add that logic) you want to add some special behavior to the test runner   NUnit Event Listeners NUnit has several extension points that will adding almost any kind of logic to the framework. Ben Hall has posted some...

Wednesday, 4 March 2009

Handling Bottle Necks in Scrum Team

During  yesterday open house I was asked an interesting question.  Some context first. The organization has chosen to adopt the Scrum methodology (good for them). As a scrum team member she is in charge of writing the automation for system test using a module inside the QC product (can anyone guess what's wrong here?). The issue is that she cant keep up. The team has 5 developers who write code and only her to write test automation (now do you see it?). So she was asking what is the "agile" solution to this. I don't know if this is The agile answer, but for me, when a team member cant keep up and doesn't manage to finish his tasks, he needs help. No agile process or in fact any other development process will change that. If a given person has too much work no matter if he works...

Tuesday, 3 March 2009

Collection Asserts in MSTest (and some more)

Sometime I can miss the obvious. I've been working with MSTest framework for over a year now and up until today I completely missed the fact that beside the Assert class MSTest framework contains 2 other assert classes : StringAssert - used for string specific asserts like StartsWith, EndsWith and even support regular expression matching CollectionAssert - used for collection operation like Contains, AllItemsAreNotNull and the most useful AreEquivalent. Naturally NUnit also has equivalent classes (which of course I missed as well). Now the thing that really ticks me off is that I was asked this specific question twice in the last month and gave the wrong answer. Only today after I allocated 2 minutes to actually google it, I found out about it. Lesson learnt - For all consultant...

Monday, 2 March 2009

The Fifth Value – Respect (cont.)

Some time ago I touched the subject of respect in the software development business. Yesterday I had the chance to talk with one of the persons working at  a client of mine. Beside of holding the respectful position of VP QA (the company is of medium size) the guy also allocate one day a week to maintain an IT business he once had which currently has a single client. After talking about how he ended up in this kind of arrangement, an obvious question for me was why does he keep on doing it. Isn't the fuss of handling a single customer to big to be worth the time? The answer I got was: Working for that client puts me in perspective. once a week i get the chance to function as a plain technician. This gives me the opportunity to get on my knees and work with the bits the bytes. For...

Sunday, 1 March 2009

Sela Open House

Last week I gave at Sela a lecture about Design For testability.  For all those who attended I want to thank you for coming. For all those who missed it, you might be able to catch it this week (I'll be giving it again at Sela on Tuesday) or if you happen to be located at the north parts of Israel it will be repeated nearer to you on the 25/3. For everyone else you can get the slides he...

Monday, 16 February 2009

Quality is infectious

In his recent post - Quality-Speed Tradeoff — You’re kidding yourself, Ron Jeffries has explained how high quality is mandatory in order to achieve high delivery rate. There are many reasons for quality issues in a product, inherent technical complexity, lack of skill or just plain laziness. However an over looked factor that really hurt quality is pure pressure. When the pressure to deliver rises above a certain level (which vary for people and teams) the team starting to cut corners. When pressed developers will deliver. However we are not magic workers. When pressed we usually starts by working longer and harder, but when that's not enough, the only option left is to compromise current quality in the hope that part of the work can be delayed after the delivery. The mistake involved is...

Sunday, 8 February 2009

WPF Testing - Part I

Automating GUI testing is always a tricky business. In fact its so hard that people tend to mark it off as too hard to bother with. I believe however that this observation is not correct. During one of my consulting gigs I was starting to instruct a new team on the concepts of unit tests and since they working on a real product they actually have some GUI involved (imagine that).If that's not enough they are using WPF as their framework of choice. I on the other side cant claim to be a GUI expert (to say the least) and my hands on experience with actual WPF code is, well, close to nothing. I couldn't leave it at that, so I invested some time in actually trying to figure out how one can write tests for WPF based GUI. This post (which hopefully...

Pages 381234 »

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Walgreens Printable Coupons