Computer Science
& Software
Development
1 INTRODUCTION | © Codemanship Ltd 2012
CONTENTS
INTRODUCTION ... 2 SUMMARYOFRESULTS ... 3 EDUCATIONAL BACKGROUND ... 3 OCCUPATION ... 4 EXPERIENCE ... 4LEVEL OF COMPUTER SCIENCE REQUIRED ... 5
BEST WAY TO LEARN ... 5
RANKING LEARNING FACTORS ... 6
INTERPRETATIONS OF “COMPUTER SCIENCE” ... 7
FILTERED RESULTS ... 8
DEVELOPERS WITH COMPUTER SCIENCE DEGREES OR HIGHER... 8
DEVELOPERS WITH OTHER DEGREES ... 10
EFFECT OF EXPERIENCE ... 12
CONCLUSION ... 13
DATA ... 14
2 INTRODUCTION | © Codemanship Ltd 2012
INTRODUCTION
Our experience working with a diverse range of companies, employing software developers from a variety of educational backgrounds, as well as links with computing academia, gives Codemanship a unique insight into software development education. Many employers and teachers still believe that the traditional academic route is best, and that software developers need to study for a degree in computer science before gaining experience in the workplace. But employers also report deep dissatisfaction with
computing graduates in their lack of practical experience and inability to create what they consider “good enough” software.
The picture drawn between academia and industry is a paradox, with computing faculties insisting it’s not the job of universities to provide graduates with skills for industry, and employers claiming that educators are failing them precisely by not doing so, whilst continuing to insist in many cases on the very computer science degrees they claim are not fit for the task.
We’re often engaged to work with recent computer science graduates to help fill this gap with training and coaching in software development principles and practices that employers feel should have been taught in university.
Seemingly, this is a paradox that cannot be resolved while each side insists it’s the job of the other to help would-be developers learn the skills we find are absolutely necessary to create software that’s fit for purpose, nor while “degree snobbery” continues to mean that – even though they feel those degrees aren’t helping – many employers still demand them from job candidates.
There’s one community that rarely gets asked for an opinion. What do software developers believe?
We ran a small survey to gather the opinions of people who write software for a living; many with formal academic qualifications in computer science, but also many without. The goal of our survey is to understand what developers themselves think is the best way to learn how to do what they do. After all, they should know.
3 SUMMARY OF RESULTS | © Codemanship Ltd 2012
SUMMARY OF RESULTS
Responses were solicited over the course of one day on Twitter. 266 people responded as follows:
EDUCATIONAL BACKGROU ND
Which of these best describes your educational background?
Answer Options Response Percent Response Count
Degree or post-graduate degree in Computer
Science 56.8% 151
Degree or post-grad in a mathematical or science
subject other than Computer Science 17.3% 46
Degree or post-grad in a non-maths or science subject (e.g., Arts, Humanities, Business etc)
10.5% 28
Further Education in Computer Science (e.g., Diploma)
5.6% 15
Further Education in non-computing subject 2.6% 7
Secondary or High school education including
Computer Science 1.5% 4
Secondary or High School education not including Computer Science
3.8% 10
I have no formal qualifications 1.9% 5
4 SUMMARY OF RESULTS | © Codemanship Ltd 2012
OCCUPATION
Which of the following best describes your current occupation?
Answer Options Response Percent Response Count
Teaching (school/college) 5.3% 14
Student of Computer Science 1.5% 4
Student of non-computing subject 1.1% 3
Post-Graduate Academic/Research 3.0% 8
Software Development 78.6% 209
Management related to computing 10.5% 28
Other 11
EXPERIENCE
How long have you been in your occupation?
Answer Options Response Percent Response Count
Less than a year 1.9% 5
1-2 years 6.4% 17
2-5 years 13.2% 35
5-10 years 31.2% 83
10-20 years 38.0% 101
5 SUMMARY OF RESULTS | © Codemanship Ltd 2012
LEVEL OF COMPUTER SCIENCE REQUIRED
Which of these statements best reflects your own views?
Answer Options Response Percent Response Count
I believe that a software developer needs to study Computer
Science to at least degree level 18.0% 48
I believe that a software developer needs to study a subset of degree-level Computer Science most directly applicable to writing software commercially
57.1% 152
I believe that basic high school Computer Science is sufficient
for the majority of software developers 6.0% 16
I do not believe that software developers need to study
computer science 18.8% 50
BEST WAY TO LEARN
Select which statement best reflects your views?
Answer Options Response Percent Response Count
I believe that formal education in at
university/college/school is the best way to learn how to be a software developer
0.8% 2
I believe that on-the-job learning and experience is the best way to learn how to be a software developer
10.2% 27
I believe that an equal mix of classroom-based learning & on-the-job experience is the best way to learn how to be a software developer
42.5% 113
I believe that a majority of on-the-job learning and experience should be complemented by a small amount of classroom-based study to become a software developer
6 SUMMARY OF RESULTS | © Codemanship Ltd 2012
I believe that a majority of classroom-based study, with a small amount of on-the-job experience, is the best way to become a software developer
4.1% 11
I believe that software developers can teach themselves at home (e.g., by reading and contributing to open source projects)
6.4% 17
I do not think it matters how you learn to become a software developer
15.4% 41
RANKING LEARNING FACTORS
(1 is Highest Importance, 5 is Lowest Importance)
0.00 2.00 4.00 6.00
Formal Comuter Science education General education (reading, writing,
maths, science, languages etc) On-the-job experience Self-directed & self-paced (home) learning Community activity (e.g., user groups,
conferences)
Rank the following factors in learning to become a software developer by their relative importance to you
7 SUMMARY OF RESULTS | © Codemanship Ltd 2012
INTERPRETATIONS OF “COMPUTER SCIENCE”
Which of these best describes what "Computer Science" means to you? (tick all that apply)
Answer Options Response Percent Response Count
A branch of mathematics concerned with set theory, logic, graph theory, data structures, algorithms, formal languages and other elements of Discrete Mathematics
73.3% 195
The study of theoretical topics in computing, such as program design, correctness, concurrency, security and Human-Computer Interaction
76.3% 203
The study of computing topics like programming, databases, computer networks, the World Wide Web and computer games design
45.1% 120
The study of computer architecture and the construction and operation of digital computers (e.g., logic gates, sequential logic circuits, memory, silicon chips)
38.3% 102
The study of applications of computing to domains like science, commerce, entertainment and engineering
8 Filtered Results | © Codemanship Ltd 2012
FILTERED RESULTS
DEVELOPERS WITH COMPUTER SCIENCE DEGREES OR
HIGHER
Which of these statements best reflects your own views?
Answer Options Response Percent Response Count
I believe that a software developer needs to study
Computer Science to at least degree level 24.0% 29
I believe that a software developer needs to study a subset of degree-level Computer Science most directly applicable to writing software commercially
62.0% 75
I believe that basic high school Computer Science is sufficient for the majority of software developers
2.5% 3
I do not believe that software developers need to study computer science
11.6% 14
Select which statement best reflects your views?
Answer Options Response Percent Response Count
I believe that formal education in at
university/college/school is the best way to learn how to be a software developer
0.8% 1
I believe that on-the-job learning and experience is the best way to learn how to be a software developer
5.8% 7
I believe that an equal mix of classroom-based learning & on-the-job experience is the best way to learn how to be a software developer
49.6% 60
I believe that a majority of on-the-job learning and experience should be complemented by a small amount of classroom-based study to become a software developer
20.7% 25
I believe that a majority of classroom-based study, with a small amount of on-the-job experience, is the best way to become a software developer
9 Filtered Results | © Codemanship Ltd 2012
I believe that software developers can teach themselves at home (e.g., by reading and
contributing to open source projects) 5.0% 6
I do not think it matters how you learn to become a
software developer 13.2% 16
0.00 2.00 4.00 6.00
Formal Comuter Science education General education (reading, writing,
maths, science, languages etc) On-the-job experience Self-directed & self-paced (home) learning Community activity (e.g., user groups,
conferences)
Rank the following factors in learning to become a software developer by their relative importance to you
10 Filtered Results | © Codemanship Ltd 2012
DEVELOPERS WITH OTHER DEGREES
Which of these statements best reflects your own views?
Answer Options Response Percent Response Count
I believe that a software developer needs to study
Computer Science to at least degree level 4.1% 3
I believe that a software developer needs to study a subset of degree-level Computer Science most directly applicable to writing software commercially
58.1% 43
I believe that basic high school Computer Science is
sufficient for the majority of software developers 9.5% 7
I do not believe that software developers need to
study computer science 28.4% 21
Select which statement best reflects your views?
Answer Options Response Percent Response Count
I believe that formal education in at
university/college/school is the best way to learn how to be a software developer
1.4% 1
I believe that on-the-job learning and experience is
the best way to learn how to be a software developer 12.2% 9
I believe that an equal mix of classroom-based learning & on-the-job experience is the best way to learn how to be a software developer
33.8% 25
I believe that a majority of on-the-job learning and experience should be complemented by a small amount of classroom-based study to become a software developer
27.0% 20
I believe that a majority of classroom-based study, with a small amount of on-the-job experience, is the best way to become a software developer
2.7% 2
I believe that software developers can teach themselves at home (e.g., by reading and contributing to open source projects)
11 Filtered Results | © Codemanship Ltd 2012
I do not think it matters how you learn to become a software developer
18.9% 14
0.00 2.00 4.00 6.00
Formal Comuter Science education General education (reading, writing,
maths, science, languages etc) On-the-job experience Self-directed & self-paced (home) learning Community activity (e.g., user groups,
conferences)
Rank the following factors in learning to become a software developer by their relative importance to you
12 Filtered Results | © Codemanship Ltd 2012
EFFECT OF EXPERIENCE
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 Less than a year1-2 years 2-5 years 5-10 years 10-20 years More than 20 years
I believe that a software developer needs to study a subset of degree-level
Computer Science most directly applicable to writing software commercially
I believe that a software developer needs to study Computer Science to at least degree level
I believe that basic high school Computer Science is sufficient for the majority of software developers
I do not believe that software developers need to study computer science
13 Conclusion | © Codemanship Ltd 2012
CONCLUSION
Responses to the final question inform us that the majority understand “computer science” to be a mathematical and/or a theoretical discipline, although the spread of interpretations is still quite wide. This may go some way to explaining the confusion that surrounds the question of how much “computer science” a software developer needs to learn, with some interpretations encompassing elements of software engineering, computer hardware design and digital electronics, and even applications of computing to a range of problem domains.
With or without formal computer science qualifications, there is a marked trend towards developers requiring only a subset of what they might expect to learn on a computer science degree, and towards an equal or great mix of on-the-job learning with classroom-based study of theory.
Although the data regarding these views as they change with experience is turbulent and relatively inconclusive (there appears to be a spike at around 2-5 years where a computer science degree is most highly valued, which drops off sharply from 5 years and beyond), we postulate that the value of theory does not increase significantly with greater
experience.
Anecdotally, our experience is that a majority of computer science graduates chose their field of study based on a desire to work in software development, as opposed to a strong interest in the subject itself or in a career in computer science research or academia. We acknowledge that computer science is not a vocational subject, and are not recommending that computer science degrees be changed to suit vocational needs. However, we urge educators and employers to recognize that, although many students choose to study computer science in higher and further education, their real goals are often vocational. In that sense, it’s not that the computer science degree is wrong in of itself, rather that the majority of computer science students are pursuing the wrong degree, and going about learning to become software developers – their ultimate ambition in a majority of cases – in the wrong way.
It’s clear that the majority of respondents believe that computer science is important to software developers, but not necessarily of prime importance. Both computer science graduates and non-CS graduates believe in roughly equal proportions that on-the-job experience is more important, and by-and-large, this belief doesn’t diminish with greater experience. A very significant proportion value general education equally or higher than computer science.
Codemanship proposes to investigate options for a balanced approach to learning for those students who aspire to careers in software development that addresses equally both vocational needs by giving them considerable hands-on experience of real-world projects and theoretical rigour with which to inform their practice.
14 Data | © Codemanship Ltd 2012
DATA
You can download the complete data for this survey from:
15 About Codemanship | © Codemanship Ltd 2012
ABOUT CODEMANSHIP
We provide training and coaching to software teams in the key technical disciplines that are critical for sustaining the pace of innovation in your business.
Formed in 2009 by industry veteran Jason Gorman, our clients include the BBC, Electronic Arts, Channel 4, Sky, Caplin Systems, Rabobank, Capital Group, Treyport, Higher Education Statistics Agency, AXA Swiftcover, XLN, Red Gate Software, 7digital, Pinesoft, Canal Digital, Collinson Latitude, City Index and Siemens Industry Software.
We are proud organisers of the original international Software Craftsmanship conference.