Practical skills for a commercial software career

In the last year a number of new people have joined the Rezare Systems team. As part of our involvement with local Universities and discussions with others in the industry, we’ve done some thinking about the sort of skills that we think are useful in building a career in commercial software development – and in particular, at Rezare Systems.

Communication and Teamwork

Modern software development utilises agile approaches to software development. There are a variety of practices that get classified as “agile”, but they share a common goal: focusing on delivering useful, working, software as early and quickly as possible. Agile principles are based on a set of values or priorities – for example, valuing individuals and interactions over processes and tools, or working software over comprehensive documentation. This doesn’t mean that comprehensive documentation is not useful, just that there is a greater focus on working software.

In our experience, a key success criterion for working in an agile environment is the ability to contribute effectively to a team. Our teams involve customers, project managers, business analysts, subject-matter experts, user experience designers, solution architects, developers, operations and testers. Many elements combine to make an effective team, but the most important is arguably communication. This may be verbal or written, one on one or with a group. When we fill even highly technical roles, communication skills are one of our first priorities.

Curiosity and Problem Solving

We believe that successful business analysts, software developers, and testers are also highly curious about the world they work in. They want to understand how our customers’ businesses work, and why the project we’re discussing will help. They are always looking for tools and frameworks that can help us to go faster, reduce errors, and be more effective. They are great at getting into the details of a problem and figuring out potential solutions.

Of course, curiosity and problem solving also needs to be balanced by delivery. In a commercial environment we don’t have the luxury of making elegantly constructed software the only priority, and often we need to stop iterating much earlier – at the earliest point we can deliver great value to our customers.

Data and Algorithms

There has been much focus in recent times on both “big data analytics” and on teaching everyone to code. I fully support as many people as possible, particularly in secondary and tertiary education, learning the power of coding. That said, there is something to be said for the formal training in algorithms and data structures that characterises tertiary computer science training. A computer science approach makes developers more effective when they implement mathematical models of the real world, or look for effective ways to process large quantities of data.

Increasingly we make use of machine learning approaches to refine and parameterise models and analyse relationships in data that support future software projects. An understanding of the approaches and tools is a useful asset in today’s data-rich world.

Consider Agriculture

At Rezare Systems, agriculture is “what we do“. While we can of course train for technical skills and industry knowledge, we’re always looking for individuals with background or experience that help us build and enhance that capability. Of course people with the combination of great technical skills, communication, attitude, andagricultural knowledge are few and far between. With the increasing importance of data and precision technologies in agriculture world-wide, this is an area well worth building experience in.