Outcome-driven software engineering


About us

We are a collective of senior IT consultants with decades of experience in all aspects of software engineering. Integrated Experts are available to work onsite, embedded, helping to manage and mold your team or we are able to work remotely using agile methodologies to ensure your project succeeds.

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

At the core of what we do is our professionalism. To make this happen we employ best practices and trusted technologies from the start of the project to delivery.

It's time to tame your software projects so that you can get back to doing business!
Drupal Association Organization Member Badge

If your project needs saving, or you just need a helping hand, contact us at 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

Got ideas sitting at the back of your mind and need help making them a reality? We can help with design, strategy and implementation and make sure that customers will fall in love with your product.


Our approach

Assessment

A website is more than a collection of static web pages. We start with an analysis of your requirements and then move on to documenting the data and workflows required so that an informed decision can be made about what work should be done.

View details »

Development

Best practice is more than just a keyword to us, it's part of our DNA. Doing things the right way from the start doesn't mean compromising on your timeframes!

  • Local development environments - A turnkey developer platform enables developers to concentrate on writing great code instead of being distracted by getting set up
  • Code cleanup - Whether it is a new or existing project, code that follows coding standards and well established design patterns and principles is much easier to maintin and extend
  • Development process - It is important to make sure that code is reviewed both for quality and for knowledge transfer. Tools can help with this but in the end it comes down to making sure there is a cohesion within the team.
  • Automated testing - Every time a developer commits a change, a full suite of tests should be run. And pass!

View details »

Deployment

Deploying software should just work and there should be a high level of confidence that what we are deploying is of high quality and is robust.

  • Automated builds - Deploying and building code should be done using repeatable steps - automatically!
  • Cloud hosting - Hosting in the cloud has proven to be the most reliable and hassle-free approach. This doesn't mean you are locked into a process as the best cloud hosting allows ultimate flexibility for those that know how to exploit it.

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 saving, or you just need a helping hand, contact us at info@integratedexperts.com


Full site coming soon