Jacques Van Niekerk Workshop on IWMC 2015

42
Assessing Technical Debt

Transcript of Jacques Van Niekerk Workshop on IWMC 2015

Assessing

Technical Debt

Jacques van Niekerk- partner at Rosewood Due Diligence.

http://za.linkedin.com/in/jacquesvanniekerk

● What do investors look for in technology ?

● What are the gaps ?

● How do we evaluate these gaps ?

● What do we consider technical debt ?

● How do we talk about technology ?

● How do we address technical debt ?

[Mind the Gap]

Topics

● People

● Infrastructure

● Process

● Technology

● Product

● Software Architecture

A few basic questions: 1

What are your preferences in terms of

architectural style ?

A few basic questions: 2

Describe your software development process.

A few basic questions: 3

How do you measure your team’s productivity ?

A few basic questions: 4

How do you ensure that your software is of high

quality ?

A few basic questions: 5

What are the set of skills that is essential to

your team ?

A few basic questions: 6

Describe the software stack you use to build

your product.

A few basic questions: 7

When is the last time you were “hacked” ?

People

● Team Structure

● Leadership

● Communication

● Incentives

● Churn

● Responsibilities

People

Why do people want to work for your company

?

Technology

● Programming Language

● Toolset

● Frameworks

● Open Source … or not ?

● Databases ?

● Analytics and instrumentation ?

Infrastructure

● Where do you host your software - why ?

● How scalable is your infrastructure ?

● What does it cost ?

● Who looks after it ?

● Can I see a graph of bandwidth usage ?

● What does your office space look like ?

Infrastructure

How long did it take you to recover during your

last server/network/infrastructure failure ?

Process

● Why did you choose Agile ?

● How do you measure productivity ?

● What does your backlog look like ?

● Can I see your development roadmap ?

● How do you drive deadlines ?

● What tools do you use ?

and Operations

● Can I meet your QA lead ?

● Do you think devops is essential ?

● Where are your backups stored ?

● Who has access to production ?

● Who monitors uptime ?

● Does SEO matter in your business ? SEM ?

Product

● What are the main features ?

● What is your USP ?

● How many users do you plan to have ?

● How do you convey requirements between

product owners and developers ?

● Who is in charge of UX ?

[Pic of Wood and trees - what is this a picture

of ?]

An architecture is the set of significant decisions about the organization of a software system, the selection of structural

elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations

among those elements, the composition of these elements into progressively larger subsystems, and the architectural style that

guides this organization -- these elements and their interfaces, their collaborations, and their composition.

The software architecture of a program or computing system is the structure or structures of the system, which comprise software

elements, the externally visible properties of those elements, and the relationships among them.

[Architecture is] the organizational structure and associated behavior of a system. An architecture can be recursively

decomposed into parts that interact through interfaces, relationships that connect parts, and constraints for assembling parts.

Parts that interact through interfaces include classes, components and subsystems.

The software architecture of a system or a collection of systems consists of all the important design decisions about the software

structures and the interactions between those structures that comprise the systems. The design decisions support a desired set

of qualities that the system should support to be successful. The design decisions provide a conceptual basis for system

development, support, and maintenance.

4+1

4+1Ph. Kruchten, “The 4+1 View Model of Architecture,” IEEE Software, vol. 12 (6), pp. 45-50, 1995. DOI:10.1109/52.469759

● Connects business to Technology

● Shows the dynamics of the system

● Shows the structure of the system

● Shows how to build the system

Thanks

Wikipedia

Language

Use Case View

Logical View

Development View

Process View

Points to consider

● How do you do search ?

● How do you monitor ?

● What about page load speed ?

● Do you cache ? Where ?

● Can your database scale ? How ?

● Can you deploy across many servers ?

?