15 LESSONS FROM 15 YEARS AS A SOFTWARE ARCHITECT Ingo Rammer - - PowerPoint PPT Presentation

15 lessons from 15 years as a software architect
SMART_READER_LITE
LIVE PREVIEW

15 LESSONS FROM 15 YEARS AS A SOFTWARE ARCHITECT Ingo Rammer - - PowerPoint PPT Presentation

15 LESSONS FROM 15 YEARS AS A SOFTWARE ARCHITECT Ingo Rammer @ingorammer Co-Founder & CEO at thinktecture Just my personal experiences, not the ultimate sage advise! 1994 Web apps with CGI, Perl, Apache, ... 1996


slide-1
SLIDE 1

15 LESSONS FROM 15 YEARS AS A SOFTWARE ARCHITECT

Ingo Rammer @ingorammer

  • Co-Founder & CEO at thinktecture
slide-2
SLIDE 2

Just my personal experiences, not the ultimate sage advise!

slide-3
SLIDE 3
  • 1994 – Web apps with CGI, Perl, Apache, ...
  • 1996 – Windows Apps (VB et. al)
  • 1999 – Java backends, Servlets, XML, SOAP, ...
  • 2001 – .NET à consulting (mainly server side)
  • 2005 – Client side becomes interesting again
  • 2009 – Phones (iOS, Android, BB, WP7, ...)
  • 2010 – HTML5 for Applications
slide-4
SLIDE 4

Last ten years: consultant to software architects

slide-5
SLIDE 5

Lessons I‘ve learnt ...

slide-6
SLIDE 6

Why do projects succeed/fail? People? Technology? ... ?

slide-7
SLIDE 7

People Complexity Technology

slide-8
SLIDE 8

People Complexity Technology

slide-9
SLIDE 9

#1 – Don‘t trust experts! (Speakers, authors, including myself)

slide-10
SLIDE 10

They don‘t know your context

slide-11
SLIDE 11

They will be excited about their topic

slide-12
SLIDE 12

What could be right for 98% of attendees at a conference, could be devastating for your particular project

slide-13
SLIDE 13

#2 – People affect architecture

slide-14
SLIDE 14

Where your team comes from (prior experiences, skill levels, shared way of thinking, ...) will influence the suitability

  • f certain architectures
slide-15
SLIDE 15

#3 - Good for me or for the project?

slide-16
SLIDE 16

Newest stuff vs. mature and proven

slide-17
SLIDE 17

Does my current project really need the tech advantage?

slide-18
SLIDE 18

Or is it just that I will need to use the newest tech to stay current?

slide-19
SLIDE 19

#4 – Research vs. Development

slide-20
SLIDE 20

When we just don‘t know the answer, we need to make sure that our customers, employers, and colleagues understand that we are only researching

slide-21
SLIDE 21

And: We need to make sure that we understand this as well

slide-22
SLIDE 22

Even six months later! Critically (really!) revisit findings!

slide-23
SLIDE 23

#5 – Be wary of The Second System

slide-24
SLIDE 24

First system (with new tech, new approach, new processes): we‘re always very careful

slide-25
SLIDE 25

Second System: we know it all. We might re-use the things which have worked and do a 180° turn on the things which didn‘t.

slide-26
SLIDE 26

Reality: either the requirements might be different (and the approaches won‘t work for that reason), or there could be a middle ground instead of the 180°

slide-27
SLIDE 27

#6 – Some things need to be discussed, others just need to be done

slide-28
SLIDE 28

Sometimes two, three or four different ways can get a project closer to the target.

slide-29
SLIDE 29

Finding or waiting for the perfect way might take longer than all negative effects of choosing any of the others

slide-30
SLIDE 30

Different approaches

No No Take any Degree of Perfection

slide-31
SLIDE 31

#7 – Build what people pay us to build

slide-32
SLIDE 32

If creating [business software] is boring for us, we need to change to a different customer/ employer/project, but not artificially inflate complexity to make it challenging enough to be worth our while

slide-33
SLIDE 33

(Otherwise we‘re wasting money and talent)

slide-34
SLIDE 34

People Complexity Technology

slide-35
SLIDE 35

#8 – Always observe problem complexity vs. solution complexity

slide-36
SLIDE 36

If you need to write your own O/R Mapper, DI-Framework, MVC Engine and database for a business application .... you might be missing something

slide-37
SLIDE 37

#9 – Make it simpler

slide-38
SLIDE 38

If you haven‘t taken time to make it simpler, it‘s quite likely too complex

slide-39
SLIDE 39

In 15 years I haven‘t seen a single project fail because of lack of complexity but I‘ve seen (literally!) double-digit millions of EURs lost to too much complexity

slide-40
SLIDE 40

Can also happen throughout a project: Review architecture and code! Religiously.

slide-41
SLIDE 41

#9.a – If the solution somebody advocates appears too complex, it quite likely is

slide-42
SLIDE 42

And, btw, it might be you who‘s advocating it to your team members

slide-43
SLIDE 43

If you‘re the only one who can describe end-to- end processes in your application, it‘s too complex.

slide-44
SLIDE 44

Change roles: let your architecture be explained to you by your team in one-on-one‘s. Does it still look the same?

slide-45
SLIDE 45

#10 – Most of us don‘t need Ebay/Amazon/Google/Bing-Scale

slide-46
SLIDE 46

A lot of scalability can be achieved quite cheaply

  • today. It‘s just the last 2% which are hard and

expensive

slide-47
SLIDE 47

Fortunately most projects don‘t ever need to go there

slide-48
SLIDE 48

Even if you do: it‘s usually better to first find out what your market really wants and LATER re- engineer when successful

slide-49
SLIDE 49

Google, Ebay, Amazon, and most others did it this way, too

slide-50
SLIDE 50

People Complexity Technology

slide-51
SLIDE 51

#11 – Code is written to be read

slide-52
SLIDE 52

Sometimes code has to be really smart

slide-53
SLIDE 53

Most of the time it has to be readable

slide-54
SLIDE 54

Because you might not be around five years later

slide-55
SLIDE 55

Maintainability = Understandability + Discoverability + Consistency + Cohesion

  • Coupling
slide-56
SLIDE 56

#12 – Don‘t talk about solutions before understanding the problem

slide-57
SLIDE 57

It‘s very hard to not fall into the solution-looking- for-a-problem trap “We could really do this using CQRS, ...”

slide-58
SLIDE 58

Especially in the few weeks after you‘ve read or heard about a new idea/pattern/framework/ approach.

slide-59
SLIDE 59

Yes, this means: no changes to architecture within four weeks after a conference ;-)

slide-60
SLIDE 60

#13 – When in doubt, pick the technology you know

slide-61
SLIDE 61

... instead of taking the newest and Best Thing Ever coming from the vendor

slide-62
SLIDE 62

Why? it might not be ready, yet. So the question is: is the risk/reward profile positive enough?

slide-63
SLIDE 63

#14 – There is no silver bullet

slide-64
SLIDE 64

On all levels, we‘re promised solutions: Quality: TDD, Unit Testing, ... Data: Autosharding, NoSQL, BigTable, ... Dependencies: IoC, DI, EBC, ... Responsibility: CQRS, ... Do they deliver? Are they worth the risks?

slide-65
SLIDE 65

#15 – There is no good idea which can‘t be used in a totally wrong way

slide-66
SLIDE 66

Quality: TDD, Unit Testing, ... Data: Autosharding, NoSQL, BigTable, ... Dependencies: IoC, DI, EBC, ... Data Responsibility: CQRS But even classics: O/R Mapping, Event- Based Decoupling, ...

slide-67
SLIDE 67

The Top #15

#1 – Don‘t follow others! #2 – People affect architecture #3 - Good for me or for the project? #4 – Research vs. Development #5 – Be wary of The Second System #6 – Some things need to be discussed, others just need to be done #7 – Build what people pay you to build #8 – Always observe problem complexity vs. solution complexity #9 – Make it simpler #9.a – If the solution appears too complex, it quite likely is #10 – Most of us don‘t need Ebay/Amazon/Google/Bing-Scale #11 – Code is written to be read #12 – Don‘t think about solutions before understanding the problem #13 – When in doubt, pick the technology you know #14 – There is no silver bullet #15 – There is no good idea which can‘t be used in a totally wrong way Bonus – Shipping is a feature!

People Complexity Technology

slide-68
SLIDE 68

Be pragmatic and honest! Simplicity wins! Don‘t let every hype get you! ... and talk to the business people

People Complexity Technology

slide-69
SLIDE 69

Contact ingo.rammer@thinktecture.com Weblog http://weblogs.thinktecture.com/ingo