simplicity 2.0 - get the power back

81
Simplicity Compe modern apps with ecient practices & tools 1 Rui Carvalho @rhwy :: rui.fr

Upload: rui-carvalho

Post on 27-Aug-2014

802 views

Category:

Software


0 download

DESCRIPTION

What is simplicity ? why should you care ? How to deal with simplicity in our hyper connected complext world of software development ? Let's talk about all that, about design, architecture, clean code, tools and much more.

TRANSCRIPT

  • Simplicity Compose modern apps with ecient practices & tools 1 Rui Carvalho @rhwy :: rui.fr
  • About Development, architecture, Coaching, Training, Teaching http://twitter.com/rhwy http://github.com/rhwy http://www.rui.fr http://rui.io http://www.codedistillers.com Groups Write Work? 2 Func1onal Programming in F# NCRAFTS organizer of the conference
  • Pragmatic Web (no) Frameworks Tools Patterns 3 Practices
  • Get the Control back! Less Pain 4
  • Background Should I really care? 5
  • 6
  • Complexity is everywhere and making things simple is hard! 7
  • -1- 8
  • The Domain Problem 9
  • 10 humans need to talk more
  • Wrong models cause massive accidental complexity Greg Young 11
  • Customer needs Foo 12
  • You think schema Bar 13
  • Dont think schema too hard 14
  • There is no good but some of them are useful 15 { Model | Architecture | persistance }
  • maybe partially maybe aggregated but surely in an unique context 16
  • 17
  • -2- 18
  • Over Engineered ? 19 The Architecture Problem
  • you MUST decouple your ugly monolithic app in LAYERS 20 (evil said)
  • 21
  • 22 arg
  • Hexagonal, Onion? 23 Yes!
  • 24
  • Concrete Application? 25
  • ((You/Me/Them) misunderstood Fail 26
  • 27 Architecture is about an intent, its not about a technical framework
  • 28 Architecture is the art of taking decisions lately
  • 29 Templates, patterns, scaolding dont solve anything they are just tools to start faster
  • 30 Avoid dependencies Use abstractions Use right naming
  • 31
  • -3- 32
  • 33 what about design?
  • 34 Are You Simple enough?
  • Solving the wrong problem - it may happened - 35
  • 36 It should go faster !
  • 37 Lets take a more modern engine!
  • all that matters! Bad Understanding Poor design No design Bad technology locking 38 } Generates Complexity !
  • -4- 39
  • please, help 40 What about tools?
  • 1-1 Frameworks? 41 And Libraries
  • Frameworks? 42
  • Frameworks ? 43
  • A framework >> it calls you 44
  • 45 YOU Call a Library
  • OSS ? oss projects -most of the time- fit real user needs tiny oss libraries usually t one need, but do it well. 46
  • 1 11 Get the shell back! 47
  • Curl Everything you need to test your app is here! -X [GET|POST] -I (include headers) -d key=value 48
  • Nuget Package management is essenPal Enterprise grade => build your own Quite mulP-plaTorm 49
  • Nuget curl hUp://nuget.org/nuget.exe -L -k -o nuget.exe #!/bin/sh PATH=/usr/local/bin:$PATH mono --run1me=v4.0 /usr/local/bin/NuGet.exe $* (for Mac lovers) 50
  • Chocolatey @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('http://bit.ly/ psChocInstall'))" && SET PATH=%PATH%;%systemdrive% chocolateybin (nuget powered) > Cinst ruby 51
  • Nano just enough editing capabilities in the shell > Cinst nano 52
  • Gulp/Fake/Bau Simple taks based build tools, on your language! 53
  • 54
  • 55 1 12 See it live! If you dont see it live, then it may be dead
  • 56
  • Glimpse Firebug for asp.net 57
  • Chrome dev tools 58
  • Editors Chose a good tool also for the client side! Webstorm 59
  • Online web editors C9.io Jsddle.com Jsbin.net Plnkr.co Codepen.io 60
  • 61 1 33 Efficient Libs Do More for Less
  • jQuery 62
  • jQuery 63
  • Angular Html enhanced for web apps! 64
  • Angular Dependency Injection TESTS TDD Mocks MVC Two-way Data-binding Templates more than that! 65
  • 66
  • Less css dotLess for .Net 67
  • 68 1 4 Polyglot over patterns and other convention over configuration beauties
  • Be PolyGlot! 69
  • Nancy fx 70
  • Install PM> Install-Package Nancy ! ! Write public class SampleModule : Nancy.NancyModule { public SampleModule() { Get["/"] = _ => "Hello World!"; } } ! ! ! Go! 71
  • ORM Light || MASSIVE || DAPPER 72
  • SignalR (Socket.io like framework for .Net) 73
  • So what? 74
  • 75 Simplicity?
  • What problem are trying to solve? Always! 76
  • Avoid coupling everywhere, from classes to libraries 77
  • Be Consistent Readability, Rules, Conventions 78
  • if you dont love it, it gonna fail! stay foolish, stay hungry Jobs 79
  • Get more Fun 80
  • All sketches are by me with the help of the fabulous iPad application Paper by 53 and can be reused under The creative commons licence 81 @rhwy