Outcome-driven software engineering


Who we are

We are a collective of senior IT consultants who work in agile environment on the Client site and usually as a part of the Client's team.

Having us fully integrated, the Client is in the full control of the flow of the project and, at the same time, has all the expertise required to deliver it on-time.

Professionalism is our core value: anything we do follows the best practices and we are imposing this approach to all projects we are working on.

It's time to bring software projects to a level that a business can rely on!

If your project needs expertise or saving, contact us via info@integratedexperts.com


Areas of expertise

Drupal

Drupal is our primary expertise.

We do Drupal 8, Drupal 7, commerce, migrations, performance... anything and everything Drupal

DevOps

Continuous Integration, Continuous Delivery, Automated builds, custom automations - we do them all

UX and Strategy

We can help extract that important information about your project that's being sitting in the back of your mind.

And then we can make some strategic plans to make your customers fall in love with your product.


Our approach

Website architecture assessment

Assessment of the website architecture is the first step when starting working with projects.

View details »

Best practices

What they are and how to compromise on velocity without compromising on quality

View details »

Local development environment

The most important tool in the developer's toolbox is a local development environment

View details »

Automated builds

Build on each push to repository and deploy to production using repeatable steps - automatically!

View details »

Automated testing

Writing automated tests could be hard, but there are ways to achieve quick wins in a very short time

View details »

Cloud hosting

Hosting in the cloud has proven to be the most reliable and hassle-fre approach

View details »

Code cleanup

Whether it is a new or existing project, a code that follows coding standards is much easier to maintain

View details »

Development processes

We help establish a process that fits your organisation

View details »


If your project needs expertise or saving, contact us via info@integratedexperts.com


More detailed

Website architecture assessment

It is advised to use Project Complexity Multiplier (PCM) for correction of delivery timeframes. PCM is discovered during initial site assessment and is based on scale from 1 to 5, where 1 is considered a complexity of standardised CMS installation with minimum features implemented according to the best practices, and 5 is a complex, poorly architected and poorly managed CMS installation, which may require a complete rebuild of some or all features.

Sometimes it may be worthwhile to skip projects with PCM higher than 3 as the Client may not be able to comprehend additional costs and risks of delivering new features and the development company may lose some reputation despite the best efforts to deliver such project.

Best practices

Strategic planning of implementation of the best practises is one of the most important and challenging activities when onboarding a new project. From one side it is highly advised to follow all known best practices, but at the same time it is required to preserve development velocity, demanding the decision to be more pragmatic. An existing toolset for implementing such best practises may help to speed-up setting up of the major components of supporting systems, but only if such toolset is tested and has enough documentation.

Local development environment

The approach to setup local environment is usually overlooked by developers from project-to-project ‒ it is presumed that one setup fits all projects, despite the size or the complexity of the project or the number of developers working on this project. And because most of the times such configurations are minimalistic (Acquia desktop, MAMP etc.), the realisation that a more robust and flexible system is required comes after spending significant time to fit this large complexity into this minimalistic local environment setup, which then translates to additional costs for more extended setup.

A list of requirements is a good place to start to select the tools to run local environments:

  • Production-like architecture.
  • Accommodate sharing within a team: every developer has exactly the same environment.
  • Ability to scale configuration to the project needs: install additional components with ease.
  • Short setup time: drop-in configuration with ability to override per-project.
  • Inter-project independence: avoid situations when installing components to work with one project may break components for another project.
  • Re-use for other projects.

Beetbox project (https://github.com/beetboxvm/beetbox) satisfies all requirements from the list above and provides a start point for a pre-provisioned L*MP Virtual Machine that can be used for local development environment.

Automated builds

Before feature changes can be merged into a shared mainline, a complete build must run and pass all tests on automated builds server. It is usually setup to import latest backup from production environment into fully built codebase and run code linting and tests. However, it is also a good approach to setup automated builds with a minimal configuration of code linting to kick-start any projects ‒ this does not require as much time as configuring DB import and testing frameworks (especially when tests may not yet exist).

It is also a good practice to setup deployment step at the end on the automated build run, which make such system a Continuous Integration server.

Automated testing

Testing of any project, especially an inherited one, is essential for a good quality and timely delivery of new features. Automated tests help to reduce the time to manually repeat the same steps each time a change is introduced into a system. They may be ran locally by a developer, but always run on the automated build server on each code change ‒ this guarantees predictable delivery results.

It is considered a good approach to cover existing functionality by tests before starting any work that may introduce change in behaviour or regressions.

When working with Drupal, Behat is the most convenient and robust way to interact on API, browser and front-end levels.

Cloud hosting

Cloud hosting with providers like Acquia or Platform.sh brings piece of mind to developers and clients. While some providers are more conservative with the number of environments (Acquia), others provided configurable stack of dynamic environments with per-branch testing (Platform.sh). But in both cases, cloud hosting providers usually have extensive APIs for flexible and scalable deployment processes and automated build server integration.

Code cleanup

Cleanup of the existing code is something that a developer may struggle to accept as a piece of work. By ‘cleanup’ we mean ‘following coding standards’. Drupal has a very well-defined and well-maintained coding standards, so all custom code that a developer is working on must adhere the standards to keep the code quality hight. There are automated tools that allow to scan such custom code and report any issues back to the developer. These tools can also fix some coding issues automatically.

To preserve development velocity, it is considered a good approach to stay pragmatic with code cleanup - use “boy scout rule” - cleanup code standards issues in any file that has been modified. This allows to progressively cleanup the whole codebase.

Based on the amount of the custom code, it may be beneficial to run cleanup for all custom code before starting any work on the legacy code.

Development processes

Development processes in the team usually require strict rules and high tolerance for criticism. This is usually possible through 2T’s rule: trust and transparency. While trust is something that takes time to earn/grant, transparency can be introduced from the earliest stages of engagement in any project.

It is also imperative to establish a peer-review based approach to validate all code contributed by the team.

SCRUM is a recommended approach to run development process. Following SCRUM rituals will benefit all participants of the process.


If your project needs expertise or saving, contact us via info@integratedexperts.com


Full site coming soon