Archive for the ‘From Experience’ Category

[tweetmeme  source=”aabdulmoniem” only_single=false]

Today, our product owner has sent me a document which contains some bugs as he said. I have opened the document to see what are the problems with our system, but I have found that most of the notes which were named bugs simply not bugs but they are new features.

I have decided to hold a meeting with him afternoon to discuss him about those notes. I told him: “These are not bugs, they are new features.”. He said sadly: “No, No … They are bugs. I didn’t expect all these notes. Why this feature is like this? and why the other feature is not working as my expectations … etc.”

The problem I am facing here is just we are not meeting his expectations, and the cause is very obvious, he didn’t write his expectations about each feature. In other words, he didn’t write acceptance criteria for each user story (Scrum is our process).

Rule of thumb:

Always, ask your stakeholders about their acceptance criteria before going to code.

Let’s take an example from Software Estimation book by Steve McConnell to see what I am talking about here:

Suppose you’re developing an order-entry system and you haven’t yet pinned down the requirements for entering telephone numbers. If I didn’t ask the product owner about what he is expecting while entering telephone numbers, I may implement it in another way which will not meet his expectation. Some questions may be:

  • When telephone numbers are entered, will the customer want a Telephone Number Checker to check whether the numbers are valid?
  • If the customer wants the Telephone Number Checker, will the customer want the cheap or expensive version of the Telephone Number Checker? (There are typically 2-hour, 2-day, and 2-week versions of any particular feature—for example, U.S.-only versus international phone numbers.)
  • If you implement the cheap version of the Telephone Number Checker, will the customer later want the expensive version after all?
  • Can you use an off-the-shelf Telephone Number Checker, or are there design constraints that require you to develop your own?
  • How will the Telephone Number Checker be designed? (Typically there is at least a factor of 10 difference in design complexity among different designs for the same feature.)
  • How long will it take to code the Telephone Number Checker? (There can be a factor of 10 difference—or more—in the time that different developers need to code the same feature.)
  • Do the Telephone Number Checker and the Address Checker interact? How long will it take to integrate the Telephone Number Checker and the Address Checker?
  • What will the quality level of the Telephone Number Checker be? (Depending on the care taken during implementation, there can be a factor of 10 difference in the number of defects contained in the original implementation.)
  • How long will it take to debug and correct mistakes made in the implementation of the Telephone Number Checker? (Individual performance among different programmers with the same level of experience varies by at least a factor of 10 in debugging and correcting the same problems.)

As we can see, some questions like this will give us more explanations about what he wants? and the first dialogue will not happen again if we meet what he looks for.

A really good lesson you have to learn and to teach.


Read Full Post »

[tweetmeme  source=”aabdulmoniem” only_single=false]

Hello … It has been a long time from my last post. I am sorry for that delay (I know I am the only one who reads this :D).

Really, I am here today just to describe my feelings about the last three months being a team lead. May be it is not the first time for me to lead some people but it is the first time actually I am titled as a team lead. And for sure it is a BIG difference.

Being a normal senior leading some people under your management is totally different from being a team lead leading a whole team has seniors, juniors and even people who are out of your technical scope. And this makes the difference.

Do you think it is easy?! .. Really not!

In the past three months, I have realized really how to practice your mentality to be a multi-task enabled. You will meet situations that you have to lead people, write code, give advises, recommend solutions, architect software, be a Scrum master (if you are familiar with scrum), talk to managers, hold meetings, solve problems between team members, giving them positive boost, taking aggressive actions sometimes …. There is no more space to write all the tasks you have to do at the same time when you become a team lead.

I will document here some notes I think they will be useful for someone else reading this topic (if any) and he is going to change his career soon to be a team lead.

First, read on how to lead people in general and how to give them the right benefits and help they are needing from you. This is a  whole big different science and don’t try just to behave like a leader in your first day without gathering some information about your new position. A right choice for you may be “Peopleware” book.

Second, from your first day in your new position you have to give your team the impression of how you’re a good team leader, set with them in a small session giving them some highlights about your career path, achievements, and success stories. Also, give them the ability to tell you the same about their career lives. It is important to make your team as a one unit, loving each other, and respecting each other, and knowing each other.

Third, setup the process guidelines. You have to set the red and green lines which makes your work succeed with your team. You have to name the process on which your team will work together. Explain it very well, give examples about some situations you have seen in your career life, and at the same time tell your team members how they must be accountable and responsible while they are working because the team has the same vision so they must feel like they are making the job together to reach some targets.

Fourth, you have to tell your team that the small tasks must be done perfectly for the sake of the big success. Because if the small tasks have been done perfectly, it makes a difference. So, your team members must feel how they are participating in success or failure. Success and failure will not be be attributed to a specific one, but to the team.

Fifth, one of the biggest problems I have faced in my first days being a team lead is that some members have no intention to cooperate with others to make the team reaches the targets. The problem was that not all the team members know well how to be a good team player. Teach and direct your team members to be a good team players. Make some sessions about this issue every some time. It is really a big if not the biggest reason for your team success.

hmm … I think, this is enough for today but certainly I will return back. I will be really happy to hear from all the team leads our there about their first moments being team leads ;).

Read Full Post »

[tweetmeme source=”aabdulmoniem” only_single=false]

Yesterday, I have asked my IT administrator to install another screen for me with a new screen card supporting dual screens in order to feel the experience of the new Multi-Screen support in VS 2010. Really amazing guys!

Multi Screen Support

Multi Screen Support on my Machine

All you have to do is to undock any window in the VS 2010 and just drag and release to the new screen. This gives you many benefits:

  1. Keep you on focus as you can open the designer and code behind file of a form in the same time.
  2. If you were pairing with your colleague and you want to do something while he is reviewing some code on another screen you can do it easily.

Really, a very good and useful feature in the new IDE.

Read Full Post »

[tweetmeme  source=”aabdulmoniem” only_single=false]

I was waiting on fire for the new version of TFS 2010 because of its super features which solved many other drawbacks I was facing in previous version.

One of the most features I was waiting for is the ability to install TFS 2010 on client machines running client operating systems like Windows 7 for example. In old versions I was tied to install it only on server machines running server operating systems like Windows 2003 or Windows 2008.

This was really annoying for me, because I am using my personal  machine as a personal lab and using TFS within it. So, I was obligated to install Windows 2003 (I know that I can install windows 7 for example, and use a virtual machine for windows 2003 server, but this can be a good solution to some how fast PCs).

And here we go, I have installed TFS 2010 on my client machine. And really I was so happy for that.

After two days, I decided to begin learning and using the new features of this giant. But I was shocked when I see that there is no support for sharepoint or reporting services in client machines!

In the install manual you can read the following:

Client operating systems do not support integration with SharePoint Products or the reporting feature. If you want to use either one of these features, you must install Team Foundation Server on a server operating system.

Really, this is so bad!

I think I will try to switch to the second solution of using virtual machine.

So, don’t ever install TFS 2010 on a client machine if you need those two features.

Read Full Post »

[tweetmeme source=”aabdulmoniem” only_single=false]

How many people have tried to set up their startup software companies?! And how many people need to spend less money as possible or even to spend no money at all to cut the risk of failure?! I think you are one of those people as long as you are reading my post ;).

Here I am not talking about how to create a business plan or if you must be MBA to set up your company or not … etc. But I am talking here about how to set up your startup software company’s infrastructure for your development team(s) working from their homes who may be in different countries also.

By the word infrastructure I mean source control mechanism, build machines, way of communications like emails and how to attach them to your business domain (of course ahmed@yourdomain.com is better and more professional than ahmed@hotmail.com) without paying so much.

All this stuff and more is almost without any need to meet with your team(s) or even to see each other (of course I am not talking about cam to cam chatting, of course you can do that!).

From my little experience while establishing my startup, I can give you some hints to this important recurring case facing many people today.

First of all let’s define some assumptions:

  1. I am a .NET specialist, so of course I am talking about establishing a .NET startup company so I will use many tools dedicated for .NET environment. But the same steps you can follow for any other technology based company and you can google for the same tools for any other platform.
  2. Your new startup software company is less than fifty (50) employees.
  3. You have some money to pay for some services. For example, registering for a domain name.
  4. You have an internet connection and of course all of your team(s) members.

Now we will go through the steps which are very easy but don’t forget to take into consideration our assumptions.

  1. Register for domain

    • Go and register a new domain name at one of any hosting service provider. For me, I am registering my domain at GoDaddy.
    • The domain name price will be at most from 10 – 15 USD.
  2. Attach Google Apps to your domain

    • Google providing webmasters with a lot of cool services like Google Apps which is really and simply WOW service. You can register for free at this WOW service and gain the following benefits:
      Get custom email like
      Google Sites
      Create websites and group wikis.
      Google Calendar
      Organize your schedule and share events
      with friends.
      Google Docs
      Share online documents, presentations, and spreadsheets.
  3. Source control and build machine

    • Source control and build machines are one of the top ingredients in software development.
    • Being a .NET specialist, I will support the choice of the Giant Team Foundation Server (TFS) which gives you all the required features out of the box besides its support to be part of your great IDE Visual Studio.
    • You have to prepare a machine to act as the server with TFS and SQL Server installed. I will take an example to be more precise, TFS 2008 and SQL Server 2008 Enterprise Edition. Note that, while installing the TFS you can choose to set up the server to be a build machine using the same installation package.
    • You will instruct all your team members to install Visual Studio into their machines with Team Explorer. To be more precise, I’d recommend Visual Studio 2008 Team Suite and Team Explorer 2008.
    • You and your team(s) are now ready starting your next project. But the problem here how to give a channel of communication between your server and your team(s) machines!
  4. VPN connection using LogMeIn Hamachi

    • The most secure approach is to provide a VPN connection to your server and allow your team(s) to connect to this server. Hence, connect to your TFS (Source control and build machine) and to your SQL Server.
    • I have tried two approaches and both worked but I’d prefer one of them. The first approach is to use OpenVPN and follow the instructions written here. I am not with this approach because of the configurations hassle you will face while trying to get  it to work.
    • The second approach is to use LogMeIn Hamachi which I’d recommend strongly. Zero configurations! Just Install and go!
    • All you need is to set up this Hamachi client into your server and instruct your team(s) to install it too. Then, create a new network from the server using the Hamachi client and give its information to your team(s) to make them able to join the new created network using their Hamachi clients.
    • Really simple huh! But remember, Hamachi comes into two flavors: Commercial and Non-Commercial versions, try to read more about them before starting using this approach.

Your startup software company is now ready to go. Simply, you are now a CEO 🙂 !

Read Full Post »

%d bloggers like this: