PLEASE NOTE: We'd prefer you send your answers to [email protected] rather than post them publicly in another Gist, or in comments on this Gist ;-)
The following questions all describe specific problematic project management situations, and ask you how you'd deal with them.
You have recently joined a software team and have been asked to provide project management guidance. The team consists of four developers, and is quite well "gelled". To date, the team has been following a Kanban & Release Train style approach to completing tasks. They are reasonably productive, and project stakeholders are generally happy with the team's output.
However, stakeholders have a niggling problem which they'd like you to address: they want reasonably accurate information about when future work will be completed. They've tried asking the team's developers to estimate project stories, but this hasn't yielded meaningful information. Either the estimates are so poor that they might as well not exist, or the direction of work has changed so much that stories that were expected to be complete are currently un-started and on the back-burner.
How would you guide the team to a state in which it was producing reliable estimates and timelines?
You have been asked to manage a new "greenfield" project for a Rapid River client. The client has given you some high-level instructions on what they'd like to achieve:
- The client owns three businesses with which fitness trainers can own an account with.
- The client would like to build a backend system which consolidates trainers’ profiles from each of these three businesses into one universal profile, for internal use by the client.
- The new project will provide an API through which these universal profiles can be accessed.
- Profile information from the existing businesses will have to be collected into the new project, and then normalized to fit a common profile format.
They've also indicated that they'd like to start with a team size of two developers and yourself.
You're not convinced that this information is enough to go on to ensure that we deliver what it is that our client really wants.
What would you do next in this situation to maximize the likelihood that this project ultimately is successful?
You have been asked to take over the management of a team of software developers. The team is in the midst of building out an overhaul of a key component of an existing web application. To date, the project has been managed by the team's lead developer. Although they've made reasonable progress, things are starting to go awry:
- The tracking of tasks has moved from the team's project management solution into a shared spreadsheet.
- The project has a test suite, which was previously always verified to be passing before new code was accepted. This practice has however been abandoned, as recent work on the overhaul has caused some tests to fail. The team plans to fix this “later”.
- Developers are having difficulty getting their work accepted, as they frequently find their changes conflict with the recent work of others.
- Bugs reported by QA and product owners are regressing, which is causing no end of frustration for everyone involved.
At the outset of the overhaul, the roadmap and timeline seemed quite clear. But now nobody can talk to how close the team is to finishing. Stakeholders would like to regain a reasonable understanding of where the project is.
What steps would you take to address this state of affairs, and to get the project to a place where stakeholders can again understand what the status of the project is?
This section's purpose is to ask you to demonstrate general technical ability in designing and deploying software applications.
Each voter can vote in zero or more referenda. Each referendum has one or more questions, and each question is a yes/no vote. Write the simplest normalized schema to describe this in generic SQL statements or as an entity-relationship diagram. Point out where the indexes would be if you want to quickly know the results of a given referendum question, but you never expect to query a single voter's voting record.
Your client plans to host their web application on AWS. When would you advise (a) deployment in a single availability zone, (b) deployment in multiple availability zones in a single region (c) deployment in multiple regions? What operational difficulty or complexity, if any, is added as you go from (a) to (b) to (c)?