SlideShare una empresa de Scribd logo
1 de 71
simplifying development at guardian.co.uk

       Graham Tackley - @tackers
        architect, guardian.co.uk
Background
 Decision
  Impact
Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background




2006-2008: “R2”
                    Decision
                     Impact
                   Outcomes
Background
                                                       Decision
                                                        Impact
                                                      Outcomes




main java (185k)




 main xml (35k)




  velocity (72k)




 test java (248k)



                    0   75,000   150,000   225,000    300,000
Background
                                                       Decision
                                                        Impact
                                                      Outcomes




main java (185k)




 main xml (35k)




  velocity (72k)




 test java (248k)



                    0   75,000   150,000   225,000    300,000
Background
                                                       Decision
                                                        Impact
                                                      Outcomes




main java (185k)




 main xml (35k)




  velocity (72k)




 test java (248k)



                    0   75,000   150,000   225,000    300,000
Background
                                                       Decision
                                                        Impact
                                                      Outcomes




main java (185k)




 main xml (35k)




  velocity (72k)




 test java (248k)



                    0   75,000   150,000   225,000    300,000
Background
                    Decision
                     Impact
                   Outcomes




it’s ok, but...
Background




2009
         Decision
          Impact
        Outcomes
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
                                       Decision
                                        Impact
                                      Outcomes




     lue
We va

      Small Independent Components
                   over
               The Monolith
Background
  Decision
   Impact
 Outcomes
Background
  Decision
   Impact
 Outcomes
Background
                                      Decision
                                       Impact
                                     Outcomes




     lue
We va

              Clarity of Intent
                    over
           Ceremonial Abstraction
Background
                    Decision
                     Impact
                   Outcomes




it’s ok, but...
Background
                                        Decision
                                         Impact
                                       Outcomes




     lue
We va

           Architectural Evolution
                     over
           Architectural Revolution
Background
Decision
  Impact
Outcomes
Background
Decision
  Impact
Outcomes
Background
Decision
  Impact
Outcomes
Background
Decision
  Impact
Outcomes
Background
                                                         Decision

same infrastructure: toolset,                              Impact
                                                         Outcomes



  libraries, build, runtime

                                 it’s just bytecode;
                                    a war is a war




 mixed scala & java
  projects work
                                huge drop in verbosity
                                   and boilerplate
Background
                         Decision
                           Impact
                         Outcomes




huge drop in verbosity
   and boilerplate
Background
                      Decision
                        Impact
                      Outcomes




     lue
We va

            Craft
             over
           Patterns
Background
                                          Decision
                                            Impact
                                          Outcomes




http://www.guardian.co.uk/open-platform
     http://content.guardianapis.com
Background
Decision
  Impact
Outcomes
Background
                                                     Decision
                                                       Impact
                                                     Outcomes




2009             2010                   2011

 Nov


       java + guice + guice servlets + apache solr
Background
                                                     Decision
                                                       Impact
                                                     Outcomes




2009             2010                   2011

         Jan


       java + guice + guice servlets + apache solr
Background
                           Decision
                             Impact
                           Outcomes




2009         2010   2011

       Jan
Background
                           Decision
                             Impact
                           Outcomes




2009         2010   2011

       Jan
Background
                                                  Decision
                                                    Impact
                                                  Outcomes




2009         2010                    2011

       Feb


   scala + guice + guice servlets + apache solr
Background
                                                  Decision
                                                    Impact
                                                  Outcomes




         Live!
2009             2010                2011

          May


   scala + guice + guice servlets + apache solr
Background
                                                  Decision
                                                    Impact
                                                  Outcomes




2009         2010                    2011

              July


   scala + guice + guice servlets + apache solr
Background
                                           Decision
                                             Impact
                                           Outcomes




2009    2010                    2011

                                    July


       scala + lift + apache solr
Background
                                           Decision
                                             Impact
                                           Outcomes




2009    2010                    2011

                                    July


       scala + lift + apache solr
Background
                                       Decision
                                         Impact
                                       Outcomes




2009    2010                    2011

                                       Now


       scala + lift + apache solr
Background
 Decision
 Impact
Outcomes
Background
 Decision
 Impact
Outcomes
Background
                                    Decision
                                    Impact


The roll-it-out-to-everyone plan
                                   Outcomes
Background
                                    Decision
                                    Impact


The roll-it-out-to-everyone plan
                                   Outcomes
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
                     Decision
                     Impact
                    Outcomes




How did we learn?
Background
 Decision
 Impact
Outcomes
Background
                                    Decision
                                    Impact
                                   Outcomes




     lue
We va

           Passionate Developers
                   over
             Turning the Crank
Background
                            Decision
                            Impact
                           Outcomes




Complexity vs Simplicity
Background
 Decision
 Impact
Outcomes
Background
                         Decision
                         Impact
                        Outcomes




     lue
We va

             Clarity
              over
           Cleverness
Background
 Decision
  Impact
Outcomes
Background
 Decision
  Impact
Outcomes
Background
 Decision
  Impact
Outcomes
Background
                                                             Decision
                                                              Impact
                                                            Outcomes




           preference for immutability



                            scala console encourages
                          viewing code as a living entity



awesome test frameworks


                        reduced need for complex
                              frameworks
Background
 Decision
  Impact
Outcomes
Background
                                                   Decision
                                                    Impact
                                                  Outcomes




      love-hate relationship with sbt



                          tool support immature
                            compared with java



compiler is slow


                           rate of change
Background
 Decision
  Impact
Outcomes
Background
 Decision
  Impact
Outcomes
Background
 Decision
  Impact
Outcomes
Background
 Decision
  Impact
Outcomes
Background
                                                Decision
                                                 Impact
                                               Outcomes




https://github.com/guardian/frontend-article
Background
                                                                             Decision
                                                                              Impact
                                                                            Outcomes


                                                  Clari
Small Independent Components                            ty
                                                       of Int
                                                              ent
              over                        Cerem     over
                                                onial
        The Monolith                                  Abstr
                                                            actio
                                                                  n




    Craft                  Clar
                                ity
                            over                    Passionate Developers
    over
                        Clev                                over
   Patterns                 erne
                                 ss
                                                      Turning the Crank



                       Architectu
                                 ral Evoluti
                                             on
                               over
                     Architectu
                                ral Revolu
                                           tion
Background
                                                                             Decision
                                                                              Impact
                                                                            Outcomes


                                                  Clari
Small Independent Components                            ty
                                                       of Int
                                                              ent
              over                        Cerem     over
                                                onial
        The Monolith                                  Abstr
                                                            actio
                                                                  n




    Craft                  Clar
                                ity
                            over                    Passionate Developers
    over
                        Clev                                over
   Patterns                 erne
                                 ss
                                                      Turning the Crank



                       Architectu
                                 ral Evoluti
                                             on
                               over
                     Architectu
                                ral Revolu
                                           tion
graham.tackley@guardian.co.uk
                 @tackers




We’re hiring: http://bit.ly/guardian-dev-jobs

Más contenido relacionado

Similar a Scala: simplifying development at guardian.co.uk

Global agilityagile2012
Global agilityagile2012Global agilityagile2012
Global agilityagile2012
drewz lin
 
Design Verification: The Past, Present and Futurere
Design Verification: The Past, Present and FuturereDesign Verification: The Past, Present and Futurere
Design Verification: The Past, Present and Futurere
DVClub
 
Design verification--the-past-present-and-future
Design verification--the-past-present-and-futureDesign verification--the-past-present-and-future
Design verification--the-past-present-and-future
Obsidian Software
 
26 a6 emc europe - arnaud christoffel
26 a6   emc europe - arnaud christoffel26 a6   emc europe - arnaud christoffel
26 a6 emc europe - arnaud christoffel
Scott Adams
 

Similar a Scala: simplifying development at guardian.co.uk (20)

Global agilityagile2012
Global agilityagile2012Global agilityagile2012
Global agilityagile2012
 
JIRA Enterprise Webinar - 15 Aug 2012
JIRA Enterprise Webinar - 15 Aug 2012JIRA Enterprise Webinar - 15 Aug 2012
JIRA Enterprise Webinar - 15 Aug 2012
 
The Introduction of Ruby x Agile
The Introduction of Ruby x AgileThe Introduction of Ruby x Agile
The Introduction of Ruby x Agile
 
Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users Innoslate 101: A Webinar for New Users
Innoslate 101: A Webinar for New Users
 
Design Verification: The Past, Present and Futurere
Design Verification: The Past, Present and FuturereDesign Verification: The Past, Present and Futurere
Design Verification: The Past, Present and Futurere
 
Design verification--the-past-present-and-future
Design verification--the-past-present-and-futureDesign verification--the-past-present-and-future
Design verification--the-past-present-and-future
 
Design and UX in an Agile Process
Design and UX in an Agile ProcessDesign and UX in an Agile Process
Design and UX in an Agile Process
 
Jira State Of Union
Jira State Of UnionJira State Of Union
Jira State Of Union
 
Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))Process Matters (Cloud2Days / Java2Days conference))
Process Matters (Cloud2Days / Java2Days conference))
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User Experience
 
Slimfast
SlimfastSlimfast
Slimfast
 
Orca webinar: Fix Your Configs Before You Wreck Your Release
Orca webinar: Fix Your Configs Before You Wreck Your Release Orca webinar: Fix Your Configs Before You Wreck Your Release
Orca webinar: Fix Your Configs Before You Wreck Your Release
 
Pycon India 12
Pycon India 12Pycon India 12
Pycon India 12
 
IWMW 2002: Interoperability and Learning Standards briefing: Does Interoperab...
IWMW 2002: Interoperability and Learning Standards briefing: Does Interoperab...IWMW 2002: Interoperability and Learning Standards briefing: Does Interoperab...
IWMW 2002: Interoperability and Learning Standards briefing: Does Interoperab...
 
1004 z2 env_positioned
1004 z2 env_positioned1004 z2 env_positioned
1004 z2 env_positioned
 
26 a6 emc europe - arnaud christoffel
26 a6   emc europe - arnaud christoffel26 a6   emc europe - arnaud christoffel
26 a6 emc europe - arnaud christoffel
 
Software Architecture Anti-Patterns
Software Architecture Anti-PatternsSoftware Architecture Anti-Patterns
Software Architecture Anti-Patterns
 
Progressive Deployment & NoDeploy
Progressive Deployment & NoDeployProgressive Deployment & NoDeploy
Progressive Deployment & NoDeploy
 
Javaone 2014
Javaone 2014Javaone 2014
Javaone 2014
 
Big Science, Big Data: Simon Metson at Eduserv Symposium 2012
Big Science, Big Data: Simon Metson at Eduserv Symposium 2012Big Science, Big Data: Simon Metson at Eduserv Symposium 2012
Big Science, Big Data: Simon Metson at Eduserv Symposium 2012
 

Más de Graham Tackley

Más de Graham Tackley (7)

Newsgeist 2017 - Ignite Talk
Newsgeist 2017 - Ignite TalkNewsgeist 2017 - Ignite Talk
Newsgeist 2017 - Ignite Talk
 
How elasticsearch powers the Guardian's newsroom
How elasticsearch powers the Guardian's newsroomHow elasticsearch powers the Guardian's newsroom
How elasticsearch powers the Guardian's newsroom
 
Java to Scala: Why & How
Java to Scala: Why & HowJava to Scala: Why & How
Java to Scala: Why & How
 
Moving from Relational to Document Store
Moving from Relational to Document StoreMoving from Relational to Document Store
Moving from Relational to Document Store
 
Why we chose mongodb for guardian.co.uk
Why we chose mongodb for guardian.co.ukWhy we chose mongodb for guardian.co.uk
Why we chose mongodb for guardian.co.uk
 
LSUG: How we (mostly) moved from Java to Scala
LSUG: How we (mostly) moved from Java to ScalaLSUG: How we (mostly) moved from Java to Scala
LSUG: How we (mostly) moved from Java to Scala
 
Java to scala
Java to scalaJava to scala
Java to scala
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Scala: simplifying development at guardian.co.uk

Notas del editor

  1. intro me\nqns: how many use scala in prod? looking at scala? consider yourself primarily java dev?\n
  2. talk overview - story of our background and key principles we learnt pay a key part in the success of using scala; how we started using scala; impact on day to day; some things we’ve been able to do more easily as a result\n
  3. what led up to our decision to use scala\n\n
  4. what led up to our decision to use scala\n\n
  5. Produce a newspaper since 1821 (191 years ago) - today publish the guardian mon-sat and observer sun.\nRegularly break new ground with quality of our investigative journalism\n
  6. Produce a newspaper since 1821 (191 years ago) - today publish the guardian mon-sat and observer sun.\nRegularly break new ground with quality of our investigative journalism\n
  7. Produce a newspaper since 1821 (191 years ago) - today publish the guardian mon-sat and observer sun.\nRegularly break new ground with quality of our investigative journalism\n
  8. Produce a newspaper since 1821 (191 years ago) - today publish the guardian mon-sat and observer sun.\nRegularly break new ground with quality of our investigative journalism\n
  9. Web site since 1995 as guardian unlimited\nnow get 3.5m unique browsers a day (2nd most popular uk newspaper... after the mail)\nin addition a whole set of other platforms - iphone, driod, kindle, ipad ...\n
  10. Web site since 1995 as guardian unlimited\nnow get 3.5m unique browsers a day (2nd most popular uk newspaper... after the mail)\nin addition a whole set of other platforms - iphone, driod, kindle, ipad ...\n
  11. Web site since 1995 as guardian unlimited\nnow get 3.5m unique browsers a day (2nd most popular uk newspaper... after the mail)\nin addition a whole set of other platforms - iphone, driod, kindle, ipad ...\n
  12. Web site since 1995 as guardian unlimited\nnow get 3.5m unique browsers a day (2nd most popular uk newspaper... after the mail)\nin addition a whole set of other platforms - iphone, driod, kindle, ipad ...\n
  13. rebuild in java - spring hibernate velocity + oracle\nreligious test driven development and pairing for all production code\n
  14. R2 code base as of today - some values redacted :)\nthese are plain wc -l line counts\n(aside: moral of this story: never separately estimate & measure backend and frontend devs)\n
  15. R2 code base as of today - some values redacted :)\nthese are plain wc -l line counts\n(aside: moral of this story: never separately estimate & measure backend and frontend devs)\n
  16. R2 code base as of today - some values redacted :)\nthese are plain wc -l line counts\n(aside: moral of this story: never separately estimate & measure backend and frontend devs)\n
  17. - still running website, still making changes, \n- 2 week release cycle, risky release, poor scalability due to ORM, very slow to work with\n
  18. MBS talk yesterday touched on this\nmicroapp framework - kind of works like ssi on steroids\n\n\n
  19. [keep going through examples...]\n
  20. (commenting) first microapps developed in spring-velocity\nsoon gave that up - tried other approaches\nhuge relief at escaping the 2 week release cycle! \n\n\n
  21. (its very easy to come up with reasons to excuse the monolith - i did!) e.g. avoiding issues with multiple versions, easier refactoring\n\n
  22. commenting - not throwing content at readers, engaging them in conversation\ndesparately looking for faster ways to develop\n
  23. and python django\nrevolution for us - not coding with factory beans, property converters - not even a single decorator - we just wrote the code!\n
  24. abstractions are good - but too many of those abstractions were nothing to do with our problem, forced on us by frameworks and/or development style and/or over use of patterns (repositories) - if you have small apps just write the code!\n
  25. still live (although porting to scala)\nbut different ecosystem; operational cost outweighted dev benefit\n?? and need to write tests to work around lack of compiler\n
  26. revolutions seem great, but its very easy to just switch one set of problems with another\n
  27. \n
  28. \n
  29. \n
  30. \n \n
  31. \n \n
  32. \n \n
  33. \n \n
  34. broken windows of java boilerplate \n-> you just get used to writing bucket loads of code\n(ide generates get/settings, constructor, delegate.....)\n
  35. patterns are good; but even better if your code clearly solves the business problem.\n too often the lack of succitness in java drives over reliance of patterns to try to organise the bucketloads of code\nconciseness of language - far more important than saving keystrokes - mindset change\n
  36. excited - other tradional media restricting access to content (paywalls etc) - open access.\n\n
  37. \n
  38. java + guice + guice servlets + apache solr, 3-4 java devs\nplayed with scala, nothing in prod.\n
  39. test in scala using scalatest - just pop in the scala plugin to maven and go\n
  40. test in scala using scalatest\n
  41. a fair bit of our code was java without semicolons,\nbut despite that we loved it so much...\n
  42. after a month - decided to do everything in scala\nno big bang - incremental migration relying on mixed java-scala compilation\nkept using guice\n
  43. Live - no issues; it was just a war\n
  44. switched from maven to simple build tool, mainly for incremental compilatio\n
  45. 5k loc => 3.5 loc (mainly due to writing better scala)\n
  46. \n
  47. m., most devices, and nearly everything new we’re doing powered by content api \n(leave what about scala till next section)\n\n
  48. \n
  49. \n
  50. didn’t really have a plan to roll out - everyone saw our enthusiasm & excitement and picked up.\nsurvey - out of 21 “back end” devs - 15 replied.\n90 % of devs pleased or v pleased using scala - 2 say ok - none dislike\n
  51. how - mostly driven by enthusiasm, (odersky book, twitter info, look at open source projects, lsug)\n1 - 3 months of using scala to be as productive as in java\n\n
  52. how - mostly driven by enthusiasm, (odersky book, twitter info, look at open source projects, lsug)\n1 - 3 months of using scala to be as productive as in java\n\n
  53. how - mostly driven by enthusiasm, (odersky book, twitter info, look at open source projects, lsug)\n1 - 3 months of using scala to be as productive as in java\n\n
  54. how - mostly driven by enthusiasm, (odersky book, twitter info, look at open source projects, lsug)\n1 - 3 months of using scala to be as productive as in java\n\n
  55. how - mostly driven by enthusiasm, (odersky book, twitter info, look at open source projects, lsug)\n1 - 3 months of using scala to be as productive as in java\n\n
  56. don’t insist on scala skills - weeds out the “Enterprise Java” developers - attracts polyglots\nover half the devs who joined us were influenced in their choice by using scala\nquite a few chose to stay with us because we’re using scala\n\n
  57. \n
  58. all seen the complexity / performance complaints - google\nnot been our experience at all\n
  59. i can read each line of code but cannot see the wood for the trees\ntrade off scala complexity arguments against code like this - false simplicity\n\n
  60. the power of scala allows funky stuff - readable code is much more important. \n
  61. \n
  62. \n
  63. val vs var; collections or immutable by default - helps dev at all levels to think sensibly about their code\n\n \n
  64. val vs var; collections or immutable by default - helps dev at all levels to think sensibly about their code\n\n \n
  65. val vs var; collections or immutable by default - helps dev at all levels to think sensibly about their code\n\n \n
  66. val vs var; collections or immutable by default - helps dev at all levels to think sensibly about their code\n\n \n
  67. downsides: sbt: especially keeping up with plugins\n\n \n
  68. downsides: sbt: especially keeping up with plugins\n\n \n
  69. downsides: sbt: especially keeping up with plugins\n\n \n
  70. downsides: sbt: especially keeping up with plugins\n\n \n
  71. facebook app - a radical change to the way we normally deliver news\ndelivered in two months (with some third party involvement)\nscala + scalatra (web routing like sinatra from ruby) + scalate (scala templates)\n
  72. looked at this code for the first time last week\n
  73. the new article page (to be)\n\n
  74. ... and is open on github\n
  75. \n
  76. \n