2. Someone else works out the right words and emojis.
3. You write that on a piece of squared paper (one character per square).
4. Someone else transfers that to the correct text message request form.
5. Someone else types that into the mobile phone (that is shared by the whole office).
6. You then get a printed reply to your text.
It doesn’t even bear thinking about nowadays, thank goodness for progress.
Today even the job title is different. Modern terminology tends to use the term ‘developer’ as opposed to ‘programmer’, although the terms are used interchangeably too. The modern role of software developer is very different from that first work experience, and thankfully much broader, more interesting and dynamic too. This book explores this modern role which now has as many dimensions as names within the modern workplace.
No previous knowledge is assumed so the book will be suitable for anyone who is either looking to find out more about the role, just starting out in their career in the IT industry, or looking to further develop self-taught programming skills.
This book will cover what the role is and the types of skills and tools commonly needed to do the role; it will also look at the different relevant applications, environments and industry sectors, giving examples of popular programming languages or associated techniques along the way.
SYMBOLS USED IN THE BOOK
Side track
Thinking moment
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.