This post is inspired by Jurgen Appelo’s blog post, where he asks top 100 questions that a software developer should know. The questions are from different categories which covers various areas of software engineering body of knowledge.
Though, I’d like to add that a software developer, most of the time, is unaware of many of the questions raised here. Unless, she has been into management, or has done some project management as a part of her job description. These questions may be posed to senior developers who have had involvement in such activities, have more than 6 years of experience. But definitely, is not expected from a junior software developer.
Some of the terms that are used frequently:
Buyer, which means Customer, or Client
Seller, which means you, or service provider, or consultant, contractor, etc.
1. What are triple constraints? How many of the three variables scope, time and cost can be fixed by the customer?
Triple constraints are: Cost, scope, and time. But according to Rita Mulchay, it also includes Quality and Customer Satisfaction.
Customer can set any or all of the variables, depending upon the project scenario. A seller(the one providing solution services) must consider the contract type (Fixed Price, Cost Reimbursable, or Time and Material, etc) before signing the contract.
2.Who should make estimates for the effort of a project? Who is allowed to set the deadline?
Ideally, team – the development team – should provide the realistic estimates, based upon the work breakdown structure.
But the “deadline” may be imposed by the customer. Even in that case, realistic estimates should come from the development team. Those estimates should be shared with customer, along with the options of Crashing, Fast Tracking the critical path - or removing the test cycles, cutting scope, etc.
Impact of every change should be notified to customer; note that not only “additions” are changes. A customer may ask to remove a part of scope; which, is also a change.
3.Do you prefer minimization of the number of releases or minimization of the amount of work-in-progress?
Minimize the number of release shall help in configuration management of the release. Minimizing the amount of work in progress shall help focus on specific areas/functionality.
Btw, this really depends upon triple constraint and other variables available. For instance, do we have enough time to build release? How often can we afford that? What are the number of resources dedicated to this project? What are customer requirements? What is the project methodology being used? If its Iterative Model, then you might limit the number of releases to the specific functionality. For instance, if there are 10 functional areas of the application, then you decide that based upon available time and resources, you will roll out 2 functions per release basis.
Moreover, iterative model helps buyer as well as the seller to focus on specific areas of the application. Plus, it helps buyer see the result of their requirement as soon as you move into the development phase.
4.Which kind of diagrams do you use to track progress in a project?
Gantt chart/bar chart
Basically you can use any chart or diagram that displays the task name and start/finish dates. So, you can mark the current date, everything beyond that mark should have been finished, and everything after that line, should in pending-completion state.
5.What is the difference between an iteration and an increment?
Think of Iterative-model as repeatable. You can repeat a functional requirement and roll out the release as many times as you want, unless the buyer is satisfied.
For instance, you have an application that has 10 functionality in it. So, you plan the increments with 2 functionality per release. So, you roll out the release with 2 functionality, buyer shall test, provide their feedback, you will “iterate” through the 2 functionality, fix bugs, add changes, etc, and again roll-out a new release or fix with these two updated functionality. This can iterate as much as you decide to.
6.Can you explain the practice of risk management? How should risks be managed?
PMI defines the processes involved in the risk management, is, Risk Identification, qualitative risk analysis, followed by quantitative risk analysis, then risk response planning, and then risk monitoring and controlling throughout the project life cycle.
Please know that risk management is vast subject in itself. There are people who are hired by organizations just for risk management purpose.
Just so you may get an idea, what each process means, let me elaborate a bit.
Risk identification is a process where you close your eyes, and jot down each and every item that you can think of as a risk.
Quantitative risk analysis would allow to identify the probability and impact of a risk.
Qualitative risk analysis is the process of assigning the levels. For instance, on a scale of High, Medium, and Low.
And then preparing the risk response;
Following are the risk response strategies that you can use:
Avoid risk: Avoid the risk. For instance, remove the functionality or module from the project.
Transfer the risk: Transfer the responsibility to someone else. For instance, sub-contract.
Mitigate risk: Try to minimize the impact of the risk. For instance, have insurance.
Accept the risk: If has to happen, let it happen. Can include risks with lower impacts.
A point to note is that risk can be of the positive nature as well. That’s called positive risk. Managers tend to take positive risks to for the benefit of the project.
A petty example of positive risk could be that, a change particular hardware equipment price, due to change in government, or for instance, due to new policies to increase foreign direct investment (FDI) in the country. So, this can be called a positive risk, and you would want to take that risk. So your response to this sort of risk is to “enhance”, the chances of its occurrence. I don’t know how you’d “influence” the state departments to enhance the likelihood of such a policy by federal government; requires “state” level professional/personal relations (0;
7.Do you prefer a work breakdown structure or a rolling wave planning?
One answer? Work breakdown structure.
Why? Because work breakdown structure signifies the scope of the work. Anything and everything that is part of WBS is part of scope – and nothing else needs to be done. Scope of work is clear.
But sometimes, for larger projects; projects that spans over a period of multiple years, in which scope of the work is not clear – due to the nature of the project. In such cases, what you do is called “rolling wave planning”. You identify the scope of work for year 1, for instance if its 6 year project, and start working over it(design, development, testing, etc); and as soon as you move forward the scope for rest of the work gets clearer, customer gets more understanding of the business, changes coming in; then, you update the scope to add more functionality, for instance for the 2nd year. I hope you get the idea.
Note that, in either case, large project or smaller project, you must use WBS – why? Because WBS clearly identifies the scope of work; the work that needs to be done. Its clear to you, your customer, your team – and everyone.
8.What do you need to be able to determine if a project is on time and within budget?
Earned value management; this includes variance analysis.
Earned value management is a project management technique that allows you to identify where the project currently stands; with respect to actual budget, actual time-line; and answer the questions like, how much more money is required to finish the project, how much more time is require to finish the work, what was originally planned, how much has actually been spent, what should have been spent?
Cost Performance Index(CPI) tells you about the cost, Schedule Performance Index(SPI) tells you about the project schedule. A CPI value of more than 1 means project is under budget; an SPI value of more than 1 means the project is ahead of schedule.
As a side note, if this may interest you, a downside with the EVM is that it has no provision to measure project quality; which means, it is possible for EVM to indicate a project is under budget, ahead of schedule and scope completed, but still have unhappy clients. Look for workarounds, because the end result of every project should be “Delighted customer”.
9.Can you name some differences between DSDM, Prince2 and Scrum?
DSDM is Dynamic Systems Development Method, is software development method, uses iterative and incremental models with RAD/JAD strategies.
Prince2 is a process based project management methodology; provides specific set of processes defining what, when and how an activity shall be performed and by whom over the life of a project.
Scrum, is a project management method, inclines more towards the iterative, incremental project management – an attribute of Agile software development methodologies.
10.How do you agree on scope and time with the customer, when the customer wants too much?
I would "discuss" - with the customer - the impact of constraints.
In my experience, sales (sales department) tend to promise exceptional software with “exceptional” timelines. Now, exceptional timelines may be ok, but unrealistic timeline is not ok.
What would your customer think when you will tell them that you have slipped a deadline; and then what would be the customer’s reaction if you continue to slip the timelines.
You will find yourself with following major reasons whenever you end up in the situation above:
Major Reason 1: Sales! In order to “attain” their targets, the Sales tend to promise timelines which are only achievable if either customer is dead – no impact of timeline – or if you resources are humanoids. If you know what I mean. If you don’t know, then I am “really” talking about the realistic timelines. Usually timelines are “imposed” to the team, and they rub their asses off to get the work done.
Following is how the whole team ends up:
Major Reason 2: Alternatively, the “imposed” time-lines can come directly from your boss. Yup! Not sales, but your BOSS! A boss, who “once” was a developer, and can “assume” that a work worth 4 days can be squeezed into 1 day because of latest Intel Core i7 machines.
This decision usually comes from a boss who doesn’t know much project management. Who may have been a good coder some time back, and believes that the task is achievable in a few nights. These are those that are promoted to a position out of an "affection", Hank Gilman calls them Accidental Managers; while PMI calls this act of affection, Hallo Affect.
A simple example could be, when you look at a good looking, suited/booted person at a shopping plaza, you tend to believe that she is an educated, gentle woman. Contrary to this, Hallo Affect says, that she could be anyone. “a blossoming movie star, an award-winning scientist, or a bank-robber or an attempted serial killer.
So, basically its against the theory of WYSIWYG (0;
Or the only other reason could be that you are too lazy of a developer. You take time, more than it is required to develop a functionality.
Anyway, the whole product life cycle ends up:
Thats about it. I plan to respond to rest of the 90 questions, as soon I get some time.
Until then, enjoy!