Project Management is difficult – like running a ship

Under what circumstances, if any, can adding team members to a software development project that is running late result in a reduction in the actual ship date with a level of quality equal to that if the existing team were allow to work until completion?

There are a number of things that I think are necessary, but not sufficient, for this to occur (in no particular order):

  • The proposed individuals to be added to the project must have:
    • At least a reasonable understanding of the problem domain of the project
    • Be proficient in the language of the project and the specific technologies that they would use for the tasks they would be given
    • Their proficiency must /not/ be much less or much greater than the weakest or strongest existing member respectively. Weak members will drain your existing staff with tertiary problems while a new person who is too strong will disrupt the team with how everything they have done and are doing is wrong.
    • Have good communication skills
    • Be highly motivated (e.g. be able to work independently without prodding)
  • The existing team members must have:
    • Excellent communication skills
    • Excellent time management skills
  • The project lead/management must have:
    • Good prioritization and resource allocation abilities
    • A high level of respect from the existing team members
    • Excellent communication skills
  • The project must have:
    • A good, completed, and documented software design specification
    • Good documentation of things already implemented
    • A modular design to allow clear chunks of responsibility to be carved out
    • Sufficient automated processes for quality assurance for the required defect level These might include such things as: unit tests, regression tests, automated build deployments, etc.)
    • A bug/feature tracking system that is currently in-place and in-use by the team (e.g. trac, SourceForge, FogBugz, etc).

One of the first things that should be discussed is whether the ship date can be slipped, whether features can be cut, and if some combinations of the two will allow you to satisfy release with your existing staff. Many times its a couple features that are really hogging the resources of the team that won’t deliver value equal to the investment. So give your project’s priorities a serious review before anything else.

If the outcome of the above paragraph isn’t sufficient, then visit the list above. If you caught the schedule slip early, the addition of the right team members at the right time may save the release. Unfortunately, the closer you get to your expected ship date, the more things can go wrong with adding people. At one point, you’ll cross the “point of no return” where no amount of change (other than shipping the current development branch) can save your release.

I could go on and on but I think I hit the major points. Outside of the project and in terms of your career, the company’s future success, etc. one of the things that you should definitely do is figure out why you were late, if anything could have been done alert you earlier, and what measures you need to take to prevent it in the future. A late project usually occurs because you were either:

  • Were late before you started (more stuff than time) and/or
  • slipped 1hr, 1day at time.

Hope that helps!

Continue reading “Project Management is difficult – like running a ship”


  1. You talk too much

 The advantages of the fact that you are open to discussions and you are decided to persuade the fact that you are the best can turn against you. There is the risk of boring the other person with so many details and you can even look like you don’t have the cap city to concentrate on one given subject. Continue reading “SIX MISTAKES DURING A JOB INTERVIEW”

Creating Classes and other Web Objects in .NET

VB.NET is an Object Oriented programming language. The Objects referred to are created from something called a Class. You’ve already used Classes throughout this course. But we’ll now have a closer look at them.

Object Oriented programming

oopThe modern trend in programming languages is for code to be separated into chunks. When it’s being used, each chunk of code (a chunk of code that opens text files, for example) is known as an Object. The code for the Object can then be reused whenever it is needed. Languages like C++ and Java are Object Oriented languages. Until Microsoft came out with VB.NET, the Visual Basic programming language was not OOP (object oriented programming). This time it is.

Object Oriented programming has a steeper learning curve, and things like Encapsulation, Inheritance and Polymorphism have to be digested. We’re not going quite that far in this beginner’s course. But you should have a good, basic understanding of just what Object are by the end of this section, and how to create your own Objects.

Classes and Objects

In VB.NET, a class is that chunk of code mentioned earlier. You’ve been using Classes all the time during this course. The Form you’ve started out with is a Class. If you look right at the top of the code window, you’ll see:

Public Class _Default
    Inherits System.Web.UI.Page

The word “Public” means that other code can see it. _Default is the name of the Class.

If you look at the bottom of the coding window, you’ll see End Class, signifying the end of the code for the Class.

When you place a Button or a textbox on the Form, you’re really adding it to the Form Class.

When you start the Form, VB does something called instantiation.

This basically means that your Form is being turned into an Object, and all the things needed for the creation of the Form are being set up for you (Your controls are being added, variables are being set up an initialised, etc).

And that’s the basic difference between a Class and an Object: A Class is the code itself; the code becomes an Object when you start using it.

The NET Framework

The NET Framework is something that Microsoft have invested a lot of time, effort and money into creating. It’s big. Very big.

The way that programming will be done on a Microsoft machine from now on is with NET. And not just on a Microsoft machine. There’s something called ADO.NET which is used for creating web site, and for manipulating databases. You can create applications for mobile phones and PDA’s with NET. There is even a project in the making that will allow you to write a program on a Windows machine that will then work on a computer NOT running Windows. All this is made possible with the NET Framework. But what is it?

The NET Framework is a whole lot of Classes (called Namespaces) and the technology to get those Classes to work. The main component is called the Common Language Runtime. A Runtime is the thing that gets your code to actually run on a computer. Previously, these Runtime Languages were machine or programming language specific. The Runtime that gets a Java program to work, for example, is different to the one that gets a C program to work. With NET, more than 15 different programming languages can use the Common Language Runtime. One of these languages is, of course Visual Basic NET. Another is C# (pronounce C Sharp). They can all use the Common Language Runtime because of something called the Intermediate Language. (This is a sort of translator for the various languages, and is too advanced to go into for us.)


A Namespace is a group of Classes which are grouped together. The System.IO Namespace you met earlier groups together Classes that you use to read and write to a file. System.Windows.Forms is another Namespace you’ve met. In fact, you couldn’t create your forms without this Namespace. But again, it is just a group of Classes huddling under the same umbrella.

System itself is a Namespace. It’s a top-level Namespace. Think of it as the leader of a hierarchy.

IO and Data would be part of this hierarchy, just underneath the leader.
Each subsequent group of Classes is subordinate to the one the came before it.

For example:

Imports System.Data
Imports System.Data.SqlClient

This means that the Data Namespace is loaded from the System Namespace. The SQlClient is a sub-class and it will be loaded from the Data Namespace which will be loaded from the System Namespace.

The dot notation is used to separate each group of Classes.

The leader of the hierarchy is still System, though. Think of it as an army.

You’d have a Private who is subordinate to a Sergeant.

The Sergeant would be subordinate to a Captain. And the Captain would be subordinate to a General.

If the General wanted something done, he might ask the Captain to do it for him. The Captain would get the Sergeant to do it, and the Sergeant would then pick on a poor Private.

So a Button would be the Private, Forms would be the Sergeant, Page would be the Captain, and System the General.

You will see this chain of command every time you type a full stop and a pop up box appears. When you’re selecting an item from the list,
you’re selecting the next in the chain of command.


Make your own Controls, Classes and Namespaces

The big benefit of an Object Oriented Programming language is that you can create your own Objects. (It’s an Object when you’re using the code, remember, and a Class when you’re not.)

We’ll see how to do that now, as we create a very simple Class, and then turn that into an Object.

The Class we’ll create is a very simple one, and is intended to show you the basic technique of setting up a Class, then creating an object from it. The Class we’ll create will convert the letters in a postcode to uppercase. We’ll get the postcode from a textbox on a form. Off we go then.

Start a new VB .NET project

Add a Textbox to your form, and name it txtPerson

Add a Textbox to your form, and name it txtAge

Add a Button to your form and name it btnCalculate

Once you have a new form, you need to add a Class. This is quite easy.

Right click on Project, chose Add>new item and then browse for class. Name your class Person.vb

A new page will open with the following contents:

Public Class Person

End Class


Properties and Methods

A class is like a car. It has properties (like colour, engine size, owner) and it has a set of actions it can do, called methods (like StartEngine, StopEngine, RunHome).

You can declare your properties using snippets (they are pre-defined pieces of code that will simplify your coding time)

To do so, right click on the blank form and choose Insert Snippet>Double click on Code Patterns>Properties, Procedures, Events. And then select Define a Property



As you can see there are many options available, based on what you are looking to achieve. A Read-Only Property can read but not written to.

You will now create a property called “Name”
Name your private variables with an underscore and all your public ones with Capitalisation (first letter uppercase).

Declare another property called “Age” as Integer. You can easily tab through the highlited fields and changing one will change all of them.

Now we will add a method which will check whether the person is underage or not.

To define a function (which returns a result), you will use the keyword “function”. To define a procedure (which does only work and returns no result), you will use the keyword “Sub”.

        Public Function IsMinor() As Boolean
            If _age < 18 Then
                Return True
                Return False
            End If
        End Function
  • Public will make the function visible from wherever we call it.
  • Function says that we will be returning a result
  • IsMinor – function name
  • As Boolean – return type (can be any of the types defined before)
  • If … Then .. Else .. End If — this structure will validate a condition. If the condition is true, the “Then” part will be execute, otherwise the else part. End if marks the end of the statement.
  • _ageValid operators are: < (less than); > (greater than); = (equal to); <> (different); >= (greater or equal to); <= (less than or equal to)
  • Return – each function needs to have a “Return” statement where the value is sent back to the caller.
  • True/False – possible values for a Boolean result.


Using a class

The usage of the class is called “instantiation” – it’s when the code becomes an Object.

Dim p As New Person 'instantiate a new Person
        p.Name = txtPerson.Text 'assign the name of the person, we are using the "Set" in the property
        p.Age = txtAge.Text
        If p.IsMinor Then
            lblResult.Text = p.Name & " is minor!"      ''we are using the "Get" in the property
            lblResult.Text = p.Name & " can drink beer!"
        End If

If you would like to skip two lines of code, you can assign the name and age of the person when the object is creating by overriding the “New” method. This is called when the object is first created and can be used to populate the inner properties.

To do this, in the class, drop down the right drop-down and chose new.

          Public Sub New()

will be added to the class. Copy this function and then modify the copy like in the image below:

This means that a new “Person” object can be created without parameters or with the Name and Age as parameters.

If they are specified, they will be assigned to the person details. If we look now back in the default function, we shall erase / comment out the part we have just done and put in the new code.
When you start typing the person object instantiation, you will see that all of a sudden, you have two option when you declare it (see below)



This is it! Run the project (F5) and press the button to see what you get.

Website: Choose DIY or Go with a Pro

Feeling adventurous? Are your creative juices flowing like floodwater? Do you enjoy learning new skills and sopping up new knowledge?

Do you, as a user, know your way around the Web and have clear likes and dislikes about sites you visit?
Then you’re probably ready to take on much of the work of building yourself a Web site. Depending on how much functionality you need, you can even do it in a day, start to finish – your business, live on the Web!
But if you find basic word processor functions a challenge, have never uploaded an image from a digital camera to your computer or bought anything from a retail Web site, if you still haven’t set up that e-mail account you’ve been meaning to get to, it would be a very good idea to seek professional help. Web-building help, that is. In this step, we’ll fill you in on:
• DIY Web Site Packages
• Choosing a Web Design Professional
• SEO and Red Flags
Some people think of this step at best as BBI – boring but important. But don’t be tempted to skip ahead to the fun parts. You’ll regret it later or maybe sooner.

DIY Web Site Packages
Before you decide to build your own business Web site, be brutally honest in judging your own creative abilities or potential. This is tricky, because a lot of it is a matter of taste, and facing certain realities.
• When creating anything, do you have the ability to do it in a fresh or novel way?
• Do you have a sense not only of what appeals to you, visually and functionally, but to a wide audience?
• Are you color blind? (Many people don’t know the answer.)
• When involved in a creative task, are you persistent enough to work through the rough spots until you get it right?
If the answers to these questions add up to limited creative abilities, many DIY (do-it-yourself) Web site packages, including site-builder software, will fill in the gaps for you.
Most include customizable templates – fill-in-the-blanks Web page designs that provide the visual look and feel of your site and have basic functions built in.
Some DIY packages include your choice of domain name, hosting, add-ons, search-engine optimization (SEO), Web site traffic reporting and other basic but vital elements.
Before you choose:
• Be sure it includes 24/7 customer support. If one thing is certain in building and maintaining your own Web site, there will be bugs and you’ll have questions.
• Even with assurances of around-the-clock support, choose a provider in your own time zone. If they’re asleep while you’re awake, you can easily end up waiting 24 hours for the answer to even a simple question.
• Try it out. Most reputable DIY Web site providers now offer the option of downloading and trying their software free for a limited time.
That said, here’s a short list to get you going:
• 1&1 My Website

• Microsoft Office Live Small Business
• Godaddy Web site Tonight
• Yahoo! Small Business

Choosing a Web Design Professional
If you don’t have the time, interest or ability to design and go live with your business Web site, hire a pro – or at least someone with enough knowledge or experience to assemble a simple but professional site that meets your needs.
One way to get this done, and a good choice if you’re on a tight budget, is to contact your local college and ask how to find a student designer. Many of them already have enough experience to handle fundamental Web site design; some of them much more.
If your budget allows some elbow room, hire an established, experienced and proven pro. Just don’t do it the way old Aunt Gert picked her horse bets – by sticking a hatpin in the racing form.
But before you hire any Web designer or team, there are some questions you need to answer:
• Do they have experience with business Web sites?
• Can they meet the needs of the plan you carefully laid out in Step 1?
• Will you be working with one designer throughout your project, or passed around to different team members? The more personal attention the better.
• Does the designer or firm have references? If so, call them. If not, move on. Ask about your candidate’s record of meeting or missing deadlines, ability to collaborate with clients and their work ethic.
• Are examples of their designs at work on the Web? Carefully look over those sites, not just for quality and range, but for styles that agree with your own.
• What payment plans do they offer? Beware of any that require full payment up front. By the time you discover they’re not as good as they looked, it may be too late to cut your losses.
• What are their verbal and written communications skills? Can you understand them when you discuss your Web site needs?
It all comes down to using the same due diligence you would in hiring any member of your business team. If you wouldn’t hire them for a staff job, don’t hire them on contract.

If you are looking for a professional company to do your website, why not contact Carra Lucia Limited?

SEO and Red Flags
Visibility on the Web, especially ranking high with major search engines like Google, Yahoo and MSN on relevant keywords, is essential to online business success. Be sure to look for search engine optimization as part of your Web design package.
SEO is arguably the biggest single challenge in designing, building and maintaining an effective business Web site – or any other sort – because the “rules” keeping changing, the Web landscape never stops shifting, and new technology regularly adds its own wrinkles.
It needs constant tending to stay competitive, and whether you have the time and patience to take on the challenge yourself, or pay a pro for SEO, you should be aware of some warning flags.
• When someone says they’ll “submit” your new Web site to one, 10 or 100 search engines, it’s more sales pitch than substance. As long as your site has solid SEO built into the design, you’ll be found by search “spiders” – automated programs that constantly crawl the Web looking at sites to include in search results.
• If a designer or team promises SEO but doesn’t say which search engines they will optimize your site for, ask. While “submitting” a site is a mostly myth, your SEO must meet the requirements of at least the Big Three: Google, Yahoo!, and MSN.
• Don’t believe anyone who “guarantees” top search engine rankings. Nobody can back up that claim.
• Don’t believe any claims of immediate results. It can take weeks for the spiders to find you and add your site to the search results roster.
If you wish to take advantage of great SEO Services, email Carra Lucia Limited today