SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
Of Rowers and Programmers, or What's in 
Common Between Software Development 
Business and Rowing 
Author: Evgeniy Ryzhkov 
Date: 03.03.2014 
Due to the specifics of my job, I have to communicate with programmers pretty often. Our company 
develops, promotes and sells self-developed software products, static code analyzers PVS-Studio and 
CppCat. Our products are oriented toward programmers and help find bugs in the source code of 
applications through automatic code analysis. 
Figure 1 - Evgeniy Ryzhkov 
So obviously both my coworkers and our customers are programmers, and I communicate with them every 
day. That's why I have a perfect understanding of a programmer's way of thinking. Well, I am actually a 
programmer by education too, so it used to be my own way of thinking some time ago.
The more I deal with programmers, the more similarities I find between a programmer's job and, strange as 
it may sound, rowing. What am I talking about? I'll tell you about it in this article. 
Rowing is a very interesting sport. Let's see what Wikipedia has to say about it: 
While rowing, the athlete sits in the boat facing toward the stern, and uses the oars which are held in place 
by the oarlocks to propel the boat forward (towards the bow) ... In sweep or sweep-oar rowing, each rower 
has one oar, held with both hands. This is generally done in pairs, fours, and eights. In sculling each rower 
has two oars (or sculls), one in each hand. Sculling is usually done without a coxswain, in quads, doubles or 
singles. 
Take a look at this photo of rowers. There's one interesting thing to it. 
Figure 2 - Double scull 
If there are just two rowers in a boat, they can manage the job themselves without a coxswain. 
But when there are four or, especially, eight rowers in a boat, one more person is added to the team - a 
coxswain facing toward the boat's stem and steering the boat. Don't you feel certain associations with 
programming?
Figure 3 - An eight 
When a programmer is working on a task alone or with a coworker, they can cope with the task by 
themselves. But once the project team extends to include a few more developers, they can no longer do 
without a so called project manager. Unlike the project technical manager who is responsible for technical 
decisions, the project manager has a different business to care about. First, he defines the "route": he 
makes decisions about which functions should be included into the project and which should be thrown 
away. Second, he defines the "rowing pace" - the frequency of releasing new product versions. Simply 
speaking, he answers the question, "What's the release date?" If the team is working on a custom-made 
software product, the project manager is also responsible for carrying out negotiations with the customer. 
Moreover, rowers sometimes rely on reference points like a lane or buoys indicating the route. 
Programmers also seem to have certain reference points: users' wish-lists, a list of known bugs... Well, ask 
any programmer and he will at once list a dozen tasks in a project to be solved first of all! But if 
programmers only give these answers to themselves, they'll end up in the Mediterranean Sea, for they sit 
"facing toward the stern" and therefore cannot see where they are heading to. In other words, they will be 
developing their product for years and never release a new version. 
However, unlike rowers who know for 100% sure what for they need the coxswain, programmers usually 
treat the project manager like an "odd man out". Why? Maybe because they mistake him for a stupid boss 
who knows nothing himself but is allowed to "teach others what's what". 
Here you are a few examples.
When working on a project, a programmer gets a task, say, to implement a certain function. While working 
on it, it occurs to him to implement another extra function which is simple and will take him just a couple of 
days. He decides to fulfill this idea along the way, for he thinks himself to be a good guy who has invented a 
"cool thing" all by himself, so his boss will surely compliment him. Well, it turns out, however, that some 
basic code structures work quite differently than he expected, so he just rewrites the code in a short time 
(just a week, after all!). Well done, isn't it? 
No, it's not! In this example, it is certainly the project manager who is to blame. He has overlooked that the 
programmer made up a task (or rather a few ones) for himself and got busy with it. The project manager 
should not have allowed that because additional functions may appear useless while errors can't occur in 
the basic part of the code, for there can never be such input data. But the programmer is naturally fond of 
solving various difficult tasks, so it doesn't get to him that he is "rowing wrong way". 
Another example. A potential shows interest in a product. He is even ready to buy it, but he doesn't like the 
way a certain function behaves, so he asks the programmer to modify it. The programmer will be glad to do 
that (he has helped a fellowman!), the deal is done (he's anticipating a bonus!), but the project manager 
gives him a telling-off for what he has done to the function. Why? Because changing this particular 
function's behavior for one customer has spoilt it for other 100 current users. Again, the project manager is 
to blame in this case, for he has allowed the programmer to take the initiative. 
What conclusions are to draw from all that? I won't draw any, I just have a request to all programmers. 
When you guys are sitting in one boat with your coworkers facing toward the stern, please keep one thing in 
mind: if each of you independently decides where and at which pace to row, you'll get to the Mediterranean 
Sea or, what's more likely, will never get anywhere. And we all need to head for our goal, don't we?

Weitere ähnliche Inhalte

Was ist angesagt?

Question 6 Evaluation
Question 6  EvaluationQuestion 6  Evaluation
Question 6 Evaluationnwanj004316
 
Evaluation - Question 7
Evaluation - Question 7Evaluation - Question 7
Evaluation - Question 7acartermedia
 
Qwuezzy 6
Qwuezzy 6Qwuezzy 6
Qwuezzy 6aydan1
 
Geecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversBruno Bossola
 
Evaluation question:6 What have you learnt about technology from the process...
Evaluation question:6 What have you learnt about technology from the process...Evaluation question:6 What have you learnt about technology from the process...
Evaluation question:6 What have you learnt about technology from the process...emmanuella thomas
 

Was ist angesagt? (11)

Question 6 Evaluation
Question 6  EvaluationQuestion 6  Evaluation
Question 6 Evaluation
 
Question 6
Question 6Question 6
Question 6
 
Evaluation - Question 7
Evaluation - Question 7Evaluation - Question 7
Evaluation - Question 7
 
Qwuezzy 6
Qwuezzy 6Qwuezzy 6
Qwuezzy 6
 
Evaluation 6
Evaluation 6Evaluation 6
Evaluation 6
 
Evaluation 6x
Evaluation 6xEvaluation 6x
Evaluation 6x
 
Technologies I used
Technologies I usedTechnologies I used
Technologies I used
 
Geecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelieversGeecon10: Object Oriented for nonbelievers
Geecon10: Object Oriented for nonbelievers
 
Question 6
Question 6Question 6
Question 6
 
Evaluation question:6 What have you learnt about technology from the process...
Evaluation question:6 What have you learnt about technology from the process...Evaluation question:6 What have you learnt about technology from the process...
Evaluation question:6 What have you learnt about technology from the process...
 
Agile coach - roadmap and user story map
Agile coach - roadmap and user story map Agile coach - roadmap and user story map
Agile coach - roadmap and user story map
 

Andere mochten auch

Pierce Leonard – Ironman
Pierce Leonard – IronmanPierce Leonard – Ironman
Pierce Leonard – Ironmanpeebee10
 
BMD Northcliffe Surf Life Saving Club
BMD Northcliffe Surf Life Saving ClubBMD Northcliffe Surf Life Saving Club
BMD Northcliffe Surf Life Saving Clubpeebee10
 
Ironman 15th March
Ironman 15th MarchIronman 15th March
Ironman 15th MarchAmitSamarth
 
2011 asrl navy_open_event_report
2011 asrl navy_open_event_report2011 asrl navy_open_event_report
2011 asrl navy_open_event_reportpeebee10
 
Владимир Волошин: «Секреты железных атлетов Ironman»
Владимир Волошин: «Секреты железных атлетов Ironman»Владимир Волошин: «Секреты железных атлетов Ironman»
Владимир Волошин: «Секреты железных атлетов Ironman»BBDO Group
 
Triathlon 101 - Basics of the Olympic Sport
Triathlon 101 - Basics of the Olympic SportTriathlon 101 - Basics of the Olympic Sport
Triathlon 101 - Basics of the Olympic SportOnline Registraton
 
Rowers 1 .Pps
Rowers 1 .PpsRowers 1 .Pps
Rowers 1 .Ppsphil_ep
 

Andere mochten auch (9)

Sam Spiegel
Sam SpiegelSam Spiegel
Sam Spiegel
 
Pierce Leonard – Ironman
Pierce Leonard – IronmanPierce Leonard – Ironman
Pierce Leonard – Ironman
 
Adam triathalon new
Adam triathalon  newAdam triathalon  new
Adam triathalon new
 
BMD Northcliffe Surf Life Saving Club
BMD Northcliffe Surf Life Saving ClubBMD Northcliffe Surf Life Saving Club
BMD Northcliffe Surf Life Saving Club
 
Ironman 15th March
Ironman 15th MarchIronman 15th March
Ironman 15th March
 
2011 asrl navy_open_event_report
2011 asrl navy_open_event_report2011 asrl navy_open_event_report
2011 asrl navy_open_event_report
 
Владимир Волошин: «Секреты железных атлетов Ironman»
Владимир Волошин: «Секреты железных атлетов Ironman»Владимир Волошин: «Секреты железных атлетов Ironman»
Владимир Волошин: «Секреты железных атлетов Ironman»
 
Triathlon 101 - Basics of the Olympic Sport
Triathlon 101 - Basics of the Olympic SportTriathlon 101 - Basics of the Olympic Sport
Triathlon 101 - Basics of the Olympic Sport
 
Rowers 1 .Pps
Rowers 1 .PpsRowers 1 .Pps
Rowers 1 .Pps
 

Ähnlich wie Of Rowers and Programmers, or What's in Common Between Software Development Business and Rowing

On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)Zoe Landon
 
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and TechnologyEnplore AB
 
Myths about static analysis. The second myth - expert developers do not make ...
Myths about static analysis. The second myth - expert developers do not make ...Myths about static analysis. The second myth - expert developers do not make ...
Myths about static analysis. The second myth - expert developers do not make ...PVS-Studio
 
Ha5 project charter_lewis
Ha5 project charter_lewisHa5 project charter_lewis
Ha5 project charter_lewisLewisB2013
 
CppCat, an Ambitious C++ Code Analyzer from Tula
CppCat, an Ambitious C++ Code Analyzer from TulaCppCat, an Ambitious C++ Code Analyzer from Tula
CppCat, an Ambitious C++ Code Analyzer from TulaAndrey Karpov
 
xkcd viewer report
xkcd viewer reportxkcd viewer report
xkcd viewer reportZx MYS
 
It is difficult
It is difficultIt is difficult
It is difficultPVS-Studio
 
Ha5 project charter_100314 (1)
Ha5 project charter_100314 (1)Ha5 project charter_100314 (1)
Ha5 project charter_100314 (1)BenWhite101
 
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...Andrey Karpov
 
Project charter Task 1
Project charter Task 1Project charter Task 1
Project charter Task 1ElliotBlack
 
Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea Designveloper
 
Viacheslav Eremin interview about DOT NET (eng lang)
Viacheslav Eremin interview about DOT NET (eng lang)Viacheslav Eremin interview about DOT NET (eng lang)
Viacheslav Eremin interview about DOT NET (eng lang)Viacheslav Eremin
 
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
 
Put a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What HappensPut a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What HappensC4Media
 
Rapid design prototyping
Rapid design prototypingRapid design prototyping
Rapid design prototypingAyako Sayama
 
Visual Rhetoric, Monday March 10, 2014
Visual Rhetoric, Monday March 10, 2014Visual Rhetoric, Monday March 10, 2014
Visual Rhetoric, Monday March 10, 2014Miami University
 

Ähnlich wie Of Rowers and Programmers, or What's in Common Between Software Development Business and Rowing (20)

On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)
 
AD - Developer communication and Technology
AD - Developer communication and TechnologyAD - Developer communication and Technology
AD - Developer communication and Technology
 
Myths about static analysis. The second myth - expert developers do not make ...
Myths about static analysis. The second myth - expert developers do not make ...Myths about static analysis. The second myth - expert developers do not make ...
Myths about static analysis. The second myth - expert developers do not make ...
 
Ha5 project charter_lewis
Ha5 project charter_lewisHa5 project charter_lewis
Ha5 project charter_lewis
 
Project Charter
Project CharterProject Charter
Project Charter
 
CppCat, an Ambitious C++ Code Analyzer from Tula
CppCat, an Ambitious C++ Code Analyzer from TulaCppCat, an Ambitious C++ Code Analyzer from Tula
CppCat, an Ambitious C++ Code Analyzer from Tula
 
xkcd viewer report
xkcd viewer reportxkcd viewer report
xkcd viewer report
 
It is difficult
It is difficultIt is difficult
It is difficult
 
Ha5 project charter_100314 (1)
Ha5 project charter_100314 (1)Ha5 project charter_100314 (1)
Ha5 project charter_100314 (1)
 
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
 
Frame or not to Frame
Frame or not to FrameFrame or not to Frame
Frame or not to Frame
 
Project charter Task 1
Project charter Task 1Project charter Task 1
Project charter Task 1
 
Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea
 
Viacheslav Eremin interview about DOT NET (eng lang)
Viacheslav Eremin interview about DOT NET (eng lang)Viacheslav Eremin interview about DOT NET (eng lang)
Viacheslav Eremin interview about DOT NET (eng lang)
 
MyReplayInZen
MyReplayInZenMyReplayInZen
MyReplayInZen
 
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
 
Put a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What HappensPut a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What Happens
 
Rapid design prototyping
Rapid design prototypingRapid design prototyping
Rapid design prototyping
 
Visual Rhetoric, Monday March 10, 2014
Visual Rhetoric, Monday March 10, 2014Visual Rhetoric, Monday March 10, 2014
Visual Rhetoric, Monday March 10, 2014
 
Designer vs Developer
Designer vs DeveloperDesigner vs Developer
Designer vs Developer
 

Mehr von Andrey Karpov

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программистаAndrey Karpov
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developerAndrey Karpov
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Andrey Karpov
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesAndrey Karpov
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewAndrey Karpov
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокAndrey Karpov
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Andrey Karpov
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesAndrey Karpov
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?Andrey Karpov
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaAndrey Karpov
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)Andrey Karpov
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Andrey Karpov
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerAndrey Karpov
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareAndrey Karpov
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineAndrey Karpov
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsAndrey Karpov
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++Andrey Karpov
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?Andrey Karpov
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youAndrey Karpov
 

Mehr von Andrey Karpov (20)

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developer
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error Examples
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature Overview
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
 
PVS-Studio в 2021
PVS-Studio в 2021PVS-Studio в 2021
PVS-Studio в 2021
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' Mistakes
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and Java
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical Reviewer
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal Engine
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for you
 

Kürzlich hochgeladen

KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...Any kyc Account
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdfRenandantas16
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMRavindra Nath Shukla
 
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Dipal Arora
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Servicediscovermytutordmt
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxWorkforce Group
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Serviceritikaroy0888
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...lizamodels9
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataExhibitors Data
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear RegressionRavindra Nath Shukla
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...Aggregage
 
Monthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxMonthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxAndy Lambert
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfPaul Menig
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangaloreamitlee9823
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMANIlamathiKannappan
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756dollysharma2066
 
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...anilsa9823
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 

Kürzlich hochgeladen (20)

KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
 
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf0183760ssssssssssssssssssssssssssss00101011 (27).pdf
0183760ssssssssssssssssssssssssssss00101011 (27).pdf
 
Monte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSMMonte Carlo simulation : Simulation using MCSM
Monte Carlo simulation : Simulation using MCSM
 
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
Call Girls Navi Mumbai Just Call 9907093804 Top Class Call Girl Service Avail...
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Service
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptx
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
RSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors DataRSA Conference Exhibitor List 2024 - Exhibitors Data
RSA Conference Exhibitor List 2024 - Exhibitors Data
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear Regression
 
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
The Path to Product Excellence: Avoiding Common Pitfalls and Enhancing Commun...
 
Monthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxMonthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptx
 
Grateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdfGrateful 7 speech thanking everyone that has helped.pdf
Grateful 7 speech thanking everyone that has helped.pdf
 
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service BangaloreCall Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
Call Girls Hebbal Just Call 👗 7737669865 👗 Top Class Call Girl Service Bangalore
 
A DAY IN THE LIFE OF A SALESMAN / WOMAN
A DAY IN THE LIFE OF A  SALESMAN / WOMANA DAY IN THE LIFE OF A  SALESMAN / WOMAN
A DAY IN THE LIFE OF A SALESMAN / WOMAN
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 

Of Rowers and Programmers, or What's in Common Between Software Development Business and Rowing

  • 1. Of Rowers and Programmers, or What's in Common Between Software Development Business and Rowing Author: Evgeniy Ryzhkov Date: 03.03.2014 Due to the specifics of my job, I have to communicate with programmers pretty often. Our company develops, promotes and sells self-developed software products, static code analyzers PVS-Studio and CppCat. Our products are oriented toward programmers and help find bugs in the source code of applications through automatic code analysis. Figure 1 - Evgeniy Ryzhkov So obviously both my coworkers and our customers are programmers, and I communicate with them every day. That's why I have a perfect understanding of a programmer's way of thinking. Well, I am actually a programmer by education too, so it used to be my own way of thinking some time ago.
  • 2. The more I deal with programmers, the more similarities I find between a programmer's job and, strange as it may sound, rowing. What am I talking about? I'll tell you about it in this article. Rowing is a very interesting sport. Let's see what Wikipedia has to say about it: While rowing, the athlete sits in the boat facing toward the stern, and uses the oars which are held in place by the oarlocks to propel the boat forward (towards the bow) ... In sweep or sweep-oar rowing, each rower has one oar, held with both hands. This is generally done in pairs, fours, and eights. In sculling each rower has two oars (or sculls), one in each hand. Sculling is usually done without a coxswain, in quads, doubles or singles. Take a look at this photo of rowers. There's one interesting thing to it. Figure 2 - Double scull If there are just two rowers in a boat, they can manage the job themselves without a coxswain. But when there are four or, especially, eight rowers in a boat, one more person is added to the team - a coxswain facing toward the boat's stem and steering the boat. Don't you feel certain associations with programming?
  • 3. Figure 3 - An eight When a programmer is working on a task alone or with a coworker, they can cope with the task by themselves. But once the project team extends to include a few more developers, they can no longer do without a so called project manager. Unlike the project technical manager who is responsible for technical decisions, the project manager has a different business to care about. First, he defines the "route": he makes decisions about which functions should be included into the project and which should be thrown away. Second, he defines the "rowing pace" - the frequency of releasing new product versions. Simply speaking, he answers the question, "What's the release date?" If the team is working on a custom-made software product, the project manager is also responsible for carrying out negotiations with the customer. Moreover, rowers sometimes rely on reference points like a lane or buoys indicating the route. Programmers also seem to have certain reference points: users' wish-lists, a list of known bugs... Well, ask any programmer and he will at once list a dozen tasks in a project to be solved first of all! But if programmers only give these answers to themselves, they'll end up in the Mediterranean Sea, for they sit "facing toward the stern" and therefore cannot see where they are heading to. In other words, they will be developing their product for years and never release a new version. However, unlike rowers who know for 100% sure what for they need the coxswain, programmers usually treat the project manager like an "odd man out". Why? Maybe because they mistake him for a stupid boss who knows nothing himself but is allowed to "teach others what's what". Here you are a few examples.
  • 4. When working on a project, a programmer gets a task, say, to implement a certain function. While working on it, it occurs to him to implement another extra function which is simple and will take him just a couple of days. He decides to fulfill this idea along the way, for he thinks himself to be a good guy who has invented a "cool thing" all by himself, so his boss will surely compliment him. Well, it turns out, however, that some basic code structures work quite differently than he expected, so he just rewrites the code in a short time (just a week, after all!). Well done, isn't it? No, it's not! In this example, it is certainly the project manager who is to blame. He has overlooked that the programmer made up a task (or rather a few ones) for himself and got busy with it. The project manager should not have allowed that because additional functions may appear useless while errors can't occur in the basic part of the code, for there can never be such input data. But the programmer is naturally fond of solving various difficult tasks, so it doesn't get to him that he is "rowing wrong way". Another example. A potential shows interest in a product. He is even ready to buy it, but he doesn't like the way a certain function behaves, so he asks the programmer to modify it. The programmer will be glad to do that (he has helped a fellowman!), the deal is done (he's anticipating a bonus!), but the project manager gives him a telling-off for what he has done to the function. Why? Because changing this particular function's behavior for one customer has spoilt it for other 100 current users. Again, the project manager is to blame in this case, for he has allowed the programmer to take the initiative. What conclusions are to draw from all that? I won't draw any, I just have a request to all programmers. When you guys are sitting in one boat with your coworkers facing toward the stern, please keep one thing in mind: if each of you independently decides where and at which pace to row, you'll get to the Mediterranean Sea or, what's more likely, will never get anywhere. And we all need to head for our goal, don't we?