The enterprise skills everyone is looking for

Large enterprises are more complex due to the size of the environment and the challenges that come along with it. This article discusses some of the aspects that need to be kept in mind while joining or hiring for a large organisation.

Bejoy Jaison |

Recently, I had to articulate what skills and mindset I was looking for in potential future team members. I realised that I was trying to expand on what would typically look in a job description as "having enterprise development skills" or "large enterprise delivery experience".

In contrast to simple standalone systems, enterprise systems are more complex due to the nature of the environment in which they are deployed. The word "enterprise", when used as an adjective in a product engineering and program/project delivery context, often seeks to capture all the complexity along with the engineering expectations.

When you work for a long period of time with such systems or in organisational environments which require these capabilities, these aspects are at the back of your mind for every line of code that you write or every story that you deliver. In most cases, they would already be included as functional requirements in your Acceptance Criteria or as non-functional requirements in your "Definition of Done".

Technology Aspects

Security

For the right reasons, security is at the top list of concerns for environments handling critical customer and business data. Security needs to be built in at every layer and every integration point.

Integration

Enterprise applications reside alongside a plethora of existing legacy and modern systems including infrastructure, platforms and applications. Examples are authentication or single sign-on systems like Microsoft Active Directory, application log intelligence systems like Splunk, application monitoring, payment gateways, load balancers, application security gateways, document management, correspondence management, etc.. New applications would need to integrate and interwork with these systems before they can be deployed and used.

Maintainability

Enterprise systems tend to remain longer than intended due to the data they hold as well as the perceived risks involved in decommissioning them. Think mainframes! Additionally, they are often managed by dedicated support teams. This creates the need for formal training and technical documentation. This also requires support for problem analysis by way of application logs. Unfortunately, maintainability is not always easy to retrofit, so it needs to be thought and added up front.

Performance

There are expectations related to robustness and stability. There are also strict performance parameters (latency, transaction time, throughput, etc.) in order to handle specific load requirements. This would need to be thoroughly tested too before deployment.

Scalability

This is the ability to scale systems to cope with growing number of users without compromising performance parameters. This is often done by provisioning adding additional hardware (even at the processor core level) or even additional application servers. Application code would need to support performance tuning and optimisations at different levels.

High Availability

In the rare event of an application or server downtime, high availability aims to recover quickly by making use of already provisioned nodes which could be in hot or standby mode. This could even be across geographical locations.

Backup and Disaster Recovery

If a natural or man-made catastrophic event occurs, disaster recovery aims to bring back original capabilities by restoring from backups in order to bring back as close to the original.

Archiving

There are often regulatory requirements relating to long term data retention for legal and audit purposes.

Soft skills

Apart from technology aspects, there are also a lot of "way of working" or "soft" skills which you find in people accustomed to enterprise environments.

Managing ambiguity

Acceptance of the fact that I do not have answers to everything and would need to work with different teams and experts to understand and get things done.

Process adherence

You accept that there could be a reason behind existing elaborate processes, understand them upfront, and resolutely work with stakeholders to get approvals and boxes ticked. These teams could include enterprise architecture, product engineering, release management and change management.

Diversity and adaptive behaviour

Most large organisations have multiple globally distributed offices and outsourced vendor teams - being able to tailor behaviour to deliver outcome with a diverse workforce despite having language, face-to-face communication and timezone challenges.

Picture credit: https://unsplash.com/photos/PhYq704ffdA

Posted under: High Performing Teams, Agile Engineering

Read similar articles

Data driven testing with Cypress using fixtures

Quick sample code to use fixtures in Cypress to enable data-driven testing.