Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Razvoj softvera: crno/bijeli svijet?

667 views

Published on

LinuxLab, Linux Konferencije Linux korisnika 2011, http://ieee.riteh.hr/node/38.

Prezentacija br1: Razvoj softvera: crno/bijeli svijet?
pokušaj kritičkog pogleda na razvoj softvera u svijetu i kod nas s praktičnim savjetima.. Primjer: popularnost programskih jezika

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Razvoj softvera: crno/bijeli svijet?

  1. 1. Razvoj softvera Crno / bijeli svijet?
  2. 2. <ul><li>Robert Lujo, Zagreb
  3. 3. Arhitekt poslovnih aplikacija
  4. 4. Voditelj softv.projekata
  5. 5. Softverski inžinjer
  6. 6. 14 godina profesionalnog iskustva
  7. 7. OSS, python, django, C, C#, Java ...
  8. 8. @trebor74hr, linkedin, http://robert-lujo.com </li></ul>
  9. 9. O čemu ću pričati? <ul><li>uspješan razvoj softvera
  10. 10. problematika nije jednostavna, zahtijeva različite vještine i znanja, inžinjerske i društvene, puno je sudionika, puno različitih sistema i tehnologija
  11. 11. ne postoji “silver bullet” koji bi to jednostavno i brzo riješio
  12. 12. inžinjer == “dovitljivac”
  13. 13. vrlo vrlo dinamično
  14. 14. “ Stalna na tom svijetu samo mijena jest” Petar Preradović </li></ul>
  15. 15. Razvoj softvera – što je “in” <ul><li>Agile development </li><ul><li>Test systems
  16. 16. Continuous integration
  17. 17. Database evolutionary systems
  18. 18. Deploy frequently -> auto-deploy ... </li></ul><li>Static & Dynamic languages
  19. 19. (D)VCS, OOP, SQL – dobro se drže
  20. 20. web, cloud, html5, jquery, json, RESTful, web api, distributed, SOA
  21. 21. mobile, mobile, mobile </li></ul>
  22. 22. Što nam treba od alata <ul><li>programski jezik
  23. 23. gotove biblioteke </li><ul><li>vlastite
  24. 24. vanjske </li></ul><li>gotovi framework(i) </li><ul><li>vlastiti
  25. 25. vanjski </li></ul><li>(polu) gotova rješenja </li><ul><li>vlastiti
  26. 26. vanjski </li></ul></ul><ul><li>sustav za razvoj softvera </li><ul><li>editor/IDE
  27. 27. (D)VCS
  28. 28. build system
  29. 29. testing system
  30. 30. CI/DB-evolut. system
  31. 31. deployment system
  32. 32. document system
  33. 33. issue tracker </li></ul></ul>
  34. 34. A ostalo? <ul><li>puno važnije:
  35. 35. Peter Norvig: [Programming] language choice is not as important as all the other choices: if you have the right overall architecture , the right team of programmers, the right development process that allows for rapid development with continuous improvement , then many languages will work for you;
  36. 36. if you don’t have those things you’re in trouble regardless of your language choice. </li></ul>
  37. 37. Alati <ul><li>izbor alata je bitan
  38. 38. “ get the job done”
  39. 39. izbor programskog jezika nije jedini izbor
  40. 40. tko kaže da se rješenje mora razviti u jednom programskom jeziku/tehnologiji (distrib. sustavi)
  41. 41. “ Standing on the shoulders of giants” </li><ul><li>suprotno od “reinventing the wheel”
  42. 42. sposobnost prepoznavanja boljeg od lošijeg rješenja
  43. 43. sposobnost razlučivanja perspektivnog od odumirućeg </li></ul></ul>
  44. 44. Objektivnost <ul><li>biti objektivan, bez predrasuda, “holly wars”
  45. 45. ne vezati se emocionalno uz tehniku i rješenja
  46. 46. “ we just had a nice polite discussion about religion. *Then* we started on programming languages. The sparks flew.&quot; @voidspace
  47. 47. pitati i slušati druge, dozvoliti da vas uvjere
  48. 48. zdrava diskusija vodi optimalnom rješenju </li></ul>
  49. 49. Stručnost <ul><li>ima nas boljih i manje boljih, no svi imamo priliku biti još bolji
  50. 50. “ learn a new language every year”
  51. 51. ali, pažljivo odabirati/ulagati svoje vrijeme
  52. 52. pratiti i pokušati razumijeti događanja i trendove
  53. 53. dijeliti znanje
  54. 54. premda sve izgleda vrlo dinamično – koncepti se rijetko mijenjaju </li><ul><li>danas popularne paradigme su izmišljene 60tih i 70tih </li></ul></ul>
  55. 55. Učinkovitost <ul><li>opet “get the job done”
  56. 56. učiti kroz konkretno iskustvo - LOC ;) </li><ul><li>“ it's not the (programming) languages that matter but what you do with them” </li></ul><li>razviti sustav ljudi i tehnike sposoban brzim prilagodbama na nove okolnosti jer </li><ul><li>“ first design is allways wrong” </li></ul><li>automatizirati sve što se da automatizirati </li><ul><li>“ wasting programmer time is the true inefficiency,not wast. machine time&quot; </li></ul></ul>
  57. 57. Držati svoj autoritet <ul><li>prema klijentu i prema nadređenima
  58. 58. mi smo kao liječnici: oni opisuju simptome, a mi utvrđujemo dijagnozu i propisujemo terapiju
  59. 59. “ Doktore, doktore imam zdravstvenih problema </li><ul><li>“ znam” što mi je
  60. 60. želio bi neku tabletu crvene boje
  61. 61. da me sve ne košta više od 100 kn” </li></ul><li>netko zna liječnika koji bi to tolerirao?
  62. 62. oni trebaju opisati što, a mi nudimo rješenje i procijenjujemo troškove. A kako ćemo to napraviti? To je naša briga :)
  63. 63. stvari nikad nisu jednostavne kao što se čine; ovaj posao je vrlo zahtjevan i osjetljiv </li></ul>
  64. 64. Zabavljati se <ul><li>imamo tu privilegiju :)
  65. 65. stvarati takvo okruženje, društveno i tehničko
  66. 66. ekstremno?
  67. 67. “ if I stop having fun at my job, It’s time to move on”
  68. 68. praksa pokazuje da u našoj struci “fun wins” </li></ul>
  69. 69. Primjer Popularnost programskih jezika
  70. 70. Zavirimo u povijest - programski jezici <ul>Linija “ birokratskih ” </ul><ul><ul><li>Fortran 1955
  71. 71. ALGOL 1958
  72. 72. COBOL 1959
  73. 73. BASIC 1964
  74. 74. C 1973
  75. 75. C++ 1980
  76. 76. ObjC 1983
  77. 77. Visual Basic 1991
  78. 78. Java 1993
  79. 79. C# 2001 </li></ul></ul><ul><ul><li>Linija “ liberalnih ” </li></ul></ul><ul><ul><ul><li>LISP 1958
  80. 80. Smalltalk 1972
  81. 81. Erlang 1986
  82. 82. Perl 1987
  83. 83. Haskell 1990
  84. 84. Python 1991
  85. 85. Ruby 1993
  86. 86. Lua 1993
  87. 87. Javascript 1995
  88. 88. PHP 1995
  89. 89. Groovy, Scala 2003
  90. 90. Clojure 2007
  91. 91. Go 2009 </li></ul></ul></ul>
  92. 92. Zavirimo u povijest - paradigme <ul><li>imperative </li><ul><li>procedural (1955 Fortran, Algol, C, Basic)
  93. 93. object oriented (1972 Smalltalk, Java, C++, Python) </li></ul><li>declarative (1958 Lisp, SQL, XML, xHTML)
  94. 94. functional (1958 Lisp, Erlang, Haskell)
  95. 95. multiparadigm – svi!
  96. 96. prethodno navedeno nije precizno! </li></ul>
  97. 97. Što je popularno? <ul><li>popularno == koristi se u velikoj mjeri
  98. 98. bolje se prije pitati, zašto je nešto popularno?
  99. 99. zato jer donosi novac
  100. 100. “ community driven” </li><ul><li>brzo rješava problem u traženom području (domena)
  101. 101. lako prilagodljivo na nove okolnosti
  102. 102. čini korisnika zadovoljnim (“fun wins”) -> učinkovitijim </li></ul><li>“ big company/ies driven” </li><ul><li>jer je velika tvrtka uložila velike novce i onda to gura, gura i gura
  103. 103. jer je “jeftinije” održavati sistem u postojećoj tehnologiji nego je prebaciti na novu (bolju) </li></ul><li>“ platform driven” </li><ul><li>primjer: java – android, iOS – ObjectiveC, Lua </li></ul></ul>
  104. 104. Što je onda “popularno”? izvor TIOBE indeks
  105. 105. “ Popularnost” zadnjih 25 god. izvor TIOBE indeks
  106. 106. Statički / dinamički
  107. 107. LISP, hm? <ul><li>1958
  108. 108. prvi “liberal”
  109. 109. zamišljen kao koncept, a ne kao implementacija
  110. 110. očigledno dobar koncept :)
  111. 111. if-then-else, homoiconic, garbage collection, dynamic, interpreter, REPL, eval, lists, hashes, structures, lambda, closures, macros
  112. 112. nema dobru “vibru” - Lost In Stupid Parantheses :)
  113. 113. inspiracija za puno poznatije i “novije”: Smalltalk (prvi OOP->Lisp), Python, Ruby, Scala, Groovy, Clojure </li></ul>
  114. 114. Onda, koji je najbolji? <ul><li>Svaki jezik/paradigma je nastala s razlogom </li><ul><li>postojao je niz problema određene vrste koju postojeće tehnike nisu optimalno rješavale – izmislilo se bolje rješenje </li></ul><li>Primjer: Erlang 1986, danas dosta popularno za serverska rješenja za asinkrone web zahtjeve (highly concurrent, websocket, comet)
  115. 115. postoji opravdan razlog za popularnost, za svakog od njih postoje područja ( domain ) gdje su “bolji” od drugih </li><ul><li>važno je znati koja su to područja! </li></ul><li>s druge strane ako jezik već imam “ u prstima ”, za mene to je velika prednost
  116. 116. idealno : i da je pravi jezik za traženo područje, i da ga imam “u prstima” </li></ul>
  117. 117. I na kraju ... <ul>Stvari nisu crno/bijele! Pitanja? </ul>
  118. 118. <ul>Hvala na strpljenju! </ul><ul>[email_address] @trebor74hr http://robert-lujo.com slijedi “ Python: na uzlazu ili silazu? ” </ul>

×