SlideShare uma empresa Scribd logo
1 de 7
ProjectEstimation
Naeem Bari
Director IT
CEQUEL III
Naeem.bari@cequel3.com
Naeem@cyweb.com
Summary
Project Management 101: This talk introduced you to the fundamentals of project
management. Estimating costs, timeline, putting together a project plan and a team.
Also includes an intro to server sizing that some may find useful.
Scenario
You have just been asked by the CIO and the CFO to build a new website that will
handle purchase requests for your company. The CxOs outline (very sketchily) the
tasks that this new system is expected to perform. Lots of hand waving involved.
On-line… mumble mumble… easy to use… mumble mumble… integrate with
accounting system… blah blah… scalable, fault tolerant etc etc. After the hand
waving they look you squarely in the eye and ask – “so how much will this cost
and how long will this take?”
Congratulations, you are a project manager.
The Initial Response
Never give an estimate of the ETA and costimmediately. Whatever you say will be
wrong – guaranteed. Instead, ask the following questions:
Why do we need a new purchasing system? What is it replacing? Why is the old
system inadequate?
Why does it need to be online?
Who is the project sponsor?This is the personwho will acceptwhat you
deliver, authorize payments etc. The CFO, most likely.
Who is the primary user? This is an important question. More so than who is
the project sponsor. This is the personwho will be the highest ranking day to
day operational user of the application. This will rarely be the CFO. More
than likely it will be some direct report of the CFO – maybe a controller,
maybe a purchasing director. This person can make or break your project.
The CFO will do what this person recommends. This is the person who will
help you gather requirements for the application, identify users, help with
the design and help with testing.
Can we buy vs. build? This question usually has a more straightforward answer
than one would think. This can be answered by determining how much
money the sponsoris willing to spend if we can buy an OTS solution.
Explain that apart from the purchase cost, they also have to budget for
implementation, which can be quite costly. More often than not, you pay
more money for a packaged solution but you get more functionality. If your
sponsorsdon’thave the money or don’trequire the functionality, then it
might be better to build.
Is there a constraint on when this application needs to be completed? End of the
budget year? End of the quarter? The sponsorprobablyhas some pre-
conceived notion of when the application needs to be available. If a deadline
is provided, ask the obvious follow up questions:
Why the deadline?
What will be the impact if we can’t make the deadline?
This is a difficult line of questioning, but one that needs to be conducted. It
is usually easier to determine when you won’t be able to make a deadline
than to determine when you will be able to meet one. It is way better to
manage expectations up front than to have to do damage control later.
Once this initial line of questioning is complete, clarify your role to the CxOs,
outline your next steps, outline your approachand explain your expectations from
them. Bullet points express it best:
Explain that your role will be that of the project manager. You may also
participate in the development, depending on the size of the team that you
will need (and that you will communicate the estimated budget and team
size once you have put together the first draft of the project plan).
Explain to them that your next steps are to:
Have a detailed discussionwith the primary user.
Draft a 5,000 footlevel functional requirements document within a week
at most.
Have the sponsorand primary user approvethe document – or at least
nod their heads.
Develop the project plan that you will follow.
Outline how you perceive the project to be implemented. Tell them that after
the requirements have been gathered, the project plan and budget has been
approved and the team has been assembled, you will implement the
application in an incremental fashion, with pieces of the application coming
online at various milestones (this is usually the best way to go, if possible –
the traditional watershed approachrequires the customer to wait too long
before seeing anything – and it smacks too much of the recently deceased
$200/hr dotcom days ).
Explain to them that you expect a level of cooperation from them. Probably
weekly meetings to begin with, then switching over to as needed. They also
need to commit to helping you convince the users to buy into the
application. This requires them to be excited about this project, and to
project that level of excitement to their staff as well. Change is hard, and
users don’tlike it unless they are excited by what you are doing – or are
forced by their bosses. Either way, the CxOs need to be the point people for
this.
It is important that your superiors realize that you have a concrete plan of action,
and that you will immediately start working on items that will contribute to getting
the project rolling. This is an important point. All too often a project will stagnate
after the initial meeting because the supposedprojectmanager is not really sure of
what to do next. Inevitably, after a few weeks have gone by, the senior
management will have to get involved again – and that will leave a bad impression.
You have to be the driver. Once you have received the blessing of your CxOs, they
need to be comfortable knowing that they have entrusted a high profile project to
someone who can deliver.
Technology Selection
Ok, you talked in detail with the primary user, got his buy in (very important) into
this project and got the functional requirements document done and approved.
Beautiful! But before you dive into the project plan, you need to select the
technology that you will use. This can have an impact on the plan. Do you use PHP
or do you use Java? Coldfusion or Dreamweaver? Both? J2EE or .NET? Unix or
Windows? Solaris or Linux? Obviously, in a lot of companies, these questions
have already been answered and you have to follow the standards. Doesn’t mean
that you can’t be creative, however. Forinstance, even if J2EE is mandated, do you
need to use EJBs or can you get away with a connection-poolenabled servlet based
framework? JSPs or servlets wrapped around Velocity? Oracle or MySQL?
Once the language, database and OS has been determined, the next question is:
how much hardware do you need? Can you make do with one single cpu server or
do you need a n-tier hardware solution – high powered database server, mid level
app server and dinky web server? Does the web server go into the DMZ or not? Do
you connectthe app server and the database server on an isolated network
segment? Enter the wonderful world of Server Sizing and Network Architecture.
ServerSizing & Network Architecture
Now, this topic is not really an integral part of this presentation. However, this is a
skill that all project managers should have, and very few do. So we will address it
(Note that if you do not know what a DMZ is, you should get someone to assist
you in at least the network design). Lets start by assuming that we are talking about
a decent sized application requiring a n-tier architecture. We make this assumption
because this is the most difficult application to size for.
Some useful points are:
The thumb-in-the-air, “lets buy a 4-way database, application and web server”
is not a viable strategy.
In a well-designed OLTP application, it’s the database server that bears the
brunt of the work. The application server works less, and the web server
mostly twiddles its thumbs (Note that this is generally not true for packaged
solutions – most packaged solutions have a highly normalized database
structure and they also do transaction management at the application level
since they can’t rely on the nature of the underlying database – this means
that they generally require a powerful database server and an even more
powerful application server).
If this application will be accessible over the web to the external world, then
you need a DMZ, and your web server needs to sit in the DMZ.
Application and database servers should never be in the DMZ.
The application and database servers generally have a lot of network traffic
between them. You can address the inevitable “why is the system so slow”
problems in two ways:
Put the application server and the database server on their own switch OR
Buy dual Gigabit NICs for both servers. Connect the 2 servers directly
with a crossover cable using one set of NICs and use the other NIC for
normal network traffic.
So how do you size the servers? Follow this path:
Determine the peak number of users by questioning the primary user:
How many users will be on the system at peak time?
A. Don’t know.
Q. How many total users?
A. Uh, 500 or so total users.
Q. When do you expect the busiest time to be?
A. Probably end of the budget year, everybody will be trying to get their
purchase requests in.
Q. How many requests did you get with the old system, over how many
days?
A. We got about two thousand requests over a week! Why, one day alone we
got more than 500!
Ding ding ding! Breakthrough! So now we know that historically the peak usage
was 500 requests in a day. To get our final figure, we should assume that all that
usage was during one hour (500 requests/hr), treble it for good luck (well, to allow
for growth and accountfor transaction requests other than creating a purchase
request), and start our sizing calculations from there. So this gives us roughly 30
requests per minute. Now, each request can result in more than one transaction (for
example, creating a purchase request might involve – get list of vendors, get list of
parts for vendor, create purchase request, create n line items etc). You have to use
your best estimate for the average transactions/request and multiply it. For
example, assuming an average of 5 transactions per request, we get our estimated
requirement of 150 transactions per minute.
Now that the tpm number is known, you can use the TPC’s tpcC benchmarks to
look for an appropriate database server. For our example application you will see
that you need the horsepower of about your average wristwatch . Seriously, such
a result would tell me that we could make do with a single cpu 1U database server.
Given our previous assertion of relative horsepower, it stands to reason we would
need even smaller configurations for the application and web servers. Keep in
mind that you may have other constraints, like failover, that will govern your final
hardware choices. But at least you would be at the point where you would know
how much hardware you really need, then leverage some provider’s expertise in
building the closest fault tolerant system. This will minimize the investment in
hardware and make your boss happy.
ProjectPlan
Now that all the pre-requisites are out of the way, we can get down to the serious
business of determining the number and type of resources we need and the project
timeline.
First create the shell of a project plan, with the following phases:
Requirements
Design
Database design and creation
Data load
Framework design and creation
Development
Design, develop and test function 1
Design, develop and test function 2
Design, develop and test function 3
…
System Test
Implementation
You can probably see that this is slightly different than a standard watershed plan:
The design phase gets the database model implemented and populated early on.
It will be revised as the project progresses, but you a good basis on which to
start development.
The design phase also has the creation of a framework. This framework will
most likely be some “enabling” codethat will allow you to write business
level functionality without having to worry about the technical details too
much. Forinstance, if the language was Java, we could deploy Struts or
some other framework at this point.
The development phase is completely iterative, with individual pieces
functionality being designed and built.
With this approach, oncethe project is in its development phase, there will always
be something new to demo each week. This is perfect for making sure that the
project is heading down the right path at all times, as well as garnering accolades
for your capable handling of this critical project .
Once the tasks are all filled out, attach resources to them and estimate the duration.
Group related tasks together, so a single personcould potentially complete a
section of the application. Keep track of dependencies. Once the plan is filled out,
then you can look for areas where you could save time by bringing on additional
resources.
You now have a 5,000 foot level requirements document, the language, database
and OS selection, the server sizing study and selection, the network design and the
project plan. You know how long it will take, how many resources you will need
and how much it will cost. All the above steps should not take more than 2 weeks.
Now is a good time to have another meeting with the sponsor(s).Present your
findings. It is important to clearly articulate to them that the numbers are all what
you feel comfortable with, but that they are estimates. If the requirements change,
you will gladly accommodatethe changes, and you will let the sponsorknow of the
impact on the costand timeline.
Notes
Some advice on team selection:
A smart developer is one who loves writing code, and can adjust to writing
good codein any language, whether its PHP, ASP, C++ or Java.
Sometimes a programmer who has excelled in a language different from your
chosen one may still be a good choice. For instance, I prefer a developer
with several years of C/C++ experience over a developer who has several
years of Java experience only. The C++ developer has been through fire and
survived. Java is easy by comparison. For the same reason I prefer a Java
developer to a Visual Basic developer. Doesn’t mean this theory always
works – its just a hint to keep in mind.
One smart developer is better than 3 average developers.
Do not even consider a less than above average developer.
Pay more for fewer, good resources. Your project will be staffed better,
management will be easier and it will have better chances of being done
right!
Get the best DBA you can afford.
If your team size is getting larger than 4, you will need a team leader reporting
to you, who will take charge of a portion of the project.

Mais conteúdo relacionado

Mais procurados

BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
Dana Gardner
 

Mais procurados (20)

Project Management vs Task Management: What Works Best for You
Project Management vs Task Management: What Works Best for YouProject Management vs Task Management: What Works Best for You
Project Management vs Task Management: What Works Best for You
 
Focus on Data, Risk Control, and Predictive Analysis Drives New Era of Cloud-...
Focus on Data, Risk Control, and Predictive Analysis Drives New Era of Cloud-...Focus on Data, Risk Control, and Predictive Analysis Drives New Era of Cloud-...
Focus on Data, Risk Control, and Predictive Analysis Drives New Era of Cloud-...
 
User Story Writing & Estimation For Testers By Mahesh Varadharajan
User Story Writing & Estimation For Testers By Mahesh VaradharajanUser Story Writing & Estimation For Testers By Mahesh Varadharajan
User Story Writing & Estimation For Testers By Mahesh Varadharajan
 
Unum Group Architect Charts a DevOps Course to a Hybrid Cloud Future
Unum Group Architect Charts a DevOps Course to a Hybrid Cloud FutureUnum Group Architect Charts a DevOps Course to a Hybrid Cloud Future
Unum Group Architect Charts a DevOps Course to a Hybrid Cloud Future
 
DevOps and Security, a Match Made in Heaven
DevOps and Security, a Match Made in HeavenDevOps and Security, a Match Made in Heaven
DevOps and Security, a Match Made in Heaven
 
A Tale of Two IT Departments, or How Governance is Essential in the Hybrid Cl...
A Tale of Two IT Departments, or How Governance is Essential in the Hybrid Cl...A Tale of Two IT Departments, or How Governance is Essential in the Hybrid Cl...
A Tale of Two IT Departments, or How Governance is Essential in the Hybrid Cl...
 
How Big Data Paves the Path to Extreme Personalization and Amazing User Exper...
How Big Data Paves the Path to Extreme Personalization and Amazing User Exper...How Big Data Paves the Path to Extreme Personalization and Amazing User Exper...
How Big Data Paves the Path to Extreme Personalization and Amazing User Exper...
 
DevOps by Design -- Practical Guide to Effectively Ushering DevOps into Any O...
DevOps by Design -- Practical Guide to Effectively Ushering DevOps into Any O...DevOps by Design -- Practical Guide to Effectively Ushering DevOps into Any O...
DevOps by Design -- Practical Guide to Effectively Ushering DevOps into Any O...
 
Web Project Management
Web Project ManagementWeb Project Management
Web Project Management
 
Tag-Team of Workshops Provides Proven Path of Data Center Transformation, Ass...
Tag-Team of Workshops Provides Proven Path of Data Center Transformation, Ass...Tag-Team of Workshops Provides Proven Path of Data Center Transformation, Ass...
Tag-Team of Workshops Provides Proven Path of Data Center Transformation, Ass...
 
Beyond Look and Feel--The New Role That User Experience Plays in Business App...
Beyond Look and Feel--The New Role That User Experience Plays in Business App...Beyond Look and Feel--The New Role That User Experience Plays in Business App...
Beyond Look and Feel--The New Role That User Experience Plays in Business App...
 
Procure to Pay IQPC Presentation - Chaos to Control
Procure to Pay IQPC Presentation - Chaos to ControlProcure to Pay IQPC Presentation - Chaos to Control
Procure to Pay IQPC Presentation - Chaos to Control
 
How Malaysia’s Bank Simpanan Nasional Implemented a Sweeping Enterprise Conte...
How Malaysia’s Bank Simpanan Nasional Implemented a Sweeping Enterprise Conte...How Malaysia’s Bank Simpanan Nasional Implemented a Sweeping Enterprise Conte...
How Malaysia’s Bank Simpanan Nasional Implemented a Sweeping Enterprise Conte...
 
UX HACKS. Better Experiences. Faster. Leaner. Smarter.
UX HACKS. Better Experiences. Faster. Leaner. Smarter.UX HACKS. Better Experiences. Faster. Leaner. Smarter.
UX HACKS. Better Experiences. Faster. Leaner. Smarter.
 
Ultimate Guide to Website Pricing
Ultimate Guide to Website PricingUltimate Guide to Website Pricing
Ultimate Guide to Website Pricing
 
Why working in Sales at Canonical is great!
Why working in Sales at Canonical is great!Why working in Sales at Canonical is great!
Why working in Sales at Canonical is great!
 
Coloqui engr 245 lean launch pad stanford 2020
Coloqui engr 245 lean launch pad stanford 2020Coloqui engr 245 lean launch pad stanford 2020
Coloqui engr 245 lean launch pad stanford 2020
 
BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
BSM and IT Data Access Improvement at Swiss Insurer and Turkish Mobile Carrie...
 
Verix ENGR 245 Lean LaunchPad Stanford 2018
Verix ENGR 245 Lean LaunchPad Stanford 2018Verix ENGR 245 Lean LaunchPad Stanford 2018
Verix ENGR 245 Lean LaunchPad Stanford 2018
 
User stories applied ch4
User stories applied ch4User stories applied ch4
User stories applied ch4
 

Semelhante a Project_Estimation

The principles of agile development
The principles of agile developmentThe principles of agile development
The principles of agile development
Rajat Samal
 
Breaking Through the Roadblocks of a New ELM Implementation eBook
Breaking Through the Roadblocks of a New ELM Implementation eBookBreaking Through the Roadblocks of a New ELM Implementation eBook
Breaking Through the Roadblocks of a New ELM Implementation eBook
Jason Emanis
 
Open Source adoption in a Mexicon Second tier Bank
Open Source adoption in a Mexicon Second tier BankOpen Source adoption in a Mexicon Second tier Bank
Open Source adoption in a Mexicon Second tier Bank
WSO2
 
How to Achieve Per-Project Profitability
How to Achieve Per-Project ProfitabilityHow to Achieve Per-Project Profitability
How to Achieve Per-Project Profitability
williamsjohnseoexperts
 

Semelhante a Project_Estimation (20)

about start up for you 12
about start up for you 12about start up for you 12
about start up for you 12
 
The principles of agile development
The principles of agile developmentThe principles of agile development
The principles of agile development
 
Breaking Through the Roadblocks of a New ELM Implementation eBook
Breaking Through the Roadblocks of a New ELM Implementation eBookBreaking Through the Roadblocks of a New ELM Implementation eBook
Breaking Through the Roadblocks of a New ELM Implementation eBook
 
Dev ops implementation your go-to guide
Dev ops implementation  your go-to guide Dev ops implementation  your go-to guide
Dev ops implementation your go-to guide
 
How To Plan a Software Project
How To Plan a Software ProjectHow To Plan a Software Project
How To Plan a Software Project
 
Open Source adoption in a Mexicon Second tier Bank
Open Source adoption in a Mexicon Second tier BankOpen Source adoption in a Mexicon Second tier Bank
Open Source adoption in a Mexicon Second tier Bank
 
6 Steps to Confirm Successful Workday Deployment
6 Steps to Confirm Successful Workday Deployment6 Steps to Confirm Successful Workday Deployment
6 Steps to Confirm Successful Workday Deployment
 
Top Web Development Challenges & How To Tackle Them?
Top Web Development Challenges & How To Tackle Them?Top Web Development Challenges & How To Tackle Them?
Top Web Development Challenges & How To Tackle Them?
 
Rocket jones 4 stage process
Rocket jones 4 stage processRocket jones 4 stage process
Rocket jones 4 stage process
 
Course project scenario the course project scenario in this c
Course project scenario the course project scenario in this cCourse project scenario the course project scenario in this c
Course project scenario the course project scenario in this c
 
The less-discussed benefits of discovery workshops.ppt
The less-discussed benefits of discovery workshops.pptThe less-discussed benefits of discovery workshops.ppt
The less-discussed benefits of discovery workshops.ppt
 
Rhok 101 for change makers - with an agile flavour
Rhok 101 for change makers - with an agile flavourRhok 101 for change makers - with an agile flavour
Rhok 101 for change makers - with an agile flavour
 
World Wide Technology Webinar Transcript - Software Defined Networking
World Wide Technology Webinar Transcript - Software Defined NetworkingWorld Wide Technology Webinar Transcript - Software Defined Networking
World Wide Technology Webinar Transcript - Software Defined Networking
 
Session slides
Session slidesSession slides
Session slides
 
Session slides
Session slidesSession slides
Session slides
 
Session slides
Session slidesSession slides
Session slides
 
How to Achieve Per-Project Profitability
How to Achieve Per-Project ProfitabilityHow to Achieve Per-Project Profitability
How to Achieve Per-Project Profitability
 
Near east university
Near east universityNear east university
Near east university
 
Intranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to considerIntranet Project: Roll-out Strategy & Pain Points to consider
Intranet Project: Roll-out Strategy & Pain Points to consider
 
GuideIT - Virtual Economies of Scale
GuideIT - Virtual Economies of Scale GuideIT - Virtual Economies of Scale
GuideIT - Virtual Economies of Scale
 

Project_Estimation

  • 1. ProjectEstimation Naeem Bari Director IT CEQUEL III Naeem.bari@cequel3.com Naeem@cyweb.com Summary Project Management 101: This talk introduced you to the fundamentals of project management. Estimating costs, timeline, putting together a project plan and a team. Also includes an intro to server sizing that some may find useful. Scenario You have just been asked by the CIO and the CFO to build a new website that will handle purchase requests for your company. The CxOs outline (very sketchily) the tasks that this new system is expected to perform. Lots of hand waving involved. On-line… mumble mumble… easy to use… mumble mumble… integrate with accounting system… blah blah… scalable, fault tolerant etc etc. After the hand waving they look you squarely in the eye and ask – “so how much will this cost and how long will this take?” Congratulations, you are a project manager. The Initial Response Never give an estimate of the ETA and costimmediately. Whatever you say will be wrong – guaranteed. Instead, ask the following questions: Why do we need a new purchasing system? What is it replacing? Why is the old system inadequate? Why does it need to be online? Who is the project sponsor?This is the personwho will acceptwhat you deliver, authorize payments etc. The CFO, most likely. Who is the primary user? This is an important question. More so than who is the project sponsor. This is the personwho will be the highest ranking day to day operational user of the application. This will rarely be the CFO. More than likely it will be some direct report of the CFO – maybe a controller, maybe a purchasing director. This person can make or break your project. The CFO will do what this person recommends. This is the person who will help you gather requirements for the application, identify users, help with the design and help with testing.
  • 2. Can we buy vs. build? This question usually has a more straightforward answer than one would think. This can be answered by determining how much money the sponsoris willing to spend if we can buy an OTS solution. Explain that apart from the purchase cost, they also have to budget for implementation, which can be quite costly. More often than not, you pay more money for a packaged solution but you get more functionality. If your sponsorsdon’thave the money or don’trequire the functionality, then it might be better to build. Is there a constraint on when this application needs to be completed? End of the budget year? End of the quarter? The sponsorprobablyhas some pre- conceived notion of when the application needs to be available. If a deadline is provided, ask the obvious follow up questions: Why the deadline? What will be the impact if we can’t make the deadline? This is a difficult line of questioning, but one that needs to be conducted. It is usually easier to determine when you won’t be able to make a deadline than to determine when you will be able to meet one. It is way better to manage expectations up front than to have to do damage control later. Once this initial line of questioning is complete, clarify your role to the CxOs, outline your next steps, outline your approachand explain your expectations from them. Bullet points express it best: Explain that your role will be that of the project manager. You may also participate in the development, depending on the size of the team that you will need (and that you will communicate the estimated budget and team size once you have put together the first draft of the project plan). Explain to them that your next steps are to: Have a detailed discussionwith the primary user. Draft a 5,000 footlevel functional requirements document within a week at most. Have the sponsorand primary user approvethe document – or at least nod their heads. Develop the project plan that you will follow. Outline how you perceive the project to be implemented. Tell them that after the requirements have been gathered, the project plan and budget has been approved and the team has been assembled, you will implement the application in an incremental fashion, with pieces of the application coming online at various milestones (this is usually the best way to go, if possible – the traditional watershed approachrequires the customer to wait too long
  • 3. before seeing anything – and it smacks too much of the recently deceased $200/hr dotcom days ). Explain to them that you expect a level of cooperation from them. Probably weekly meetings to begin with, then switching over to as needed. They also need to commit to helping you convince the users to buy into the application. This requires them to be excited about this project, and to project that level of excitement to their staff as well. Change is hard, and users don’tlike it unless they are excited by what you are doing – or are forced by their bosses. Either way, the CxOs need to be the point people for this. It is important that your superiors realize that you have a concrete plan of action, and that you will immediately start working on items that will contribute to getting the project rolling. This is an important point. All too often a project will stagnate after the initial meeting because the supposedprojectmanager is not really sure of what to do next. Inevitably, after a few weeks have gone by, the senior management will have to get involved again – and that will leave a bad impression. You have to be the driver. Once you have received the blessing of your CxOs, they need to be comfortable knowing that they have entrusted a high profile project to someone who can deliver. Technology Selection Ok, you talked in detail with the primary user, got his buy in (very important) into this project and got the functional requirements document done and approved. Beautiful! But before you dive into the project plan, you need to select the technology that you will use. This can have an impact on the plan. Do you use PHP or do you use Java? Coldfusion or Dreamweaver? Both? J2EE or .NET? Unix or Windows? Solaris or Linux? Obviously, in a lot of companies, these questions have already been answered and you have to follow the standards. Doesn’t mean that you can’t be creative, however. Forinstance, even if J2EE is mandated, do you need to use EJBs or can you get away with a connection-poolenabled servlet based framework? JSPs or servlets wrapped around Velocity? Oracle or MySQL? Once the language, database and OS has been determined, the next question is: how much hardware do you need? Can you make do with one single cpu server or do you need a n-tier hardware solution – high powered database server, mid level app server and dinky web server? Does the web server go into the DMZ or not? Do you connectthe app server and the database server on an isolated network segment? Enter the wonderful world of Server Sizing and Network Architecture.
  • 4. ServerSizing & Network Architecture Now, this topic is not really an integral part of this presentation. However, this is a skill that all project managers should have, and very few do. So we will address it (Note that if you do not know what a DMZ is, you should get someone to assist you in at least the network design). Lets start by assuming that we are talking about a decent sized application requiring a n-tier architecture. We make this assumption because this is the most difficult application to size for. Some useful points are: The thumb-in-the-air, “lets buy a 4-way database, application and web server” is not a viable strategy. In a well-designed OLTP application, it’s the database server that bears the brunt of the work. The application server works less, and the web server mostly twiddles its thumbs (Note that this is generally not true for packaged solutions – most packaged solutions have a highly normalized database structure and they also do transaction management at the application level since they can’t rely on the nature of the underlying database – this means that they generally require a powerful database server and an even more powerful application server). If this application will be accessible over the web to the external world, then you need a DMZ, and your web server needs to sit in the DMZ. Application and database servers should never be in the DMZ. The application and database servers generally have a lot of network traffic between them. You can address the inevitable “why is the system so slow” problems in two ways: Put the application server and the database server on their own switch OR Buy dual Gigabit NICs for both servers. Connect the 2 servers directly with a crossover cable using one set of NICs and use the other NIC for normal network traffic. So how do you size the servers? Follow this path: Determine the peak number of users by questioning the primary user: How many users will be on the system at peak time? A. Don’t know. Q. How many total users? A. Uh, 500 or so total users. Q. When do you expect the busiest time to be?
  • 5. A. Probably end of the budget year, everybody will be trying to get their purchase requests in. Q. How many requests did you get with the old system, over how many days? A. We got about two thousand requests over a week! Why, one day alone we got more than 500! Ding ding ding! Breakthrough! So now we know that historically the peak usage was 500 requests in a day. To get our final figure, we should assume that all that usage was during one hour (500 requests/hr), treble it for good luck (well, to allow for growth and accountfor transaction requests other than creating a purchase request), and start our sizing calculations from there. So this gives us roughly 30 requests per minute. Now, each request can result in more than one transaction (for example, creating a purchase request might involve – get list of vendors, get list of parts for vendor, create purchase request, create n line items etc). You have to use your best estimate for the average transactions/request and multiply it. For example, assuming an average of 5 transactions per request, we get our estimated requirement of 150 transactions per minute. Now that the tpm number is known, you can use the TPC’s tpcC benchmarks to look for an appropriate database server. For our example application you will see that you need the horsepower of about your average wristwatch . Seriously, such a result would tell me that we could make do with a single cpu 1U database server. Given our previous assertion of relative horsepower, it stands to reason we would need even smaller configurations for the application and web servers. Keep in mind that you may have other constraints, like failover, that will govern your final hardware choices. But at least you would be at the point where you would know how much hardware you really need, then leverage some provider’s expertise in building the closest fault tolerant system. This will minimize the investment in hardware and make your boss happy. ProjectPlan Now that all the pre-requisites are out of the way, we can get down to the serious business of determining the number and type of resources we need and the project timeline. First create the shell of a project plan, with the following phases: Requirements Design
  • 6. Database design and creation Data load Framework design and creation Development Design, develop and test function 1 Design, develop and test function 2 Design, develop and test function 3 … System Test Implementation You can probably see that this is slightly different than a standard watershed plan: The design phase gets the database model implemented and populated early on. It will be revised as the project progresses, but you a good basis on which to start development. The design phase also has the creation of a framework. This framework will most likely be some “enabling” codethat will allow you to write business level functionality without having to worry about the technical details too much. Forinstance, if the language was Java, we could deploy Struts or some other framework at this point. The development phase is completely iterative, with individual pieces functionality being designed and built. With this approach, oncethe project is in its development phase, there will always be something new to demo each week. This is perfect for making sure that the project is heading down the right path at all times, as well as garnering accolades for your capable handling of this critical project . Once the tasks are all filled out, attach resources to them and estimate the duration. Group related tasks together, so a single personcould potentially complete a section of the application. Keep track of dependencies. Once the plan is filled out, then you can look for areas where you could save time by bringing on additional resources. You now have a 5,000 foot level requirements document, the language, database and OS selection, the server sizing study and selection, the network design and the project plan. You know how long it will take, how many resources you will need and how much it will cost. All the above steps should not take more than 2 weeks.
  • 7. Now is a good time to have another meeting with the sponsor(s).Present your findings. It is important to clearly articulate to them that the numbers are all what you feel comfortable with, but that they are estimates. If the requirements change, you will gladly accommodatethe changes, and you will let the sponsorknow of the impact on the costand timeline. Notes Some advice on team selection: A smart developer is one who loves writing code, and can adjust to writing good codein any language, whether its PHP, ASP, C++ or Java. Sometimes a programmer who has excelled in a language different from your chosen one may still be a good choice. For instance, I prefer a developer with several years of C/C++ experience over a developer who has several years of Java experience only. The C++ developer has been through fire and survived. Java is easy by comparison. For the same reason I prefer a Java developer to a Visual Basic developer. Doesn’t mean this theory always works – its just a hint to keep in mind. One smart developer is better than 3 average developers. Do not even consider a less than above average developer. Pay more for fewer, good resources. Your project will be staffed better, management will be easier and it will have better chances of being done right! Get the best DBA you can afford. If your team size is getting larger than 4, you will need a team leader reporting to you, who will take charge of a portion of the project.