3. Learn the problem
Customers don’t know what they want
Requirements change
Customers have unreasonable timelines
Communication gaps exist
Developers don’t understand politics
6. • Development environments
• Collaboration tools
• Continuous Integration
• Strict Coding standards
Development
Foundations
our stack.>>
7. • Distributed revision Control
• Source Code Management
• Issue Tracking
Source Control &
Issue Tracking
http://www.git-tower.com/blog/workflow-of-version-control/
8. • Unit, System, End to End Testing
• Strict Coding standards
• Reproducible and portable development
environments
Continuous
Integration
GITLAB
CI
9. .FRAMEwork
code name: Jinx
• Robust PHP 5.5+ framework
• Advanced features
• Small memory footprint
• Fully PSR Compliant
• 100% Unit Tested and Documented
• Composer for PHP dependencies
• Bower for client side dependencies
10. A toolkit for Long
Term Digital Data
Preservation
Jenkins CI
Issue tracking
Continuous integration
Programming languages
Testing
For more go to: http://pericles-project.eu/
Notes de l'éditeur
We are a small company of 14 people. Last fiscal year we had revenues of about a million. We maintain a revenue growth of 20% for the last 3 years (which is I guess a good number). This is coming from 19 projects (large and small). 70% of our profits come from abroad.
And we offer this line of services: SW Development, ICT Consulting, Integration
BUT, we do not have a single product. We are a services company.
In principle we solve problems through technology and innovation. We listen to our clients, we work with the end users, we analyze their needs and we design the best possible solution for each particular case. We implemented it by developing a workable system, usually with the help of other trusted partners from research and industry.
Working in projects is exciting and fun. You tend to learn new things every time, to travel a lot, to meet new fascinating people.
But as fun and exciting as it is, the world is changing now faster than ever and new technology trends appear …./// … and we feel that have to participate more actively with our own ideas.
So we decided to give it a try and come up with an idea about social gamification.
It’s a fancy term but tends to be very very common and in principle it’s quite simple. You try to see everything that you can as a game. You try to make something more interesting, more engaging, more fun.
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Multiple main branches for different environments. Master for development, Staging, Production.
New branch for each new feature, issue. Starting with feature-, issue-, hotfix-, etc.
Pull requests are used to merge feature/issue branches with master and promote/deploy code between environments. Master > Staging > Production.
Bottom line:
Developers can use branches to work independently without intefiering with each other.
Developers can commit their code without having to push them to the live repository at once or even work offline.
Developers create new branches for features or issues.
Once a feature or issue is resolved developers create Pull Requests to have their work merged with the master branch.
Different workflows for testing, deployment etc for each main branch.
Once a branch is ready for deployment on the staging or production environment a Pull Request is created for the corresponding branch.
Issue tracking
Internal and External system for reporting issues.
Agile oriented issue labels. Backlog, Working, Ready, Done.
Keep track of time spent on issues/milestones/projects.
Continuous Integration (gitlab-ci)
Tests are automatically run on each push and pull request.
Pull requests to master are automatically merged if testing passes.
Pushes to staging/production branches trigger the automatic deployment to the corresponding environment once testing passed successfully.
Initiate end-to-end testing after deployment.
Jinx started as an internal project to create a robust PHP 5.5+ framework with advanced features and very small memory footprint.
As our intention is to open source it the current focus is for it to become 100% unit tested and thoroughly documented.
Fully PSR Compliant.
To be 100% Unit tested and documented.
Uses Composer for PHP dependencies.
Uses Bower for client side dependencies.
Using a variation of the same workflow adapted to the needs of the project.
More than 10 partners contribute to the project resulting to multiple components which are integrated in a single system.
Issue tracking and GIT on Chilli Project.
Continuous integration with Jenkins-CI.
Multiple programming languages. Java, Python, Js, CoffeeScript, others.
Testing using JUnit, Mocha.
End to end testing done via on the fly generated vms using Vagrant, Puppet and Docker.