socially cooked software

30
Socially Cooked Software Chris Spiliotopoulos Software Solutions Architect A talk on software,cooking and other stuff...

Upload: chris-spiliotopoulos

Post on 11-Jul-2015

856 views

Category:

Documents


0 download

TRANSCRIPT

Socially Cooked Software

Chris SpiliotopoulosSoftware Solutions Architect

A talk on software,cooking and other stuff...

Software vs cooking

●Many companies create good software

●Some create great software●But when it comes down to

excellency, just a few players can handle it

●Software development is like cooking

●Good ingredients = Fine taste

The taste industry● Every player tries to make a difference● Everyone wants to make money● People bring money -> companies

need to attract LOTS of people

● That's why food is everywhere - TV,radio,internet, etc

● The industry needs communities to target products

● Communities define the taste game● The industry has to keep up with the

changes

The software industry● Exact same rules apply● Companies strive to find communities

and make a difference● Sometimes they even have to invent

them● It's a WAR out there...

● The game got social now...● And communities make the rules● This is why communities are now

OUR business

But wait...! this is not a personal war anymore...

The rules of the game● Communities need software

that covers their needs and interests

Software should be:● fun● easy-to-use● consistent ● engaging● interactive● collaborative● memorable● productive● modern

But what really makes the difference?● One game - many competitors● Ranging from small companies to multi-national ones● Thousands of new social apps are out every day● But how many stand-out and last?● Just a few...

● Not a matter of quantity● But a matter of QUALITY● And as in cooking...

○ millions of recipes○ but classics are always classics!

● Quality and finesse always make the difference

Software as a service (SaS)● The download-n-install model is

sooo last year...!

Now the customer gets to choose from a service catalog - this catalog should be:● up-to-date● expanding● innovative● precise

● Software is now being served...

● And service should be of the highest quality

The actors and their rolesThe company (as the restaurant)

The teams (as the cooks and chefs)

The products and services (as the foods)

The communities (as the customers)

The services catalog● Starting from now, the company will create its own menu● The concept is to start creating an ecosystem of products

and services● This ecosystem will be presented to the customers● The customers will be able to mix-n-match components

and services for building on-line communities

Our services menu should:● satisfy different customers● accommodate different needs● be our trademark● be our facade within the market● become recognizable

Products and services● Customers will choose us

because we provide something they really need and is differentiated

● So far, we conformed to the customers○ gaining experience from

project requirements● Now it's time for the customers to

conform to our catalog ● This way, our services are

standardized and we expand our catalog when multiple requests for a new service are gathered (or when we think of something cool)

● REUSABLE● High-quality● Extensible● Pluggable● Standardized● Internationalized● Fresh● Innovative

How things should work● Every successful restaurant owes its success to its people● Keys to success:

○ Organization○ Separation of concerns / fields of expertise○ Standardized procedures○ Automation○ Co-ordination / orchestration○ Roles & responsibilities

● We should try and mimic the restaurant model and split people into different teams with well defined responsibilities and expertise

● In order for things to work, people should know what they are/must be doing and follow some rules.

The restaurant model

Food Grill/Fish

Pastry

Service

Quality & taste control

SommeliersGarcons

Translated to software productionR&D Products &

Services

Q&A System Testing

Art & design

Projects

Communities ● Many roles, different levels, but 1 communication language

● The services menu

Everything is a service● The single measurable unit of production is the service● We should ALL start thinking in terms of services, rather

than projectsThis way,● the sales team will sell services and bring in requests for

new ones● the marketing team will conceptualize services that

extend/leverage existing ones● the Products & services team will implement services into

functional software components● the R&D team will create new technology to provide added

value and enhance our services● everything will become simpler and cataloged - so that

everyone knows what exists and how to use it

Our own components ecosystem● The ultimate goal is to have our own

ecosystem of components that will make a difference

● Similar to a restaurant menu, it should cover different tastes/needs

● Ideally, components should be able to communicate through standard services and leverage each other's functionality

● Should be treated as a puzzle that needs to be filled - components are pieces that interconnect

● A tight ecosystem will bring tight sales, as the need for other/new components will always be around

What is a component?● A software module with well defined behavior● Implements business functionality through services● The building block in a Service Oriented Architectured

(SOA) ecosystem ● Implements one or more business services● A component should be:

○ self-contained○ generic○ REUSABLE○ internationalized○ testable○ documented○ pluggable/extensible

● Components are the deliverables, i.e. what the customer gets at the 'table'

Production lines● 3 major production lines will be formed:

○ R&D○ Products & services○ Projects implementation

● These lines run in parallel, but have integration points - all teams should be up-to-date with each others work

● Specs for new products and services are usually introduced by the business teams

● Products/services team identifies new services & components to be implemented

● R&D and Products/services should collaborate● Projects team mix-n-matches components to deliver

communities as requested by the customers

Separation of concerns● Different teams should have different responsibilities● Knowledge should be exchanged (where/when possible)● But within the company teams, expertise should be split

between people● Remember the restaurant model? Different chef for different

types of food/pastry.● This is good because:

○ You know who to ask for something○ People exploit their creativity○ Right people for the right job○ Quality is sustainable

■ different people have different taste when doing things■ difficult to communicate and agree on everything

Development workflow● Should be standardized, so every team knows &

understands the procedure● Development SHOULD be driven by design● Components must conform to the guidelines that will be

provided● Behavioral specs will be provided with the initial design● QA & Testing will become an integrated part of the

procedure○ QA team is responsible for behavioral,business and user

experience quality control○ Testing team is responsible for unit/stress/load/integration

testing● SCM, build and versioning procedures will become

automated

Standards & guidelines● No need for us to re-invent the wheel (at any level)● We should learn from the leaders in different fields● Guidelines should be simple and consistent - should be

helpful and NOT confusing● Should not restrict our creativity but remind us of mistakes

others have come across in the past● Will help new team members to move forward to production

mode faster.● WE define our standards - should be voted in a democratic

way - every opinion counts, so everyone should be involved● Standards will protect the quality of our software and

services - as long as we stick to them

How do we make the transition?● We will start by creating some initial components & services● The ecosystem will start to take shape● Then guidelines,standards & procedures can be

documented, from individual teams, e.g.:○ Products/services will provide guidelines on how to

develop components and services○ R&D on integrating with their modules○ Art&Design on themes, UI and look-n-feel ○ QA & System testing on behavioral,user experience and

acceptance● It is impossible for everyone to get involved at this stage● A few people will take the initiative at first and then the rest

will follow

How do we make the difference?● Good ingredients make great

dishes● We need 3 key ingredients:

○ Quality○ Simplicity○ Imagination ● Nowadays simplicity is a

synonym for elegance● People want simple &

practical applications - no rocket science!

● Improvisation makes the difference in cooking - and in software!

● Re-usability combines all of the above:○ Same ingredients -> different taste

combinations

It's all about style!● We have opened a door to a global market● This a unique chance for us to make heads

turn...and get noticed● This is why we need our own style● Our components should stand out of the

crowd,be memorable and indentifiable● Art&Design will set the standards and all

teams should follow some consistency rules● All components should have a similar look-

n-feel and provide standard user experience● Users do not like changes - they have a

preference... and stick to it

Time to get social● If we want to play the social game, we

need to understand the user's first● What are their needs and how do they

think?● This social vibe must exist within the

teams as well - team members should:○ collaborate○ socialize○ discuss / argue○ improvise○ share knowledge

Because eating alone isn't fun...

Environmentally friendly products● Quality products and services are

adaptive to environmental changes● Good software design should follow the

Java philosophy:○ Write once, run everywhere

● We live in an era where cross-platform software is the trend - and the reality

● Components should be generic enough to work on different containers and platforms

● Front-end modules should be cross-browser ready

● This way we DO NOT leave use cases and prospects out

International Cuisine● By hitting the global market, expect

international customers at your door● All of our products should be i18n

ready (internationalized) ● This means that all textual messages

should not be embedded into code, but externalized into separate resource files that can be translated

● Apart from Greek, English should be supported and other languages can follow

So, you think you got traffic uh?● Going global brings other sorts of issues

as well - traffic is a major one.● Depending on the case, internet apps

can have a variable amount of users/requests per sec

● Component specs should predict this kind/rate of usage

● Components should be thoroughly tested by the Testing team for tolerance under extreme load/stress

● Therefore services exposed by components should be testable and well defined/documented

● Tolerance+endurance = quality

Open minds, fresh ideas● Technology is meant to be explored● We should always think "outside of the

box"● Do not be afraid to experiment● Try new things, fail and then try again● Technology is evolving day-by-day and we

should not stay behind● Share your ideas with the rest of your

team mates● What we think as dumb, sometimes can

lead to great innovations● Companies that make innovations are no

better than we are - they just take the risk!

Performance● Components should be scalable

and optimized● Development should be done as if we were

working on a Spectrum and not on a 4GB Pentium

● Respect your resources and they will respect your user

● Components should be light-weight and responsive○ Sloppy UI leads to frustration○ Use modern techniques for partial data

fetching and refreshing● Fine tuning is the enemy of good design -

do not leave it for later... do it during development

Summing up...● Success is not in winning the game...● Success is in making people happy

○ community members○ customers○ company teams

● The social game cannot be won - players just leave their mark, either big or small

● We should try and have as many people as we can to try our food

● And our goal should be just one...

Thank you!

Leave a good taste in their mouth!