Review and Advice – ongoing support engagements

Here at Oasis Digital, one of the services we offer is to “review and advise” about a team’s applications. Today, let’s elaborate on the meaning of these services listed on our web site.

Goals of a “review and advise” engagement

From the Oasis Digital point of view, the key goal is to assist customer stakeholders and developers in improving their results, to the greatest extent possible in the time allotted. But more importantly, as we begin the engagement we listen to customer stakeholders – and focus our efforts toward their goals.

Code review and feedback

Often a decision-maker will request that we begin with an overall review of the state of a body of source code. In a large system, reading every line may be impractical within a reasonable amount of time; but often a key developer can point to the most important areas for a directed review. During a code review, we will point out strengths and weaknesses, and suggest which areas would benefit most from change.

Diagnose and fix issues

Complex projects have often accumulated a set of problems, some of which defy easy diagnosis or correction. Our consultants have seen and worked on a wide variety of software systems, and have ready access to peers to share experiences and judgment. As a result, our teams have sometimes been able to quickly diagnose and repair problems that defied previous efforts.

Performance assistance

Many complex applications have a slow start up; Oasis Digital consultants can usually find a way to use lazy loading and other techniques more aggressively to get a faster load time.

Once loaded, it is also common for complex applications to have certain screens or features which are sluggish even on good hardware. We can often rearrange change detection or change the granularity of client/server interaction to improve the situation.

Reusability

Effective code reuse across screens or projects is one of the fundamental challenges in computer science; even very effective teams sometimes find they have inadvertently re-created (with unintended differences) the same functionality again and again. We can assist with identifying opportunities for code reuse, and more importantly, help create the right abstractions and tooling to enable reuse with a positive ROI.

Do more with less code

The most common challenge we see is an unnecessary amount of code used to accomplish a feature goal. Each line of code is not an asset; rather it is best to think of the working feature capability of a system as an asset, but the actual lines of code as liabilities. Each line of code is a potential source of bugs and maintenance cost. Oasis Digital developers (consultants) can often point out ways to reduce the amount of code necessary, while keeping improving correctness and feature coverage. In Angular applications (and sometime beyond), better use of RxJS in particular often yields this benefit.

Mentoring

While code review is often thought of as a single, upfront effort, it’s much more valuable in the long term to work with a team over time to increase the quality of newly written and maintained code. In a mentoring engagement, Oasis Digital developers work with customer developers regularly, suggesting changes, talking through design trade-offs, etc. The ideal outcome of a mentoring effort is for team members to advanced upward toward an increasingly “senior” level of understanding and capability.

Kicking off a review engagement

We have found the most effective way to start review engagement is by first spending time studying at the software, ideally in the form of a “guided tour” by a customer expert. The outcome of such an initial review can include meetings and/or a written report.

Following initial review, it is common to discuss the software in-depth with stakeholders and developers, either remotely (we have excellent screen share/remote meeting facilities) or on site.

Paying for it

Depending on our customer requests, a review engagement can be just a single one time effort (with a known, upfront costs), or an ongoing effort. Such an ongoing “development support” engagement is typically structured as a retainer, with a fixed monthly cost for an allotted amount of availability. We are flexible in how and when the time is spent – addressing some topics right away and batching others for greater overall efficiency.