Читать книгу Software Developer - Jill Clarke - Страница 13

1 INTRODUCTION

Оглавление

It’s the only job I can think of where I get to be both an engineer and an artist. There’s an incredible, rigorous, technical element to it, which I like because you have to do very precise thinking. On the other hand, it has a wildly creative side where the boundaries of imagination are the only real limitation.

Andy Hertzfeld, talking about programming

This book will cover the role of software developer in the modern workplace. It will look at generally accepted skills, behaviours, practices and competencies commonly used in the industry for the role.

While reading this book you should bear in mind that the role of developer is not exactly the same for every organisation, sector or even department that employs people with the job title of developer. The skills you need and the work you do will always be context-dependent based on the organisation, sector, product, environment and programming language applicable to you.

This chapter will introduce you to all the various titles that could be used to refer to someone who writes code. It will also introduce the broad range of skills and competencies that could be needed for the role. When you look at a software developer role you will need a mix of these different skills depending on the particular role you apply for.

A ROSE BY ANY OTHER NAME – PROGRAMMER, DEVELOPER, SOFTWARE ENGINEER, APP BUILDER, CODER

First of all, let’s clarify the job title itself; do you want to be a programmer, developer, software engineer, application (app) builder or coder? Why are there different terms and what is the difference between them?

Programmer

Programmer, a person who programs computers. As well as the laptop and desktop computers we often use, modern life has embedded ‘computers’ (or microprocessors) in many products from mobile phones to washing machines. The term ‘programmer’ is a general term for anyone who programs computers; this means that all the other people fulfilling the roles described below can also be described as programmers.

Developer

Developer, a person who develops programs for computers or other devices. This role generally covers tasks in addition to writing code, for example, there may be a need for some design and testing and other associated skills. Quite often the role has an additional descriptor, for example ‘web developer’ (a person who creates webpages and systems that run across the internet).

Software engineer

Initially the people who programmed computers were programmers; Margaret Hamilton, who coined the term ‘software engineering’, said she used it to get across to people the fact that programming was a skill in the development of technology in just the same way as electrical or hardware engineering was.

Now, in some companies (and countries) the difference between the terms software engineer and programmer or developer is the level of academic achievement gained – there are degrees in software engineering.

Software engineers are perceived as people who not only create programs but use formal processes and techniques to best design and develop that software.

App builder

Apps is an abbreviation most commonly used for programs that run on mobile devices such as phones and tablets, although recently it is also being used for software running on a PC. App builders (or app developers) are the people who create these programs.

Coder

The simplest of all the titles, a coder is someone who writes code, so all of the above job titles are filled by coders.

So, which one to use?

These terms are a cause of some debate and discussion within the industry. Modern terminology often uses the term developers instead of programmers (particularly in relation to things like DevOps – covered later in this book) and I have recently seen social media discussions (and heated debates) where people perceive elitism in one term or another.

All of these roles can be considered programmers broadly, because in all of these roles you write code and produce varying types of software, for example applications, mobile apps, games or webpages. This book focuses on the more modern term ‘software developer’.

The terminology takes into account the practices, platforms and competencies of the person who writes the code and the depth of their participation in the process.

The important detail is not really what you are called but what you do in your production of software, your ability to use the correct techniques and practices to create well-designed, functioning, maintainable, efficient code.

Whether you learn those skills ‘up front’, ‘on the job’ or ‘too late to be of use’ depends very much on the individual, the company, the environment and the product.

SKILLS AND COMPETENCIES, FRAME OF REFERENCE

Because the software developer role can cover so many different types of product, from developing operating systems such as Microsoft Windows, iOS or Linux; developing a game to run on a popular games console, through to developing an ecommerce site for a retail outlet, it is useful to have a frame of reference for professional skills, standards and competencies. Some of these skills and competencies will have more emphasis in some business sectors than others. This book will use SFIA (Skills Framework for the Information Age) as that frame of reference, and will be introducing different aspects of the related professional skills and competencies plus associated areas.

See SFIA online for more detail:

https://www.sfia-online.org/en

Tempting as it is to think that all a developer needs is knowledge of a programming language, that is not the case, there are many more aspects that are required for the developer to be capable of fulfilling the role. Figure 1.1 is from the SFIA website and shows the balance of skills and technical knowledge in the context of an IT role.

In Figure 1.1, the professional skills and knowledge are what you know, while the behaviours are how you use those skills or that knowledge, for example in influencing or managing.

Professional skills cover such things as knowing a programming language; tools include the applications you need to use to enter the language into the computer. Methodologies are the set of methods, principles or activities you use to accomplish something, for example, a Scrum methodology is often used to help us manage software development. The context is the understanding of the business or industry sector. The SFIA framework also highlights the behaviours required; that is, in this case, the communication and interpersonal skills, all of which need to be understood in context.

Figure 1.1 Context for the different aspects that contribute to capability (Source: Reproduced with permission of SFIA Foundation)


The central concept is experience. If you have been looking for a role as a developer you will often see requirements such as ‘must have 5 years’ experience’ (frustratingly sometimes in things that have only been out for 3 years!). The reason experience is so valued is because it shows you can correctly apply your skills; the more you practise the skills the better you become at them.

Released in 2015, version 6 of the SFIA Framework (https://www.sfia-online.org/en/framework/sfia-6) gives the following description of general professional skills for a software developer:

The design, creation, testing and documenting of new and amended software components from supplied specifications in accordance with agreed development and security standards and processes.

Released just 3 years later in 2018, and ably illustrating the dynamic nature and needs of the industry, SFIA version 7 (SFIA, 2019) suggests a broader range of skills and competencies for that same role:

The planning, designing, creation, amending, verification, testing and documentation of new and amended software components in order to deliver agreed value to stakeholders. The identification, creation and application of agreed software development and security standards and processes. Adopting and adapting software development life cycle models based on the context of the work and selecting appropriately from predictive (plan-driven) approaches or adaptive (iterative/agile) approaches.

This book is designed to give you an introduction to the areas mentioned in these skills lists. It will not cover every aspect of every skill but it will give simple examples and pointers where possible to further reading and study.

SUMMARY

This chapter explained the varying job titles related to the role of software developer; it also cited SFIA as the frame of reference for the skills and competencies that will be covered in this book.

This chapter has covered ‘who’, the following chapters cover the remaining key points for developers:

Chapter 2 – Where and when

Chapter 3 – What

Chapters 4, 5 and 6 – How

Chapter 7 – Why


What, Why, When, How, Where and Who are the six honest serving men from the poem that follows Rudyard Kipling’s (1900) story The Elephant’s Child.

‘I KEEP six honest serving-men

(They taught me all I knew);

Their names are What and Why and When

And How and Where and Who.’

Software Developer

Подняться наверх