Justin Francis Self-Portrait

Sunday, January 27, 2008

"Responsibility" of a Software System

We have recently run into a problem at work where we inherited a piece of software with a user base who firmly believed that as soon as the software was able to help with a certain aspect of the business, the software (and thus the development team) became responsible for that aspect of the business.

For example, if the system could calculate commissions, then it was the system's responsibility to generate and pay commission every month. This was exacerbated by the problem that the users did not really understand what the system did and did not do. So what ended up happening is that when the commission results were not what the accounting group thought they should be, they called up the dev team and told them "there is something wrong with the commission results".

This may seem normal, but follow the reasoning to its logical conclusion. In a system that automates most aspects of a department's job, what exactly is the department's responsibility? Clicking buttons in the system at a maximum. Everything else from understanding how commissions are calculated to ensuring the incoming data is correct falls onto the dev team's plate. I have actually seen support requests (to the dev team) from users asking a question like "why has this order been left in accounting for 10 days"? When the system is responsible for everything, the dev team is supposed to know why accounting has not processed the order yet.

So then what is the responsibility of a software system? The answer to this question is of paramount importance to every dev team because it sets the baseline for what the dev team and related groups (networking, technical support, etc) are responsible for. I firmly believe, after working in a number of different environments, that the only responsibility of a software system is to behave the way the stakeholders have requested it to behave.

This means that no responsibility is shifted when new software is built. Everyone is still responsible for what they were yesterday, but there is new responsibility added because the system needs to do what the users tell it to do. This new responsibility is also practically a job description for software developers. This makes sense; that responsibility is where we come in. Our job is to build software that helps people do their jobs. But that is where it ends; it does not extend to actually doing their jobs once the software is built. In other words, we build tools to help people do their jobs.

Is Microsoft responsible for ensuring that your presentation is presentable simply because you are using Powerpoint to help you? Of course not. In the example above, the accounting department is still responsible for calculating and paying commission, but now they have a tool to help them. If the tool is not working properly, then the dev team will fix it. But accounting is still responsible for finding that error and fixing it for the current commission period by any means, regardless of whether the dev team can make a fix in time.

The major corollary of this is that users need to understand how their system works. Not at a technical level, but certainly at a logical one. Again, this makes sense. Users of word processing tools must understand how it works if they hope to use it properly. If accounting does not understand how to calculate commissions, certainly the developers are not going to. This should not be as unfortunately rare as it is; after all the tool was built for them, presumably by them or their representatives. So somebody must have understood how to calculate commission at some point.

The agile philosophy spends a lot of effort laying out clear responsibility for various activities (effort estimation, scheduling decisions, etc) with good reason. Without clear responsibility, groups start conflicting with each other. In order to have a successful project, all members of the team must be working harmoniously toward the same goal. Clear and fair responsibility lays the foundation for this.

15 comments:

chenmeinv0 said...

canada goose outlet
adidas nmd runner
cheap ray ban sunglasses
cheap oakley sunglasses
cheap nfl jerseys
louis vuitton outlet
canada goose jackets
cheap uggs
coach factory outlet
nike roshe run shoes
201612.27chenjinyan

Unknown said...

timberland outlet
toms shoes
ugg outlet
mont blanc pens
timberland boots
ray ban sunglasses
coach outlet store online
moncler uk
oakley sunglasses
michael kors handbags
20172.7wengdongdong

Unknown said...

louboutin shoes
oakley sunglasses outlet
christian louboutin sale
air jordan retro
pandora charms outlet
michael kors outlet online
tory burch outlet online
moncler
cheap nike shoes
ralph lauren outlet online
mt1225

chenlili said...

nike outlet store
jordan xx9
louboutin
jordan 5
juicy couture outlet
nike store uk
nike lunarglide
jordan pas cher
jordan shoes
true religion jeans
20183.17chenjinyan

Unknown said...

qzz0428
fitflops
coach factory outlet
true religion jeans
ralph lauren uk
nike factory store
oakley sunglasses
nike outlet
mbt shoes outlet
mulberry handbags
air max 90

Unknown said...

ray ban sunglasses
fila shoes
nike outlet store
longchamp handbags
nike outlet
cheap nba jerseys
philipp plein outlet
audemars piguet
red bottoms
air max plus
20187.14wengdongdong

chenmeinv0 said...

oakley glasses
fitflops outlet
new balance soldes
mac makeup
michael kors outlet
air force one
jordan 4
tory burch
longchamp handbags
coach factory outlet
2018.7.29xukaimin

chenlili said...

lebron 15
nike lunarglide
prada outlet
sophia webster shoes
polo shirts
hermes belt
trikots günstig
louboutin
ugg outlet
converse
20189.21chenjinyan

Bilibili said...

Pandora Jewelry
Pandora Jewelry Outlet
Pandora Jewelry
Kyrie Shoes
Air Jordan 9
Pandora Jewelry Outlet
Air Jordan
Jordan 11
Nike Air Max 270
Retro Jordan 11
Rodney20181016

Unknown said...

true religion jeans
nike air max
oakley sunglasses
salvatore ferragamo
skechers sneakers
wedding dresses
salomon shoes
goyard handbags
new balance
jordan 5
2018.11.03zhouyanhua

Bilibili said...

Air Jordan 11
Pandora Outlet
Pandora Jewelry
Air Max 270
Air Jordan 9
Pandora Jewelry Official Site
Yeezy boost 350 v2
Jordans 11
Jordan Retro 11
Red Bottom Shoes For Women
Rodney20190101

Bilibili said...

Air Jordan 4 Retro
Jordan 11 For Sale
Kyrie Irving Shoes
Yeezy boost 350 v2
Air Jordan 9
Red Bottom Shoes For Women
Jordan Retro
Nike Air Max 270
Jordan 11
Rodney20190405

Bilibili said...

Jordan 4
Pandora
Kyrie Shoes
Jordans 11
Air Jordan 11
Nike Air Max 270
Air Jordan Retro 11
Red Bottom for Women
Pandora Jewelry Official Site
Rodney20190416

Hualala said...

Kyrie Irving Shoes
Pandora Jewelry Official Site
Pandora Official Site
Pandora Jewelry Outlet
Yeezy boost
Red Bottom Shoes For Women
Jordan Retro 11
Jordan Retro 9
Air Jordan 4
Paul20190424

yanmaneee said...

lebron 11
yeezy boost
offwhite
kd 11
yeezy
cat boots
michael kors handbags
off white
adidas yeezy
goyard bags