Giter Club home page Giter Club logo

frame's Introduction

ImaginaryCloud Projects methodology

All projects must have a git repository by codebase, continuous integration, automated code review, and use virtual machines for development.

  1. How it works
    1. Who’s who
    2. Project lifecycle
    3. Quality assurance
    4. How do we track time
    5. Go live (WIP)
  2. Project setup
    1. Create the project git repository (Bitbucket)
    2. Setup local git
    3. Install, configure and test the virtual machine (Vagrant + Ansible)
    4. Configure continuous integration
    5. Configure automated code review

How it works

Top

Who’s who

Manager – Is the person responsible for the management of the project by helping the client to define, monitor and control the budget, scope and schedule of the project. In order to achieve this, the manager will/can act as project manager, account manager and/or product-manager proxy.

Operative – An operative member is a someone responsible for the execution of the operational project tasks, like the design or development of a feature. Developers and designers are usually classified as operative members of the project. But some complex projects might also have system administrators or other more specific technical members.

Specialist – A specialist is someone that joins the project to provide inputs on a specific domain, but is usually not executing operational work on a regular basis. For example, a person that joins a project workshop to review the architecture to accommodate more users in the platform (i.e. review the architecture to scale the system).

Admin – The admin role is assigned to elements that need access to the project to perform administrative tasks, like for example, checking time-logs to issue invoices.

Top

Project lifecycle

Any project has a specific life-cycled and is composed by three stages:

  1. Setup
  2. Planning, Delivery & Monitoring
  3. Close

1. Setup Phase

A project is in the setup phase when a proposal is accepted by the client and the project manager is already identified. At this stage, the following tasks need to be executed in order to ensure that everything has been considered.

No. Action Responsibility Participants Guidance
1. Setup project on Intra Manager Redmine Procedures
2. Internal email to project team Manager Email template
3. Internal KO meeting Manager Project Team Internal KO meeting template
3a. Prepare for KO meeting Manager Project Team KO meeting template
4. KO meeting Manager Project Team file(KO meeting minutes template)
5. Git setup Operative Manager Git Procedures
6. Addition of client to Redmine and info mailout Manager Document

All documents which are output from this process must be uploaded to the Files section of the project for reference by the team.

2. Planning, Delivery & Monitoring Phase (and troubleshooting)

After the project Kick-off meeting, the project enters the Planning, Delivery & Monitoring Phase

From a project management perspective, the objective of this phase is to continuously plan the project, monitor the execution against the plan and take the necessary actions to re-plan and put execution back on track.

Iterations

A project is developed in iterations, with the usual duration of two weeks. The duration of an iteration may vary, at it is usually defined at Kick-off by the following stakeholders: Business Manager, Client and Technical Manager. Iterations smaller than one week are sign of bad-planning, and should be addressed at the Project Management Office (PMO) meeting (see below).

Iterations play a key role in the project execution, and should have the following lifecycle:

Day Milestone Purpose
First iteration day (preferably Friday) Iteration Planning Plan the iteration and identify major issues to approach at the PMO meeting. The iteration planning procedure can be found at [[Iteration Planning Procedure]]
Every Day Stand-up Meeting Identify work done on the previous day, plan the current day and identify blocking issues and corrective actions. The Stand-up Meeting Procedure can be found at [[Stand-up Meeting Procedure]]
Every Monday Project Management Office (PMO) Meeting Meet with Portfolio Managers / Managing Directors to highlight major issues, and come up with solutions.
Every Monday Project Report Deliver written report to client, business developer and other relevant stakeholders about the status of the project. Report should include: Achievements of previous iteration, plan for next iteration, major issues and solutions and effort delivered on last iteration. Reports are usually delivered by mail, and a template can be found at [[Project Weekly Reporting Procedure]]
Last iteration day (preferably Thursday) Iteration packaging Package the iteration builds, and deliver to client / relevant stakeholders.
First (next) iteration day (preferably Friday) Feedback meeting Meet with the client following the iteration packaging to get their feedback in a clear, structured way. On the meeting, plan the next iteration.

Notes on the schedule

  • A rule of thumb: if someone outside the project enters the project Roadmap separator, and can’t correctly identify the date of the next delivery, the project is not correctly planned.
  • The “versions” assigned in any project should match the iterations and respective deadlines.
  • Some projects have an ICEBOX version, to store all issues that were identified but are not planned yet (i.e. they are placed in the ICEBOX for later).
  • This schedule was designed to match when other relevant meetings inside ImaginaryCloud take place. Hence, the suggesting timings are important to follow.
  • Alongside with the schedule, the Project Manager should conduct periodic meetings with the client to re-plan the on-going iteration.
  • All projects vary, so the Project Manager should judge how best to time their meetings.
Troubleshooting

There are possible scenarios and actions to take if things go off-track.

Category Problem Possible solutions
Timing Issues taking longer to deliver than expected Do a toot cause analysis with the team (e.g. drawing a Fishbone Diagram), highlight solutions for the problem and present to the client for decision. Do it in coordination with the Business Manager. Solutions might include de-scoping of issues, adding staff to the team, replace or dismiss a team member, re-design and re-implement a module in the application, among others.
Client Client decides to change scope Re-plan the project, estimate the impact in cost and schedule and present the new plan to the client for approval. Do it in coordination with the Business Manager.
Client Client needs more support on other areas Coordinate with the Business Manager what areas need to be addressed, design a plan and present to the client for approval. Plan might include reinforcement of the team with new competences, or outsourcing of tasks that are not core to ImaginaryCloud (e.g. market study, development of a promotional movie clip, etc).

3. Close Phase

After successful delivery of the artefacts, or upon a project cancelation request by a relevant stakeholder, the project enters the close phase.

On this phase, the following tasks need to be executed:

  1. The Manager should schedule a [[Project Close Meeting]]
  2. The Manager ask the client to fill a [[Satisfaction Survey Questionnaire]], if they have not recently responded to this.
  3. A follow-up email to this meeting should be sent covering all that was discussed and thanking them for choosing to work with us.
  4. We ensure the client is on our newsletter list.

Top

Quality assurance

  1. We use Continuous integration on all our projects.
    1. All our code is developed under git repositories on bitbucket.org and is managed using the gitflow workflow
    2. We use semaphoreci.com for automated testing
    3. We use www.codacy.com for code quality review.
    4. And our pull requests are quality checked by the QA team.

Top

How do we track time

At ImaginaryCloud, time reporting is an important activity that every collaborator of must perform. It ensures that all effort is assigned to the correct activities. This is the base of all decision making affecting proposals, on-going projects and even the design of internal procedures.

As Imaginary Intra is the official tool for Project Management on ImaginaryCloud, time must be reported in an issue open for the task at hand. This means that every collaborator must never start working on a tasks without having an issue open for it. This includes tasks specific to project, proposals or management (i.e. interviews, coaching, etc).

Some projects require team members to report time on an external tool (e.g. Assembla, Pivotal Tracker, Excel, etc), with specific rules for that project. Nevertheless, the cost is calculated internally through Imaginary Intra. As a result, the team member must also report the time on this tool.

Time spent on an issue includes understanding the issue, meetings clarifying scope, design of the technical solution, coding, testing, etc.

Try to group project tasks to take chunks of half a day or a full day. At the end of day, 8h should be distributed among the issues worked during the day.
To simplify procedures and account for context switching, the minimum reporting time for each issue is half an hour.

Because projects have different billing cycles, time should be reported at the end of the working day.

You must also book time spent on Holidays and Absences, in the same way as in project issues, in the Holidays and Absences project.

The following tools are proposed to track time during the day:

Top

Go Live

a paragraph about the importance of going live

Denpeding if it is a web project, a mobile project or both, several actions need to be taken into account before going live.

Here is a list of the most relevant ones:

Web applications

For Web applications, the following list is important:

  • Setup meta information
    • For search engines consider at least meta description and title
    • For social networks consider at least og:title, og:url, og:description and og:image, as seen here here. The result can be tested here, and the guidelines for og:image can be seen here.

Setup Exception Notification with Redmine

Top

Project setup

Top

Create the project git repository

  1. https://bitbucket.org/imaginarycloud/
  2. Repositories → Create repository
  3. Set imaginarycloud as owner

Top

Setup local git

Setup local directory (Create directory for the project, Initialize a git repo and add a remote)

  1. mkdir path/to/new/project
  2. cd path/to/new/project
  3. git init
  4. git remote add origin [email protected]:imaginarycloud/project_name.git
  5. Commit away!

Top

Install, configure and test the virtual machine

  • We use Vagrant to configure virtual development environments. It is used as a wrapper around VirtualBox virtualization software.
  • Ansible is a software platform for configuring and managing computers. We use it together with Vagrant for configuration management.

Install VirtualBox

https://www.virtualbox.org/wiki/Downloads
https://www.vagrantup.com/downloads.html

Install Vagrant

https://www.vagrantup.com/downloads.html

Install Ansible (mac)

$ brew install ansible

Look for configuration examples on the vagrant_ansible_examples folder

To try the examples, just copy the files from the example you choose to your project git base folder and do:

  • Start the machine (The first time it will take some minutes to load everything)
$ vagrant up

Note: Sometimes (depending of the Vagrantfile configuration, the script might ask you for your host machine password. This only happens if a private network and NFS shared folders are configured on the Vagrantfile.
This is a good practice for bigger projects because it speeds up the disk access on the shared folders.

If all goes well, you should now be able to access the guest machine services on the localhost port or private IP defined on the “Vagrantfile”
To access the machine via ssh you can do:

$ vagrant ssh

Now you can see that the “/vagrant” folder of the machine is in sync with yout base project folder on the host machine.

  • Stop the machine
$ vagrant halt
  • Destroy the machine
$ vagrant destroy

Top

frame's People

Contributors

andrefbsantos avatar gamafranco avatar paulooliveira avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.