The main objectives of the Ocean Engineering practice are:
- Simplify what we do in order to avoid reinventing the wheel.
- Promote quality and security.
- Better communication about what we do and why we are doing it. Our community needs information!
- Be more effective in order to make a better use of our time.
- Use some common good principles & patterns. These can be useful!
- Simplicity - Everything we define should be thin and simple.
- Open Source - We are building FLOSS, so Open Source and Open Standards.
- Openness - Community first, open discussions, open documentation, open requirements.
- Quality - New best practices should be oriented to promote a high quality product.
- Security - Security MUST be a first class citizen.
- Automation - We should automate as much as we can…it will make our lives easier.
- Team - All of us are part of the team. All the best practices will be defined by all us.
The backbone of any organization is its culture. It can be considered the “way of life” of an organization.
The Engineering practice is about more than acquiring new tools and taking on new technical methodologies. It’s about setting expectations and priorities, and establishing the fundamental beliefs that guide them.
Key elements of this are:
|Learn to Trust||It is necessary to have the unified agreement and understanding that we are all on the same team.|
|Understand Motivations||Conflicts often occur when people don’t understand each other and their motivation. Having common objectives and an understanding about the motivations of others helps achieve common goals.|
|Eliminate Blame||Blame is pointless. In problematic situations it’s necessary to understand what went wrong and how to make sure it doesn’t happen again.|
|Anticipate Failure||Constantly learn from mistakes and previous failures. Previous problems should be used to learn and provide the mechanisms to anticipate the failure again in the future.|
|Focus on Bottlenecks & Flow||Rethink the process and refactor constantly. Simple is better.|
|Eliminate Unplanned Work||Unplanned work is common but it is important to understand that priorities should be taken into consideration. It means some lower priority issues may need to go on hold.|
|Be Continuous||Iterate in release cycles at a constant pace. This provides a continuous flow of deliverables that add value.|
|Form Dedicated, Cross-Functional Teams||Arranging people around projects, rather than grouping them based off their skill sets.|
|Transparency||Transparency improves efficiency and productivity, reduces time and boosts employees’ engagement|
|Build Autonomy, Mastery and Purpose||It’s necessary to create a working environment where people feel they have autonomy, mastery and purpose. Rewarding people and reviewing goals ensures that the there is a clear single goal that everyone can focus on.|
Automation embraces every aspect of the software and systems lifecycle, including requirements gathering, design, development, testing, application deployment and operations support.
|Faster Time to Market||Quick application deployments and easy communication to the different stakeholders make getting to market faster.|
|Continuous Integration||People can easily do unit testing, code quality analysis, and then commit to the SCM to build from an IDE, all in an integrated tool setup without switching between systems.|
|Continuous Delivery||Teams can automatically generate releases ready to be installed in any environment.|
If you can’t measure it, you can’t improve it. A successful Engineering & DevOps implementation will measure everything it can as often as it can.
|Performance||Depending on the application, it involves gathering the key performance indicators. These are useful to understand the status and define proactive actions to improve the application’s stability and performance.|
|Process||Reviewing the process performance to understand if the processes should be refactored.|
|People||Reviewing team member metrics to understand personal performance. Some could require support and they are not communicating it. Understanding the situation can make easier to help others.|
Today’s organizations and software require teams of people with different skills and specialized knowledge. To work efficiently, it’s important to work well together, and sharing is how you get there. Sharing is Caring…
|Open Communication||Open, honest and clear communication helps with sharing information. This applies to both Internal and External communication, from top to bottom and bottom to top.|
|Shared Knowledge||Successful teams share their experiences. Knowledge should be shared and spread across all collaborators.|
|Accessible Information||Expose metrics to everyone within your tribe that might be interested. Keep things simple and clear — explain how these metrics affect software delivery and overall company performance. Sharing progress data will also help foster a more effective culture.|