SlideShare a Scribd company logo
1 of 69
Download to read offline
Felienne
Delft University of
Technology
Putting the science
in computer science
This slidedeck is about the science
in computer science
Felienne
Delft University of
Technology
Putting the science
in computer science
This slidedeck is about the science
in computer science
We all love science,
right?
We love ‘crazy’ science like this
http://the-toast.net/2014/02/06/linguist-explains-grammar-
doge-wow/
We love ‘crazy’ science like this
And this
http://allthingslinguistic.com/post/56280475132/i-can-has-
thesis-a-linguistic-analysis-of-lolspeak
What is science?
So, with science, we should be able
to answer questions about the
universe, like this one.
You’d expect computer scientists to
somewhat respectfully debate this.
You get
interpreted >>
compiled
JavaScript 4
ever!
Pure is the
only true path
C++ is for real
coders
PHP sucks
Pascal is very
elegant
You’d expect computer scientists to
somewhat respectfully debate this.
Unfortunately, reality is more like
this.
State of the
debate is not so
scientific
But, some people are trying! In this
slidedeck I’ll highlight some of the
interesting results those people
have found so far.
Researchers at Berkeley have
conducted a very exptensive
survey on programming language
factors.
http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/
viz/index.html
Researchers at Berkeley have
conducted a very extensive survey
on programming language factors.
They collected 13.000 (!)
responses, and their entire dataset
is explorable online
http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/
viz/index.html
They founds loads of interesting
facts, I really encourage you to
have a look at their OOPSLA ‘13
paper (Empirical Analysis of
Programming Language Adoption)
My favorite is this graph, factors
for choosing a particular language.
http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/
viz/index.html
They founds loads of interesting
facts, I really encourage you to
have a look at their OOPSLA ‘13
paper (Empirical Analysis of
Programming Language Adoption)
My favorite is this graph, factors
for choosing a particular language.
Notice that the first factor that has
something to do with the language
is on the 6th place.
http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/
viz/index.html
They founds loads of interesting
facts, I really encourage you to
have a look at their OOPSLA ‘13
paper (Empirical Analysis of
Programming Language Adoption)
My favorite is this graph, factors
for choosing a particular language.
Notice that the first factor that has
something to do with the language
is on the 6th place.
Two other languages are on the 8th
and 12th place.
http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/
viz/index.html
What correlates most
with enjoyment?
Meyerovich and Rabkin also
looked into what makes
programmers happy.
Want to guess?
Meyerovich and Rabkin also
looked into what makes
programmers happy.
Want to guess?
It’s expressiveness. That correlates
with enjoyment most.
Could we measure it?
Meyerovich and Rabkin also
looked into what makes
programmers happy.
Want to guess?
It’s expressiveness. That correlates
with enjoyment most.
So what language is most
expressive? Is there a way to
measure this?
Danny Berkholz, researcher at RedMonk came up with a way to do this.
He compared commit sizes of different projects (from Ohloh, covering 7.5
million project-months)
His assumption is that a commit has more or less the same ‘value’ in
terms of functionality over different languages.
http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
In the graph, the thick line indicates the median, the box represents 25
and 75% of the values and the lines 10 and 90%.
http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
Putting the science in computer science
In the graph, the thick line indicates the median, the box represents 25
and 75% of the values and the lines 10 and 90%.
Let’s have a look at what language goes where!
http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
Loads of interesting things to see here. For instance, all the popular
languages (in red) are on the low end of expressiveness. This somehow
corroborates Meyerovich findings: while programmers enjoy
expressiveness, it seems not to be a factor for picking a language.
Loads of interesting things to see here. For instance, all the popular
languages (in red) are on the low end of expressiveness. This somehow
corroborates Meyerovich findings: while programmers enjoy
expressiveness, it seems not to be a factor for picking a language.
Interesting is also the huge difference between CoffeeScipt and
JavaScript, while this might be due to the fact that CoffeeScript is young
and commits are thus quite ‘clean’.
Loads of interesting things to see here. For instance, all the popular
languages (in red) are on the low end of expressiveness. This somehow
corroborates Meyerovich findings: while programmers enjoy
expressiveness, it seems not to be a factor for picking a language.
Interesting is also the huge difference between CoffeeScipt and
JavaScript, while this might be due to the fact that CoffeeScript is young
and commits are thus quite ‘clean’.
Finally, unsurprising, functional (Haskell, F#, Lisps) = expressiveness.
Another interesting fact came out
of Meyerovich and Rabkin’s study.
Putting the science in computer science
Putting the science in computer science
Putting the science in computer science
Could we measure it?
Stefan Hanenberg
Static versus
dynamic, does it
really matter?
Let’s experiment!
Stefan Hanenberg tried to measure
whether static typing has any
benefits over dynamic typing.
Two groups
Stefan Hanenberg tried to measure
whether static typing has any
benefits over dynamic typing.
He divided a group of students into
two groups, one with a type system
and one without, and had them
perform small maintainability
tasks.
Let’s summarize his results... Star
Wars style!
On the left, we have the lover of
dynamically typed stuff. He has gone
through some ‘type casts’ in his life
and he is sick of it!
On the right is his static opponent.
Let’s see how this turns out.
But what about
type casting?
One of the arguments that dynamic
proponents have, is that type casting is
annoying and time consuming.
Hanenberg’s experiment showed:
It does not really
matter
But what about
type casting?
One of the arguments that dynamic
proponents have, is that type casting is
annoying and time consuming.
Hanenberg’s experiment showed:
It does not really matter. For programs
over 10 LOC, you are not slower if you
have to do type casting.
I’m sure I can fix
type errors just as
quickly
I’m sure I can fix
type errors just as
quickly
Not even close
I’m sure I can fix
type errors just as
quickly
Not even close
The differences are HUGE!
Blue bar = Groovy, Green = Java
Vertical axis = time
I’m sure I can fix
type errors just as
quickly
Not even close
The differences are HUGE!
Blue bar = Groovy, Green = Java
Vertical axis = time
In some cases, the run-time errors
occurred at the same line where the
compiler found a type error.
But… my dynamically
typed APIs, they
must be quicker to
use
But… my dynamically
typed APIs, they
must be quicker to
use
No
I’ll document the
APIs!
I’ll document the
APIs!
Won’t
help!
Turns out, type names help more than
documentation.
I’ll use a better
IDE!
Won’t
help!
I’ll use a better
IDE!
Stefan Hanenberg
It looks like (Java-
like) static type
systems
really help in
development!
While more research is needed, we
might conclude this.
Do design patterns work?
Let’s tackle another one!
Walter Tichy
Let’s tackle another one!
Walter Tichy wanted to know
whether design patterns really help
development.
He started small, with a group of
students, testing whether giving
them info on design patterns
helped understandability.
Again two
groups, but
different
Let’s tackle another one!
Walter Tichy wanted to know
whether design patterns really help
development.
He started small, with a group of
students, testing whether giving
them info on design patterns
helped understandability.
Again, students were divided into
two groups, but setup was a bit
different.
There were two programs used (PH
and AOT) and some students got
with the version documentation
first and without second.
On different programs obviously,
otherwise the students would know
the patterns were there in the
second test.
Prechelt et al, 2002. Two controlled experiments assessing
the usefulness of design pattern documentation in
program maintenance. TSE 28(6): 595-606
The results clearly show that knowing a pattern is there, helps
performing maintenance tasks.
However, it was not entirely fair to measure time, as not all solutions
were correct. If you look at the best solutions, you see a clear difference
in favor of the documented version. Ticky updated the study design in
the next version, where only correct solutions were taken into account.
Again two
groups, but
again
different
The results clearly show that knowing a pattern is there, helps
performing maintenance tasks.
However, it was not entirely fair to measure time, as not all solutions
were correct. If you look at the best solutions, you see a clear difference
in favor of the documented version. Ticky updated the study design in
the next version, where only correct solutions were taken into account.
In this next version, professionals were used instead of students.
Furthermore, the setup was different. The same experiment was done
twice, first without participants knowing patterns. Then, they did a
course and after that again they did a test.
Again, results showed that version with patterns turned out to be easier
to modify.
Again, results showed that version with patterns tuned out to be easier to
modify.
For some patterns though (like Observer) the differences in pre- and
posttest were really big. For these patterns, the course made a big
difference. In other words: patterns only help if you understand them.
They work!
It has to do
with how
the human
brain
works
Long term
memory
Short term
memory
The human memory works a bit like a computer. Long term memory can
save stuff for a long time, but it is slow. Short term memory is quick, but
can only retain about 7 items.
Using patterns, you only use 1 slot “this is an observer pattern” rather
than multiple for “this class is notified when something happens in this
other class”
"The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information“, George Miller,
1956
They work!
Experiments
show it,
cognitive
science helps us
understand why
Does Linus’
Law’ hold?
Given enough
eyeballs, all bugs
are shallow
Does Linus’
Law’ hold?
Appearently, the law is not so
universal, we know that code
reviews are hard to do right for
larger pieces of software.
Not
impressed?
Appearently, the law is not so
universal, we know that code
reviews are hard to do right for
larger pieces of software.
Yeah, a tweet is not exactly
science. Don’t worry, I have some
proof too.
Researcher at Microsoft research
published a study in which they
connected the number of bugs in
the release of Vista (gathered
through bug report) with
organizational metrics, like the
number of people that worked on a
particular binary.
Nagappan et al, 2008. The Influence of Organizational
Structure On Software Quality: An Empirical Case Study,
ICSE 2008
They found that the opposite of
Linus’ law is true. The more people
work on a piece of code, the more
error-prone it is!
Nagappan et al, 2008. The Influence of Organizational
Structure On Software Quality: An Empirical Case Study,
ICSE 2008
More
touchers ->
more bugs
More tied to
bugs than
any code
metric
They found that the opposite of
Linus’ law is true. The more people
work on a piece of code, the more
error-prone it is!
These, and other, organizational
big are more tied to quality than
any other code metric!
Nagappan et al, 2008. The Influence of Organizational
Structure On Software Quality: An Empirical Case Study,
ICSE 2008
They found that the opposite of
Linus’ law is true. The more people
work on a piece of code, the more
error-prone it is!
These, and other, organizational
big are more tied to quality than
any other code metric!
This means that if you want to
predict future defects, the best you
can do is look at the company!
Might be me, but I think that is
surprising.
Nagappan et al, 2008. The Influence of Organizational
Structure On Software Quality: An Empirical Case Study,
ICSE 2008
Putting the science
in computer science
Felienne
Delft University of
Technology
That’s it! I hope you got a sense for
the usefullness of software
engineering research in practice.
If you want to keep up, follow my
blog where I regularly blog about
the newest SE research.

More Related Content

Viewers also liked

Refactoring Legacy Code - true story
Refactoring Legacy Code - true storyRefactoring Legacy Code - true story
Refactoring Legacy Code - true storyAki Salmi
 
Leading Tech Teams
Leading Tech TeamsLeading Tech Teams
Leading Tech TeamsFlavius Stef
 
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, Bucharest
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, BucharestTom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, Bucharest
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, BucharestMozaic Works
 
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014TSundberg
 
Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014Ioan Eugen Stan
 
Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Sandro Mancuso
 
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...Mozaic Works
 
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...Mozaic Works
 
Thesis: Slicing of Java Programs using the Soot Framework (2006)
Thesis:  Slicing of Java Programs using the Soot Framework (2006) Thesis:  Slicing of Java Programs using the Soot Framework (2006)
Thesis: Slicing of Java Programs using the Soot Framework (2006) Arvind Devaraj
 
Simplifying your design with higher-order functions
Simplifying your design with higher-order functionsSimplifying your design with higher-order functions
Simplifying your design with higher-order functionsSamir Talwar
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"Cyrille Martraire
 
PHP Summer Training Presentation
PHP Summer Training PresentationPHP Summer Training Presentation
PHP Summer Training PresentationNitesh Sharma
 
project on visual basic 6.0 ' Jewellery Shop Management'
project on visual basic 6.0 ' Jewellery Shop Management' project on visual basic 6.0 ' Jewellery Shop Management'
project on visual basic 6.0 ' Jewellery Shop Management' Anitha Krishnappa
 
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)Radu Marinescu
 
Computer Science & Information Systems
Computer Science & Information SystemsComputer Science & Information Systems
Computer Science & Information SystemsLuis Borges Gouveia
 
Electronic payment system
Electronic payment systemElectronic payment system
Electronic payment systempankhadi
 
Data Structure In C#
Data Structure In C#Data Structure In C#
Data Structure In C#Shahzad
 
មេរៀនៈ Data Structure and Algorithm in C/C++
មេរៀនៈ Data Structure and Algorithm in C/C++មេរៀនៈ Data Structure and Algorithm in C/C++
មេរៀនៈ Data Structure and Algorithm in C/C++Ngeam Soly
 

Viewers also liked (20)

Refactoring Legacy Code - true story
Refactoring Legacy Code - true storyRefactoring Legacy Code - true story
Refactoring Legacy Code - true story
 
Cqrs in babysteps
Cqrs in babystepsCqrs in babysteps
Cqrs in babysteps
 
Leading Tech Teams
Leading Tech TeamsLeading Tech Teams
Leading Tech Teams
 
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, Bucharest
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, BucharestTom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, Bucharest
Tom Gilb - Power to the Programmers @ I T.A.K.E. Unconference 2014, Bucharest
 
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014
BDD with Cucumber-JVM as presented at I T.A.K.E. Unconference in Bucharest 2014
 
Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014Hands on continouous delivery, I TAKE 2014
Hands on continouous delivery, I TAKE 2014
 
Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014
 
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...
Erik talboom - TDD as if The Baby Meant it @I T.A.K.E. Unconference 2013, Buc...
 
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...
Sandro Mancuso – Testing and refactoring legacy code @ I T.A.K.E. Unconferenc...
 
Thesis: Slicing of Java Programs using the Soot Framework (2006)
Thesis:  Slicing of Java Programs using the Soot Framework (2006) Thesis:  Slicing of Java Programs using the Soot Framework (2006)
Thesis: Slicing of Java Programs using the Soot Framework (2006)
 
Simplifying your design with higher-order functions
Simplifying your design with higher-order functionsSimplifying your design with higher-order functions
Simplifying your design with higher-order functions
 
I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"I T.A.K.E. talk: "When DDD meets FP, good things happen"
I T.A.K.E. talk: "When DDD meets FP, good things happen"
 
PHP Summer Training Presentation
PHP Summer Training PresentationPHP Summer Training Presentation
PHP Summer Training Presentation
 
project on visual basic 6.0 ' Jewellery Shop Management'
project on visual basic 6.0 ' Jewellery Shop Management' project on visual basic 6.0 ' Jewellery Shop Management'
project on visual basic 6.0 ' Jewellery Shop Management'
 
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
The Good the Bad and the Ugly of Dealing with Smelly Code (ITAKE Unconference)
 
Computer Science & Information Systems
Computer Science & Information SystemsComputer Science & Information Systems
Computer Science & Information Systems
 
E Payment
E PaymentE Payment
E Payment
 
Electronic payment system
Electronic payment systemElectronic payment system
Electronic payment system
 
Data Structure In C#
Data Structure In C#Data Structure In C#
Data Structure In C#
 
មេរៀនៈ Data Structure and Algorithm in C/C++
មេរៀនៈ Data Structure and Algorithm in C/C++មេរៀនៈ Data Structure and Algorithm in C/C++
មេរៀនៈ Data Structure and Algorithm in C/C++
 

Similar to Putting the science in computer science

Inheritance Versus Roles - The In-Depth Version
Inheritance Versus Roles - The In-Depth VersionInheritance Versus Roles - The In-Depth Version
Inheritance Versus Roles - The In-Depth VersionCurtis Poe
 
Word2vec on the italian language: first experiments
Word2vec on the italian language: first experimentsWord2vec on the italian language: first experiments
Word2vec on the italian language: first experimentsVincenzo Lomonaco
 
Gadgets pwn us? A pattern language for CALL
Gadgets pwn us? A pattern language for CALLGadgets pwn us? A pattern language for CALL
Gadgets pwn us? A pattern language for CALLLawrie Hunter
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 
1066_multitask_prompted_training_en.pdf
1066_multitask_prompted_training_en.pdf1066_multitask_prompted_training_en.pdf
1066_multitask_prompted_training_en.pdfssusere320ca
 
Agile2011
Agile2011Agile2011
Agile2011Caelum
 
A Strong Object Recognition Is Implemented By Lbp, Ltp And...
A Strong Object Recognition Is Implemented By Lbp, Ltp And...A Strong Object Recognition Is Implemented By Lbp, Ltp And...
A Strong Object Recognition Is Implemented By Lbp, Ltp And...Kim Tagtow
 
Essay Helping Others
Essay Helping OthersEssay Helping Others
Essay Helping OthersTracy Ocampo
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?Markus Voelter
 
Process Description Of Object Oriented Programming
Process Description Of Object Oriented ProgrammingProcess Description Of Object Oriented Programming
Process Description Of Object Oriented ProgrammingTonia Wallace
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingersJulio Pari
 
Using ICT to Analyse Language
Using ICT to Analyse LanguageUsing ICT to Analyse Language
Using ICT to Analyse LanguageEka Nathiqo
 
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...CSEIJJournal
 
Open experiments and open-source
Open experiments and open-sourceOpen experiments and open-source
Open experiments and open-sourcepeircej
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asidePVS-Studio
 
Software Citation and a Proposal (NSF workshop at Havard Medical School)
Software Citation and a Proposal (NSF workshop at Havard Medical School)Software Citation and a Proposal (NSF workshop at Havard Medical School)
Software Citation and a Proposal (NSF workshop at Havard Medical School)James Howison
 

Similar to Putting the science in computer science (20)

FinalReport
FinalReportFinalReport
FinalReport
 
Inheritance Versus Roles - The In-Depth Version
Inheritance Versus Roles - The In-Depth VersionInheritance Versus Roles - The In-Depth Version
Inheritance Versus Roles - The In-Depth Version
 
The NLP Muppets revolution!
The NLP Muppets revolution!The NLP Muppets revolution!
The NLP Muppets revolution!
 
Word2vec on the italian language: first experiments
Word2vec on the italian language: first experimentsWord2vec on the italian language: first experiments
Word2vec on the italian language: first experiments
 
Gadgets pwn us? A pattern language for CALL
Gadgets pwn us? A pattern language for CALLGadgets pwn us? A pattern language for CALL
Gadgets pwn us? A pattern language for CALL
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 
1066_multitask_prompted_training_en.pdf
1066_multitask_prompted_training_en.pdf1066_multitask_prompted_training_en.pdf
1066_multitask_prompted_training_en.pdf
 
Agile2011
Agile2011Agile2011
Agile2011
 
A Strong Object Recognition Is Implemented By Lbp, Ltp And...
A Strong Object Recognition Is Implemented By Lbp, Ltp And...A Strong Object Recognition Is Implemented By Lbp, Ltp And...
A Strong Object Recognition Is Implemented By Lbp, Ltp And...
 
Essay Helping Others
Essay Helping OthersEssay Helping Others
Essay Helping Others
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Process Description Of Object Oriented Programming
Process Description Of Object Oriented ProgrammingProcess Description Of Object Oriented Programming
Process Description Of Object Oriented Programming
 
How to supervise a thesis in NLP in the ChatGPT era? By Laure Soulier
How to supervise a thesis in NLP in the ChatGPT era? By Laure SoulierHow to supervise a thesis in NLP in the ChatGPT era? By Laure Soulier
How to supervise a thesis in NLP in the ChatGPT era? By Laure Soulier
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingers
 
Using ICT to Analyse Language
Using ICT to Analyse LanguageUsing ICT to Analyse Language
Using ICT to Analyse Language
 
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...
Comparative Analysis of Verbal Languages for Computing to Determine Which Lan...
 
Open experiments and open-source
Open experiments and open-sourceOpen experiments and open-source
Open experiments and open-source
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from aside
 
Software Citation and a Proposal (NSF workshop at Havard Medical School)
Software Citation and a Proposal (NSF workshop at Havard Medical School)Software Citation and a Proposal (NSF workshop at Havard Medical School)
Software Citation and a Proposal (NSF workshop at Havard Medical School)
 
Report On Air Flow Rig And Bernoullis
Report On Air Flow Rig And BernoullisReport On Air Flow Rig And Bernoullis
Report On Air Flow Rig And Bernoullis
 

More from Felienne Hermans

Using F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeUsing F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeFelienne Hermans
 
Functional Programming in Excel
Functional Programming in ExcelFunctional Programming in Excel
Functional Programming in ExcelFelienne Hermans
 
Programming is logical reasoning?
Programming is logical reasoning?Programming is logical reasoning?
Programming is logical reasoning?Felienne Hermans
 
Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Felienne Hermans
 
Programming by Calculation
Programming by CalculationProgramming by Calculation
Programming by CalculationFelienne Hermans
 
A board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversA board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversFelienne Hermans
 
Spreadsheets for developers
Spreadsheets for developersSpreadsheets for developers
Spreadsheets for developersFelienne Hermans
 
Improving Spreadsheet Test Practices
Improving Spreadsheet Test PracticesImproving Spreadsheet Test Practices
Improving Spreadsheet Test PracticesFelienne Hermans
 
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...Felienne Hermans
 
Social media for the busy scientist
Social media for the busy scientistSocial media for the busy scientist
Social media for the busy scientistFelienne Hermans
 

More from Felienne Hermans (15)

Using F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridgeUsing F# and genetic programming to play computer bridge
Using F# and genetic programming to play computer bridge
 
Functional Programming in Excel
Functional Programming in ExcelFunctional Programming in Excel
Functional Programming in Excel
 
How does code sound?
How does code sound?How does code sound?
How does code sound?
 
Programming is logical reasoning?
Programming is logical reasoning?Programming is logical reasoning?
Programming is logical reasoning?
 
Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?Do Code Smell Hamper Novice Programmers?
Do Code Smell Hamper Novice Programmers?
 
Programming by Calculation
Programming by CalculationProgramming by Calculation
Programming by Calculation
 
A board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solversA board game night with geeks: attacking Quarto ties with SAT solvers
A board game night with geeks: attacking Quarto ties with SAT solvers
 
Spreadsheets for developers
Spreadsheets for developersSpreadsheets for developers
Spreadsheets for developers
 
Spreadsheets are code
Spreadsheets are codeSpreadsheets are code
Spreadsheets are code
 
Improving Spreadsheet Test Practices
Improving Spreadsheet Test PracticesImproving Spreadsheet Test Practices
Improving Spreadsheet Test Practices
 
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
Spreadsheets are graphs too: Using Neo4J as backend to store spreadsheet info...
 
Social media for the busy scientist
Social media for the busy scientistSocial media for the busy scientist
Social media for the busy scientist
 
Spreadsheet Testing
Spreadsheet TestingSpreadsheet Testing
Spreadsheet Testing
 
TEDxDelft
TEDxDelftTEDxDelft
TEDxDelft
 
The power of symmetry
The power of symmetryThe power of symmetry
The power of symmetry
 

Recently uploaded

Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...sahb78428
 
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Amil baba
 
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdf
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdfsdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdf
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdfJulia Kaye
 
Test of Significance of Large Samples for Mean = µ.pptx
Test of Significance of Large Samples for Mean = µ.pptxTest of Significance of Large Samples for Mean = µ.pptx
Test of Significance of Large Samples for Mean = µ.pptxHome
 
Design of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxDesign of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxYogeshKumarKJMIT
 
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Apollo Techno Industries Pvt Ltd
 
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxVertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxLMW Machine Tool Division
 
ASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderjuancarlos286641
 
Power System electrical and electronics .pptx
Power System electrical and electronics .pptxPower System electrical and electronics .pptx
Power System electrical and electronics .pptxMUKULKUMAR210
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxKISHAN KUMAR
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxjasonsedano2
 
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
Engineering Mechanics  Chapter 5  Equilibrium of a Rigid BodyEngineering Mechanics  Chapter 5  Equilibrium of a Rigid Body
Engineering Mechanics Chapter 5 Equilibrium of a Rigid BodyAhmadHajasad2
 
Phase noise transfer functions.pptx
Phase noise transfer      functions.pptxPhase noise transfer      functions.pptx
Phase noise transfer functions.pptxSaiGouthamSunkara
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfNaveenVerma126
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical SensorTanvir Moin
 
Nodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxNodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxwendy cai
 

Recently uploaded (20)

Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...Clutches and brkesSelect any 3 position random motion out of real world and d...
Clutches and brkesSelect any 3 position random motion out of real world and d...
 
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
Best-NO1 Best Rohani Amil In Lahore Kala Ilam In Lahore Kala Jadu Amil In Lah...
 
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdf
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdfsdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdf
sdfsadopkjpiosufoiasdoifjasldkjfl a asldkjflaskdjflkjsdsdf
 
Test of Significance of Large Samples for Mean = µ.pptx
Test of Significance of Large Samples for Mean = µ.pptxTest of Significance of Large Samples for Mean = µ.pptx
Test of Significance of Large Samples for Mean = µ.pptx
 
Design of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptxDesign of Clutches and Brakes in Design of Machine Elements.pptx
Design of Clutches and Brakes in Design of Machine Elements.pptx
 
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...Technology Features of Apollo HDD Machine, Its Technical Specification with C...
Technology Features of Apollo HDD Machine, Its Technical Specification with C...
 
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptxVertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
Vertical- Machining - Center - VMC -LMW-Machine-Tool-Division.pptx
 
ASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entenderASME BPVC 2023 Section I para leer y entender
ASME BPVC 2023 Section I para leer y entender
 
Power System electrical and electronics .pptx
Power System electrical and electronics .pptxPower System electrical and electronics .pptx
Power System electrical and electronics .pptx
 
Mohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptxMohs Scale of Hardness, Hardness Scale.pptx
Mohs Scale of Hardness, Hardness Scale.pptx
 
nvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptxnvidia AI-gtc 2024 partial slide deck.pptx
nvidia AI-gtc 2024 partial slide deck.pptx
 
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
Engineering Mechanics  Chapter 5  Equilibrium of a Rigid BodyEngineering Mechanics  Chapter 5  Equilibrium of a Rigid Body
Engineering Mechanics Chapter 5 Equilibrium of a Rigid Body
 
Phase noise transfer functions.pptx
Phase noise transfer      functions.pptxPhase noise transfer      functions.pptx
Phase noise transfer functions.pptx
 
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdfSummer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
Summer training report on BUILDING CONSTRUCTION for DIPLOMA Students.pdf
 
Lecture 2 .pdf
Lecture 2                           .pdfLecture 2                           .pdf
Lecture 2 .pdf
 
Basic Principle of Electrochemical Sensor
Basic Principle of  Electrochemical SensorBasic Principle of  Electrochemical Sensor
Basic Principle of Electrochemical Sensor
 
Litature Review: Research Paper work for Engineering
Litature Review: Research Paper work for EngineeringLitature Review: Research Paper work for Engineering
Litature Review: Research Paper work for Engineering
 
Nodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptxNodal seismic construction requirements.pptx
Nodal seismic construction requirements.pptx
 
Lecture 2 .pptx
Lecture 2                            .pptxLecture 2                            .pptx
Lecture 2 .pptx
 
計劃趕得上變化
計劃趕得上變化計劃趕得上變化
計劃趕得上變化
 

Putting the science in computer science

  • 1. Felienne Delft University of Technology Putting the science in computer science This slidedeck is about the science in computer science
  • 2. Felienne Delft University of Technology Putting the science in computer science This slidedeck is about the science in computer science
  • 3. We all love science, right?
  • 4. We love ‘crazy’ science like this http://the-toast.net/2014/02/06/linguist-explains-grammar- doge-wow/
  • 5. We love ‘crazy’ science like this And this http://allthingslinguistic.com/post/56280475132/i-can-has- thesis-a-linguistic-analysis-of-lolspeak
  • 7. So, with science, we should be able to answer questions about the universe, like this one.
  • 8. You’d expect computer scientists to somewhat respectfully debate this.
  • 9. You get interpreted >> compiled JavaScript 4 ever! Pure is the only true path C++ is for real coders PHP sucks Pascal is very elegant You’d expect computer scientists to somewhat respectfully debate this. Unfortunately, reality is more like this.
  • 10. State of the debate is not so scientific
  • 11. But, some people are trying! In this slidedeck I’ll highlight some of the interesting results those people have found so far.
  • 12. Researchers at Berkeley have conducted a very exptensive survey on programming language factors. http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/ viz/index.html
  • 13. Researchers at Berkeley have conducted a very extensive survey on programming language factors. They collected 13.000 (!) responses, and their entire dataset is explorable online http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/ viz/index.html
  • 14. They founds loads of interesting facts, I really encourage you to have a look at their OOPSLA ‘13 paper (Empirical Analysis of Programming Language Adoption) My favorite is this graph, factors for choosing a particular language. http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/ viz/index.html
  • 15. They founds loads of interesting facts, I really encourage you to have a look at their OOPSLA ‘13 paper (Empirical Analysis of Programming Language Adoption) My favorite is this graph, factors for choosing a particular language. Notice that the first factor that has something to do with the language is on the 6th place. http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/ viz/index.html
  • 16. They founds loads of interesting facts, I really encourage you to have a look at their OOPSLA ‘13 paper (Empirical Analysis of Programming Language Adoption) My favorite is this graph, factors for choosing a particular language. Notice that the first factor that has something to do with the language is on the 6th place. Two other languages are on the 8th and 12th place. http://www.eecs.berkeley.edu/~lmeyerov/projects/socioplt/ viz/index.html
  • 17. What correlates most with enjoyment? Meyerovich and Rabkin also looked into what makes programmers happy. Want to guess?
  • 18. Meyerovich and Rabkin also looked into what makes programmers happy. Want to guess? It’s expressiveness. That correlates with enjoyment most.
  • 19. Could we measure it? Meyerovich and Rabkin also looked into what makes programmers happy. Want to guess? It’s expressiveness. That correlates with enjoyment most. So what language is most expressive? Is there a way to measure this?
  • 20. Danny Berkholz, researcher at RedMonk came up with a way to do this. He compared commit sizes of different projects (from Ohloh, covering 7.5 million project-months) His assumption is that a commit has more or less the same ‘value’ in terms of functionality over different languages. http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
  • 21. In the graph, the thick line indicates the median, the box represents 25 and 75% of the values and the lines 10 and 90%. http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
  • 23. In the graph, the thick line indicates the median, the box represents 25 and 75% of the values and the lines 10 and 90%. Let’s have a look at what language goes where! http://redmonk.com/dberkholz/2013/03/25/programming-languages-ranked-by-expressiveness/
  • 24. Loads of interesting things to see here. For instance, all the popular languages (in red) are on the low end of expressiveness. This somehow corroborates Meyerovich findings: while programmers enjoy expressiveness, it seems not to be a factor for picking a language.
  • 25. Loads of interesting things to see here. For instance, all the popular languages (in red) are on the low end of expressiveness. This somehow corroborates Meyerovich findings: while programmers enjoy expressiveness, it seems not to be a factor for picking a language. Interesting is also the huge difference between CoffeeScipt and JavaScript, while this might be due to the fact that CoffeeScript is young and commits are thus quite ‘clean’.
  • 26. Loads of interesting things to see here. For instance, all the popular languages (in red) are on the low end of expressiveness. This somehow corroborates Meyerovich findings: while programmers enjoy expressiveness, it seems not to be a factor for picking a language. Interesting is also the huge difference between CoffeeScipt and JavaScript, while this might be due to the fact that CoffeeScript is young and commits are thus quite ‘clean’. Finally, unsurprising, functional (Haskell, F#, Lisps) = expressiveness.
  • 27. Another interesting fact came out of Meyerovich and Rabkin’s study.
  • 32. Stefan Hanenberg Static versus dynamic, does it really matter? Let’s experiment! Stefan Hanenberg tried to measure whether static typing has any benefits over dynamic typing.
  • 33. Two groups Stefan Hanenberg tried to measure whether static typing has any benefits over dynamic typing. He divided a group of students into two groups, one with a type system and one without, and had them perform small maintainability tasks. Let’s summarize his results... Star Wars style!
  • 34. On the left, we have the lover of dynamically typed stuff. He has gone through some ‘type casts’ in his life and he is sick of it! On the right is his static opponent. Let’s see how this turns out.
  • 35. But what about type casting? One of the arguments that dynamic proponents have, is that type casting is annoying and time consuming. Hanenberg’s experiment showed:
  • 36. It does not really matter But what about type casting? One of the arguments that dynamic proponents have, is that type casting is annoying and time consuming. Hanenberg’s experiment showed: It does not really matter. For programs over 10 LOC, you are not slower if you have to do type casting.
  • 37. I’m sure I can fix type errors just as quickly
  • 38. I’m sure I can fix type errors just as quickly Not even close
  • 39. I’m sure I can fix type errors just as quickly Not even close The differences are HUGE! Blue bar = Groovy, Green = Java Vertical axis = time
  • 40. I’m sure I can fix type errors just as quickly Not even close The differences are HUGE! Blue bar = Groovy, Green = Java Vertical axis = time In some cases, the run-time errors occurred at the same line where the compiler found a type error.
  • 41. But… my dynamically typed APIs, they must be quicker to use
  • 42. But… my dynamically typed APIs, they must be quicker to use No
  • 44. I’ll document the APIs! Won’t help! Turns out, type names help more than documentation.
  • 45. I’ll use a better IDE!
  • 47. Stefan Hanenberg It looks like (Java- like) static type systems really help in development! While more research is needed, we might conclude this.
  • 48. Do design patterns work? Let’s tackle another one!
  • 49. Walter Tichy Let’s tackle another one! Walter Tichy wanted to know whether design patterns really help development. He started small, with a group of students, testing whether giving them info on design patterns helped understandability.
  • 50. Again two groups, but different Let’s tackle another one! Walter Tichy wanted to know whether design patterns really help development. He started small, with a group of students, testing whether giving them info on design patterns helped understandability. Again, students were divided into two groups, but setup was a bit different.
  • 51. There were two programs used (PH and AOT) and some students got with the version documentation first and without second. On different programs obviously, otherwise the students would know the patterns were there in the second test. Prechelt et al, 2002. Two controlled experiments assessing the usefulness of design pattern documentation in program maintenance. TSE 28(6): 595-606
  • 52. The results clearly show that knowing a pattern is there, helps performing maintenance tasks. However, it was not entirely fair to measure time, as not all solutions were correct. If you look at the best solutions, you see a clear difference in favor of the documented version. Ticky updated the study design in the next version, where only correct solutions were taken into account.
  • 53. Again two groups, but again different The results clearly show that knowing a pattern is there, helps performing maintenance tasks. However, it was not entirely fair to measure time, as not all solutions were correct. If you look at the best solutions, you see a clear difference in favor of the documented version. Ticky updated the study design in the next version, where only correct solutions were taken into account.
  • 54. In this next version, professionals were used instead of students. Furthermore, the setup was different. The same experiment was done twice, first without participants knowing patterns. Then, they did a course and after that again they did a test.
  • 55. Again, results showed that version with patterns turned out to be easier to modify.
  • 56. Again, results showed that version with patterns tuned out to be easier to modify. For some patterns though (like Observer) the differences in pre- and posttest were really big. For these patterns, the course made a big difference. In other words: patterns only help if you understand them.
  • 58. It has to do with how the human brain works
  • 59. Long term memory Short term memory The human memory works a bit like a computer. Long term memory can save stuff for a long time, but it is slow. Short term memory is quick, but can only retain about 7 items. Using patterns, you only use 1 slot “this is an observer pattern” rather than multiple for “this class is notified when something happens in this other class” "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information“, George Miller, 1956
  • 62. Given enough eyeballs, all bugs are shallow Does Linus’ Law’ hold?
  • 63. Appearently, the law is not so universal, we know that code reviews are hard to do right for larger pieces of software.
  • 64. Not impressed? Appearently, the law is not so universal, we know that code reviews are hard to do right for larger pieces of software. Yeah, a tweet is not exactly science. Don’t worry, I have some proof too.
  • 65. Researcher at Microsoft research published a study in which they connected the number of bugs in the release of Vista (gathered through bug report) with organizational metrics, like the number of people that worked on a particular binary. Nagappan et al, 2008. The Influence of Organizational Structure On Software Quality: An Empirical Case Study, ICSE 2008
  • 66. They found that the opposite of Linus’ law is true. The more people work on a piece of code, the more error-prone it is! Nagappan et al, 2008. The Influence of Organizational Structure On Software Quality: An Empirical Case Study, ICSE 2008 More touchers -> more bugs
  • 67. More tied to bugs than any code metric They found that the opposite of Linus’ law is true. The more people work on a piece of code, the more error-prone it is! These, and other, organizational big are more tied to quality than any other code metric! Nagappan et al, 2008. The Influence of Organizational Structure On Software Quality: An Empirical Case Study, ICSE 2008
  • 68. They found that the opposite of Linus’ law is true. The more people work on a piece of code, the more error-prone it is! These, and other, organizational big are more tied to quality than any other code metric! This means that if you want to predict future defects, the best you can do is look at the company! Might be me, but I think that is surprising. Nagappan et al, 2008. The Influence of Organizational Structure On Software Quality: An Empirical Case Study, ICSE 2008
  • 69. Putting the science in computer science Felienne Delft University of Technology That’s it! I hope you got a sense for the usefullness of software engineering research in practice. If you want to keep up, follow my blog where I regularly blog about the newest SE research.

Editor's Notes

  1. Static type system really helped in finding errors. Often
  2. Type names help more than documentation!