Simplicity
Compose modern apps with
efficient practices & tools
1
Rui	
  Carvalho
@rhwy	
  ::	
  rui.fr
About
Development,	
  architecture,	
  	
  
Coaching,	
  Training,	
  Teaching	
  
http://twitter.com/rhwy
http://github.c...
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
Don’t 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, it’s not
about a technical framework”
28
“Architecture is the
art of taking
decisions lately”
29
“Templates, patterns, scaffolding
don’t 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
« Let’s 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 fit 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	
  hea...
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	
...
Chocolatey
@powershell	
  -­‐NoProfile	
  -­‐ExecutionPolicy	
  unrestricted	
  
-­‐Command	
  "iex	
  ((new-­‐object	
  
...
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 don’t 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
Jsfiddle.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 Sam...
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 don’t 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...
Upcoming SlideShare
Loading in …5
×

Simplicity 2.0 - Get the power back

1,468 views

Published on

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.

Published in: Software
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,468
On SlideShare
0
From Embeds
0
Number of Embeds
38
Actions
Shares
0
Downloads
18
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Simplicity 2.0 - Get the power back

  1. 1. Simplicity Compose modern apps with efficient practices & tools 1 Rui  Carvalho @rhwy  ::  rui.fr
  2. 2. 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
  3. 3. Pragmatic Web (no)  Frameworks Tools Patterns 3 Practices
  4. 4. Get the Control back! Less Pain 4
  5. 5. Background “Should I really care?” 5
  6. 6. 6
  7. 7. Complexity is everywhere and making things simple is hard! 7
  8. 8. -1- 8
  9. 9. ‘‘The Domain Problem’’ 9
  10. 10. 10 “ humans need to talk more”
  11. 11. Wrong models cause massive accidental complexity Greg Young 11
  12. 12. Customer needs ‘Foo’ 12
  13. 13. …You think schema ‘Bar’ 13
  14. 14. Don’t think schema too hard… 14
  15. 15. There is no good but some of them are useful 15 { Model | Architecture | persistance }
  16. 16. maybe partially maybe aggregated but surely in an unique context 16
  17. 17. 17
  18. 18. -2- 18
  19. 19. ‘’Over Engineered ?’’ 19 ‘‘The Architecture Problem’’
  20. 20. ‘‘you MUST decouple your ugly monolithic app in LAYERS’’ 20 (evil said)
  21. 21. 21
  22. 22. 22 arg…
  23. 23. Hexagonal, Onion? 23 Yes!
  24. 24. 24
  25. 25. Concrete Application? 25
  26. 26. ((You/Me/Them) misunderstood Fail 26
  27. 27. 27 “Architecture is about an intent, it’s not about a technical framework”
  28. 28. 28 “Architecture is the art of taking decisions lately”
  29. 29. 29 “Templates, patterns, scaffolding don’t solve anything” they are just tools to start faster
  30. 30. 30 Avoid dependencies Use abstractions Use right naming
  31. 31. 31
  32. 32. -3- 32
  33. 33. 33 ‘’what about design?’’
  34. 34. 34 Are You Simple enough?
  35. 35. Solving the wrong problem - it may happened - 35
  36. 36. 36 « It should go faster ! »
  37. 37. 37 « Let’s take a more modern engine!… »
  38. 38. all that matters! Bad Understanding Poor design No design Bad technology locking 38 } Generates Complexity !
  39. 39. -4- 39
  40. 40. ‘’please, help’’ 40 ‘’What about tools?’’
  41. 41. 1-1 Frameworks? 41 … And Libraries
  42. 42. Frameworks? 42
  43. 43. Frameworks  ? 43
  44. 44. A framework >> it calls you 44
  45. 45. 45 YOU Call a Library
  46. 46. OSS ? oss projects -most of the time- fit real user needs tiny oss libraries usually fit one need, but do it well. 46
  47. 47. 1 11 Get the shell back! 47
  48. 48. Curl Everything  you  need  to  test  your  app  is  here! -­‐X  [GET|POST…]   -­‐I  (include  headers)   -­‐d  key=value 48
  49. 49. Nuget Package  management  is  essenPal Enterprise  grade  =>  build  your  own Quite  mulP-­‐plaTorm 49
  50. 50. 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
  51. 51. 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
  52. 52. Nano «  just  enough  editing  capabilities  in  the  shell  » >  Cinst  nano   52
  53. 53. Gulp/Fake/Bau «  Simple  taks  based  build  tools,  on  your  language!  » 53
  54. 54. 54
  55. 55. 55 1 12 See it live! If you don’t see it live, then it may be dead
  56. 56. 56
  57. 57. Glimpse “Firebug  for  asp.net” 57
  58. 58. Chrome  dev  tools 58
  59. 59. Editors Chose  a  good  tool  also  for  the  client  side! Webstorm 59
  60. 60. Online  web  editors C9.io Jsfiddle.com Jsbin.net Plnkr.co Codepen.io 60
  61. 61. 61 1 33 Efficient Libs Do More for Less
  62. 62. jQuery 62
  63. 63. jQuery 63
  64. 64. Angular Html  enhanced  for  web  apps! 64
  65. 65. Angular Dependency   Injection TESTS TDD Mocks MVC Two-way Data-binding Templates …more than that! 65
  66. 66. 66
  67. 67. Less  css dotLess  for  .Net 67
  68. 68. 68 1 4 Polyglot over patterns and other convention over configuration beauties
  69. 69. Be  PolyGlot! 69
  70. 70. Nancy  fx 70
  71. 71. Install   PM> Install-Package Nancy   ! ! Write   public class SampleModule : Nancy.NancyModule   {   public SampleModule()   {   Get["/"] = _ => "Hello World!";   }   }   ! ! ! Go! 71
  72. 72. ORM  Light || MASSIVE || DAPPER 72
  73. 73. SignalR (Socket.io  like  framework  for  .Net) 73
  74. 74. So what? 74
  75. 75. 75 Simplicity?
  76. 76. What problem are trying to solve? Always! 76
  77. 77. Avoid coupling everywhere, from classes to libraries 77
  78. 78. Be Consistent Readability, Rules, Conventions 78
  79. 79. “if you don’t love it, it gonna fail!” “stay foolish, stay hungry” Jobs 79
  80. 80. Get  more   Fun 80
  81. 81. 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

×