Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

6.
HOW & WHY?* those quotes pretty much boil down to these two questions:* how: apply tools given by scalaz to real world problems? to handle human scale?* why would we choose this solution over other ones?

7.
@_jrwest github.com/jrwest blog.loopedstrange.com* a little context before we talk about the “how & why?”

8.
I WORK @* small team, < 15 engineers* many have java bg, but not all, most w/ little to no scala experience* most have oop bg, varying knowledge of FP topics

9.
WE USE SCALA { a lot }* 15+ public facing services supported by many other internal modules/libs* most built on netty, also I/O bound* originally java, now > 70% scala

16.
ITS NOT ALL OR NOTHING* shades of grey, not black and white* scalaz is really many libraries, use the parts you want* we started using “encrichments” and some data structures, grew from there--original image: http://www.chicagonow.com/chicago-tough/ﬁles/2012/03/chipsallin.jpg

18.
Public Interface Implementation Dependency Calls* your code can be pure* public interface is the border, it runs IO, throws exceptions, etc* existing libraries probably aren’t pure -- many are java after all

19.
Outside World Business Logic* communicate with clients via HTTP Data Access* the most important part -- your code -- make pure** perform side-effects like talk to database, read/write ﬁles, etc

21.
:)* code has become much more DRY/modular and as a result more unit testable* concurrent code becomes “simpler” to reason about when pure* FP makes reasoning about bugs simpler, narrow down cause faster

23.
scalaz7* not currently used in our production systems but one or two of my side projects* much better for teaching (explicit type class instance usage -- w/o syntax ext.)* addresses some of the issues we have like importing “the scalaz world”

25.
“Human Scale”* the complexity comments may be FUD, but that does not mean there is not stuff to learn here* how do we help new employees learn scala & scalaz?

26.
HIRE PEOPLE WHO WANT TO LEARN* hiring from all backgrounds instead of hiring a “scala or java developer” is much easier* those people need to be open to exploring and learning new tech/methods

27.
Shared Resources* easy win, shares effort in ﬁnding good resources* dropbox full of downloaded papers and books purchased by the company* internal talks available on github

28.
* code review/pull requests LEARN TOGETHER* face to face discussion on a whiteboard* team talks on fridays, any one can attend, anyone can talk, neither mandatory

29.
ON YOUR OWN* RTFC -- in the end it all just code* apply what you know, this is what really makes you learn it* internal talks mostly make you aware of it, give you starting point, application is key

30.
ITS NOT ALL OR NOTHING* focus on understanding a part of the library* break that part down, use it in the repl in a few cases (w/ a few types, examples, etc)* as you learn more about each part and then more parts the bigger picture emerges--original image: http://www.chicagonow.com/chicago-tough/ﬁles/2012/03/chipsallin.jpg

31.
Learn You a ??* not necessary* understanding syntax, basics can be useful while learning concepts until scala docs ﬁll out--haskell logo: http://www.haskell.org/wikistatic/haskellwiki_logo.png

33.
BREAK RULES* you may hear things you cannot do, “validation is not a monad”* ignore and explore yourself -- these are the real learning opportunites* understand how to implement validation monad and why no error accum. happens

34.
PAYING UPFRONT* of course this have some upfront cost* so does writing tests and similarly a good balance pays off

35.
L3 L2 L1 A3 Level A2 A1 Up* scalaz covers most advanced features in scala language* great guide for library and code design (to an extent). Scalaz guys have done serious amount of research in this regard