scala journeys draft 2nd outline › Media › Scala_Journeys_C.pdf · Why Scala Journeys? /3 A...

21
Scala Journeys

Transcript of scala journeys draft 2nd outline › Media › Scala_Journeys_C.pdf · Why Scala Journeys? /3 A...

Scala Journeys

ContentsWhy Scala Journeys? /3A note from Alice, the organiser of Scala Central.

Getting Started /4Read the early experiences of our contributors, and their advice for anyone looking to take the leap into Scala.

The Landscape /10We discuss some of the exciting things going on in the world of Scala, and look at some of the challenges thatmay lay ahead.

The Future /15We think Scala is going places. Take a look at ourpredictions for the ecosystem as it continues to mature.

Contributors /20

Scala Journeys

3

Why Scala Journeys?

I spend all day talking to Software Engineers, and I am always struck by the passion that people using Scala have for the language. Over the last four years I have seen the language take root in ’mainstream’ production environments, and I’m excited to see what’s next.

For some reason, Scala is considered quite a ‘niche’ language, and one that I think deserves more publicity! So I’ve done my best to support the community in London, starting up Scala Central, where we’ve heard talks on everything from SBT to Sudoku, and has grown from the first event 6 months ago into a real community of Scala enthusiasts.

We wanted to make another contribution by interviewing some leading figures in the community to get their thoughts on learning Scala, some of the new developments and challenges they are currently seeing within the ecosystem, as well as their predictions for the future of Scala.

We hope you enjoy reading,

Alice LloydOrganiser of Scala Central | Head of Development at LinuxRecruit

Scala Journeys

Getting Started

In late 2006, I was working in an R&D team at a large bettingexchange, where we were looking at emerging advances in the JVMspace. Amongst the items on our radar back then was a little knownlanguage called Scala. The team behind it seemed to have a goodreputation, and I subscribed to the EPFL mailing list in early 2007.After that I wrote a few introductory blog posts on the language andwas lucky enough to find some local like-minded people on theSouth Coast whose interest were piqued by this new thing calledScala. Those people were Richard Dallaway and Miles Sabin, who Ihave since started some FP related meetup groups with and do workwith as part of Underscore consulting. A pretty serendipitous chain ofevents in retrospect!

5

Getting Started

I first got started in Scala when I moved to the Guardian.I had already had a reasonable amount of experience inJava so in many ways it was a series of logical stepsforward rather than a sudden catapulting into theunknown. I was lucky enough to pick up the excellentbook Programming in Scala, and by reading that I wasable to very quickly reach a certain level of productivityin the language.

However, it wasn't until I began to really work with otherpeople's Scala code and to discuss things with my newcolleagues that I really started to understand how I hadonly scratched the surface, and that hidden underneathScala's Java-like facade was an entire ecosystem offascinating developments in the world of functionalprogramming and strong static typing.

I quickly discovered the really rather remarkable waythat Scala has succeeded in bridging the gap betweenthe hyper-theoretical world of FP and the practicalrequirements of day to day software development. Andperhaps more than anything else the thing I love mostabout this is that it makes my job fun again, but withoutsacrificing any of my productivity.

Before learning about Scala, I had been a Java developer for a few years.When my manager started championing Scala in my team, I wasn’textremely keen on learning a new language without a valid reason. Luckily,I decided to take Martin Odersky’s MOOC “Functional ProgrammingPrinciples in Scala”. That was all it took to change my mind forever! As ithappens with virtually every Scala novice, the Scala Collections were thegateway drug to everything that happened next. To this day it still strikesme how easy it is to translate my interpretation of a problem to Scala code.It definitely changed my career in terms of self-satisfaction, passion andreward.

THE FIRST TIMEScala is typically a language that people come to later in their development career, and as such hearing about how our contributors first came to work with Scala makes for interesting reading.

Scala Journeys

- Kingsley davies

- Paul Roberts

The first person I met who uses (or used Scala) in anger was Thomas Stone, one ofthe founders of PredictionIO. I had just started the transition from my physics PhDto data science with the ASI data science fellowship, and my go to language atthe time was Python. The fellowship was pretty hectic, so I didn't really have timeto investigate further. After the fellowship finished, I was lucky enough to land ajob with SCL Elections as their only data engineer. As I had a few weeks beforestarting, I decided to learn Scala. I picked up a copy of Martin Odersky's bookand worked through it, building small programs that I thought would help me landon my feet when I started at SCL. Scala definitely stuck as a tool that is well-suitedfor data engineers: strong concurrency support and a great type system are veryuseful.

Since I was the only data engineer at SCL, and since there wasn't much in terms ofexisting codebases, I was in the enviable position of being able to choose my techstack. I settled on Python for adhoc scripts and Scala for the more permanentpipelines. Life plodded along happily for a few months, until I got a somewhatunexpected offer: Packt Publishing contacted me to see if I wanted to write a bookfor them on how to use Scala in Data Science. I was somewhat surprised and veryaware that I'd only been using Scala "in real life" for a few months, but decided toaccept, treating it as a learning opportunity.

Having to write a book was tremendously useful for forcing me to learn a lot aboutthe language and its libraries. You have to think deeply about specific subjects tobe able to write about them, and having a publisher breathing down your neck towrite faster definitely helped me stick to a schedule. I wouldn't necessarily advisewriting a book (it was also tremendously taxing), but I would very much advisestarting a blog and writing ‘deep’ blog posts to explore a specific library, or aspecific aspect of Scala.

I first approached Scala when Oderskytaught the first Coursera Course on Scala in2013. I was intrigued by this different way ofthinking about our code called "FunctionalProgramming”. At the time I thought it wassomething new but later on, I discoveredthat has been around for a LONG time! Iplayed with Scala on a few on my personalprojects, but I actually started using itcommercially after about one year.

6

Getting Started

Like many, I started with the Courseracourse back in 2012. I think this is a goodplace for anyone to start, as you learn a fewfunctional programming principles, ratherthan learning Scala as a better Java.

Scala Journeys

- Pascal bugnion

- Rhys sharrem

Getting Started

What is interesting about these answers isthe central role of the the EPFL (ÉcolePolytechnique Fédérale de Lausanne), theircourses and Scala designer Martin Odersky’sbook – which were integral to helping muchof the Scala community cut their teeth, andto this day, the role of the EPFL, and theirpartnerships with the Scala community havebeen instrumental in growing thecommunity further.

Kingsley Davies is a relatively early adopter,having first engaged with EPFL back in 2007,having heard about their work with the JVM,and started experimenting and bloggingabout the language. Partnering up withsome likeminded individuals, namelyRichard Dallaway and Miles Sabin, he wenton to grow some FP meetups and going onto work with Underscore.

The most common pathway for most of ourcontributors starts around 2012-3, withMartin Odersky’s now seminal ‘FunctionalProgramming Principles in Scala’ course, runthrough the likes of Coursera. Fun fact –Coursera itself uses Scala extensively.Stefano Bonetti admits that he wasn’t initiallykeen on learning a new language, but thiscourse ”was all it took to change his mindforever!”. Daniela Sfregola shares thisenthusiasm, with the course opening up theworld of functional programming for her.

Rhys Sharrem agrees, and notes that theCoursera course he began with helped himto approach Scala in the right way, whichhe’d recommend to others – it allows youyou to “learn a few functional programmingprinciples, rather than treating Scala as a“better Java”.

Paul Roberts turned to the excellent‘Programming in Scala’ book, which allowedhim to reach a certain level of productivity inthe language – but it was from beginning todive into other people’s code and explorewhat was going on that made him realisethat “behind a Java-like façade was an entireeco-system of fascinating developments inthe world of functional programming andstrong static typing”.

While Java is often seen as a commonstepping stone from which to approachScala, Pascal Bugnion moved from a focuson Python to Scala, and worked throughMartin Odersky’s book – and tellingly, afteronly a few weeks of study, and in the“enviable position of choosing his tech stack,settled on Python for ad hoc scripts andScala for the more permanent pipelines”.

The thread throughout these stories is thateven with relatively limited exposure to Scalaand what can be achieved, it’s very easy toget hooked!

Scala Journeys

Learning Scala definitely

changed my career in terms

of self-satisfaction, passion and

reward.

7

8

Getting Started

Stefano talks about the Scala Collections as“a gateway drug to everything” that haschanged his career for the better.

Scala does have a reputation for being hardto get to grips with. That isn’t entirely unfair,but those who dismiss it are missing out onthe great advantages that developing inScala can offer. The constraints ofimmutability and static typing that manypeople find alien ultimately enable you tosolve problems in creative ways, ultimatelymaking the process of development more funand intellectually stimulating, as well as beingvery productive.

Daniela believes that the flexibility of thelanguage is probably why so many peopleenjoy working with it. However, she doesacknowledge that this flexibility can besometimes overwhelming for newcomers tothe language - there are so many ways ofdoing the same thing. Her advice is to “notget discouraged by it! After a while, you willnotice that the way you are using thelanguage will evolve with your knowledge ofit and you will soon realise how many funthings you can do with it!”.

Rhys suggests that if you’re learning Scala,don’t be afraid of the functional aspects ofthe language, and take time to learn thetheories behind them. It’s easy to see Scala

as a ‘better Java’ (good bye semi colons!),but if you treat it as such, you’re missing outon the features that make Scala so powerfuland fun to work with. “If you see some bigexpression that looks complicated, break itdown into smaller components andunderstand those in isolation. If you can dothat, you'll understand the whole…think of itas divide and conquer”.

Pascal advises that in order to make goodstrides into learning Scala, you need tocombine reading and doing. Start out bychoosing a well-defined project. That mightfocus on the re-implementation of an existingcodebase in Scala, or writing something new,but it is important that, if you go down thisroute, you have a well-defined end-point, asyou want to be able to concentrate on thecoding itself, not the design. Heacknowledges that “you'll inevitably hitstumbling blocks – but it's by surmountingthose that you learn”.

Once you have a certain level of proficiency,Pascal recommends writing blog posts aboutsubjects you want to learn. Having to writeabout a topic, especially from an explanatoryperspective, will force you to go beyond justreading internet tutorials, and ultimatelystrengthen your grasp of the concepts you’relearning.

Scala Journeys

Getting Started

Scala Journeys

The thing I love most about Scala is that it makes

my job fun again, but without

sacrificing any of my productivity.

9

Adding to the community in this way is also agreat way to get feedback and supportothers starting out (and some good karmanever hurts!).

Stefano has some great advice for gettingstarted – ”try your best to make a cleansweep of all your previous programmingdogmas and assumptions. If you’re a Javadeveloper, repeat the clean sweep once ortwice! Then, head to Coursera and prepareto be dazzled”. He also echoes the value ofcontribution to the community, advising that,if you’re already somewhere along thelearning curve, make the time to givesomething back to the community - “Iguarantee you it will be very gratifying, nomatter how tiny your contribution is. Andbefore you ask, yes, the community DOESneed your help”.

Paul agrees with this wholeheartedly. Forhim, one of the real benefits of Scala is that itdoes really have a community of people whoare doing interesting things, both for funand profit, and being part of that is veryrewarding. He also points to the communityas a powerful way to further yourunderstanding, specifically by exploring theexciting rabbit holes of open source repos,and he recommends spending some timelooking at a curated list of libraries such asthe Awesome Scala list and start digging

around in their code to see how they work.

“There is a wealth of software developmentknow-how that is laid bare for all to see andto learn from on GitHub”.

Kingsley echoes this, talking about the valueof conferences and meetups – and not onlyattending, but talking. Giving a talk mightsound terrifying, but Alice remarks that,“since beginning Scala Central, it’s beengreat to see a lot of first time speakers takethe plunge – and so encouraging to seemore experienced engineers offer theiradvice and guidance along the way!”.

“We’ve been a ‘warm up gig’ for thosespeaking at larger conferences like the ScalaXchange, and had other speakers who havebeen working on something interesting ontheir commute that they’d like to share with afriendly crowd – that diversity has beeninspiring, and there’s definitely space foreveryone”.

Kingsley encourages anyone learning Scalato “push yourself, and support others in thecommunity. Not everyone starts out as a typeastronaut, but if we work as an opencommunity, we might be able to see ifthere's Types on Mars :-)”.

The Landscape

The Landscape

Above all else, it's friendly and

engaging people that keep pulling

me back into ecosystem.

11

Scala is still fairly young in terms ofprogramming languages, but we’re at anexciting point of growth, as the widerecosystem matures, and the languagebegins to become popular. For StefanoBonetti, the most exciting aspect of theecosystem is the fact that it’s still gainingmomentum. “Whether it is LAMP/EPFL,Lightbend or the community at large, all theparties that made Scala great from its earlystages are still very much contributing to itsgreatness”.

Rhys Sharrem talks about the benefitsoffered by libraries like Cats and Shapeless,which is something Paul Roberts agrees with,noting that “When you look at the way thatseemingly abstract and arcane libraries likeShapeless or ScalaZ have becomingpositively mainstream within the Scalacommunity, it fills me with hope that theworld of software development is able tostay fresh and exciting despite the pressuresof a commercial environment”.

Daniela Sfregola is similarly in awe of thegrowth of Scala as a language, and ascommunity. “There are lots of new ideas, lotsof new exciting projects, lots of new peopleto talk to! Just look at how the number ofScala conferences has more than doubled injust one year”.

”The language itself is also more mature andwe are evolving with it: we are more aware ofwhy functional programming could be theanswer, we start studying and playing withtheories that before were just considered formathematicians -- Category Theory forexample”.

Kingsley Davies shares Daniela’s enthusiasmfor the Scala world right now. “Specifically, Isee the community growing and gettingstronger, with lots of newcomers to thelanguage who are able to commit to highprofile projects and make immediateimpacts”. He’s seeing lots of adoption incompanies both large and small, particularlyin developing service oriented architecturesand in the domain of fast and intelligent dataprocessing. But above all else, for him, “it'sfriendly and engaging people that keeppulling me back into ecosystem”.

It’s clear that there are a lot of excitingdevelopments in the world of Scala.However, it’s certainly not completelysmooth sailing – there are challenges toovercome.

For Pascal, although things are improving,“the tooling does not do the languagejustice. SBT, the most common Scala buildtool, is complex and slow”.

Scala Journeys

12

The Landscape

“Writing small, stand-alone scripts ischallenging. There are a number ofinteresting projects around this (Ammonite,Coursier, Scala kernels for Jupyter, forinstance), but they are very far frombecoming mainstream”.

For Paul, a big problem he’s seeing at themoment is in the lack of discoverability insome of the Scala APIs which makeextensive use of DSLs and implicitconversions. Traditionally, the way he wouldapproach learning about how to use alibrary API after the initial tutorial stages, isby browsing around the documentation (e.gJavaDocs or ScalaDocs) and seeing whatmethods and types are available.

“However, when you have an API that isconstructed around implicit conversionsthose methods can be spread out almostindefinitely around the different classes andobjects that make up the library, making itreally difficult to discover what's doing whatand where I would love to see thedevelopment of a tool that combined thedynamic analysis of a good IDE with theauthority of official documentation andserendipity you get from browsing throughit”.

Stefano also highlights the binarycompatibility issue of Scala, which is oftenseen as a red flag for language adoption.

His take is that it should be accepted as atrade-off. “A stricter binary compatibilitypolicy would have never allowed Scala torapidly evolve into the arsenal that is today”.

While that is certainly true, binarycompatibility has improved, but as Stefanopoints out, Scala has a perception issue -”many people perceive Scala as too close toacademy and too far from concretecommercial/industrial applications. Theseare the same people that tend to dismissScala as “too difficult” to be a valuablechoice”.

For Rhys, this perception of difficulty isactually one of the strengths of Scala – “youcan write vastly different styles of code usingthe same language. It's a benefit tonewcomers that you can use it as a betterJava by omitting the semicolons etc, but youcan also go down the functional route withbrackets and arrows everywhere. That canlook intimidating to a lot of developers”.

Pascal talks about the challenges of buildingteams. “Scala is the main programminglanguage that my team uses, and we havefound hiring and on-boarding developersdifficult. Scala, despite becomingincreasingly popular, remains a relativelyniche language: it is much easier to recruitPython or Java developers, for instance”.

Scala Journeys

13

The Landscape

”Since we value hiring for talent and personality, rather thanknowledge of a particular language, most of our hires are fluent inanother language rather than Scala. This is fine in the medium tolong term: through pair programming and collective codeownership, new hires eventually become excellent Scaladevelopers. However, since Scala is very different to otherprogramming languages, it takes time for new hires to get to gripswith the type system, with functional idioms and with the librariesthat we use”.

Alice has found that many Scala houses, out of necessity, oftenfollow a similar approach to recruitment, opening up roles to besuitable Java or Python developers and the like, and investingmore into on-boarding and training. Although, as Pascal pointsout, is a great way to nurture excellent Scala developers in thelonger term, it can be time consuming and resource intensive forthese organisations, and it requires the kind of organisation thathave the capacity to do so.

“These kinds of organisations look for smart people overproficiency in a given language or framework – to take the exampleof Paul, whose first exposure to Scala was when he joined theGuardian is a great example of this approach. For this reason Ienjoy working on Scala roles, as it means interacting at quite adeep level with software engineers – not only measuring technicalcompetency but delving into the way they think. However, notevery organisation is in a position to hire like this – some do needsomeone who can jump straight in to their tech stack, there isn’tthe time to undertake such a steep learning curve. What this hascreated in the market is a nicely growing infrastructure for peopleto have the opportunity to get to grips with Scala in a commercialenvironment, typically from a Java or Python background, butactually increasingly at a graduate level – which is a development

that I’m particularly excited by, as it shows that the Scala hiringmarket is diversifying nicely. What we also see a lot of at themoment is that a lot of experienced Scala developers move quitequickly into contracting, and tend to stay there”.

“A strong contract market for Scala is great, but I do think, that foradoption of Scala to increase, and for the number of people withexperience to follow, a driving force needs to come from thepermanent hiring market. While I’m hesitant to rely too much onmy experience with other languages, for me, an increase in seniorpermanent roles is an indicator that the language is really takingroot in the market. Over the last years, I’ve seen this in otherlanguages, that, as they’ve become more ‘mainstream’ inproduction environments, more permanent roles spring up. Ifthings are going well, this wouldn’t mean we would expect anydecline in contractor roles, it’s more that the hiring landscapebecomes more diversified, so there is the type of work, and scopefor progression that everyone in the community is looking for”.

Kingsley agrees that resourcing and finding capable teams whocan work efficiently together is an ongoing issue, but he points to“the growing amenity for companies to work with distributedteams and organisations which is also helping to address theseissues”, and to the likes of Underscore are actively trying to tacklethe challenge of training and open up the Scala ecosystem.

At the moment, there is a challenge around the assumption thatthat Scala is a niche language – which Alice notes seems to be aperception that is more pronounced with Scala than with othercomparable growing languages, such as Go, “which I think is atleast to a significant extent, because of Scala’s use of FunctionalProgramming. Within development, FP, by those without exposureto it, is seen as an entirely separate beast”.

Scala Journeys

14

A common misconception is

that Scala is not a production-ready language, while it is already running in the servers of

several big companies - even

banks!

The Landscape

“That said, as we’re seeing the division beginto close, with functional features appearingin Java 8 and 9 for example, helping to bringthe concepts to the masses as it were, andshowcase how making use of a functionalapproach can lead to vastly improvedprogramming power and productivity – andfun!”

Stefano agrees with this notion that Scala isviewed as a niche language, seeing that, atthe moment, “another commonmisconception is that Scala is not aproduction-ready language, while it isalready running in the servers of several bigcompanies (even banks!)”.

For him, the key to bringing this gap ofperception between Scala and thedevelopment community is in the spread ofevents like meetups. Alice remarks that “I’mseeing more talks and discussions at Scalacentric meetups and conferences that lookat using Scala and related tools such as Akkaand Spark in a business context. I do thinkthe volume of personal projects andexploration visible at Scala events is equallyexciting (and something I hope remains abig feature of the community even if Scalabecomes hugely popular). However, whenwe consider this unfair perception that Scalahas as being niche, I think the ‘brand’ could

benefit from continuing to showcase that it isa productive solution for businesses. Scala isa language that has the power to interest awide range of developers, whether theycome from an enterprise Java background,an academic mathematical bent, orsomewhere in between. For this reason, Ithink it’s important that the communityshowcase how Scala can appeal in all ofthese use cases, to help foster a diversecommunity of Scala enthusiasts goingforward”.

Kingsley seconds the value of “support forconferences and meetups like Scala Centraland initiatives like the Scala Centre and theTypelevel projects, where like-mindedpeople can converge and share theirexperiences, are great for helpingtechnologists evolve to Scala”.

It’s certainly an exciting time to be a part ofthe Scala community – the ecosystem andtooling, though perhaps not quite there yet,is maturing nicely, and there are growingopportunities for those who want to try theirhand at Scala, whether that be by joining anexisting Scala house, or undertaking trainingor independent learning – there’s a growingand enthusiastic community ready towelcome you.

Scala Journeys

The Future

16

The Future

The growth of Scala is at a really excitingpoint, reaching some degree of maturity asa programming language. It has substantialadoption in production codebases, andthere is a real proliferation and developmentof the supplementary ecosystem, especiallyin areas like Akka. It’s an interesting exerciseto consider what the future may hold for theScala language, and what impact this futurewill have on the community that make Scalawhat it is today.

Scala Tooling

For Pascal, the tooling today does not dothe language justice, but he does see thissituation as improving. ”Ensime, the texteditor plugin for vim, emacs, atom etc. hascome a tremendously long way in the pasteighteen months, and it's very likely to carryon improving. Scala support in IDEs (IntelliJand Eclipse, mainly) has also improvedtremendously. SBT itself is also improvingand becoming better documented”.

Kingsley is also looking forward to seeingadvances in the build and deploymentpipelines, including reducing the compileand build times of Scala artefacts, which issomething Rhys is in agreement with,hoping to "see faster compilation times witheach release. I also think the standard library

will become smaller since there will be moremodules to pick from rather than having allthat behaviour in the standard library”.

Pascal is also interested to watch thedevelopment of Scala.JS. He sees it as“going one of two ways: either becoming alegitimate competitor of TypeScript andFlow, or disappearing entirely. Either way, Ithink that much of modern JavaScript isinspired by functional programming andassociated concurrency libraries (c.f.promises, async/await, lambdas,immutability). Thus, even if Scala.JS nevermakes it, JavaScript programming will feelincreasingly functional”. Daniela also sees afuture evolution of the wider community inthe direction of Functional Programming ata broader level, as more people begin toembrace the functional programming world- “there is a huge curiosity around themathematical principles behind functionalprogramming”.

Pascal believes that “Scala will become moremainstream and will progressively eat intoJava's and Python's share of the market –though this will not happen overnight. IfScala does end up as a mainstreamlanguage, say, at the level of Python orRuby, this will result in profound changesnot just in the Scala community, but in theprogramming community as a whole”.

Scala Journeys

Thanks to the power of compiler

plugins, macros and other meta-

programming techniques, there is really nothing

that is off-limits.

17

The Future

Historically, Functional Programming hasusually been considered a fairly distinctdiscipline – as Rhys points out, “it can lookintimidating to a lot of developers”. Pascalargues that Scala will be the first functionalprogramming language to becomemainstream (he explicitly discounts Lisp). Forhim, Scala going ‘mainstream is a step inraising wider awareness of functionalconstructs, which will make their way intoother programming languages.

To some extent, he argues, “this is alreadyhappening: JavaScript's promises are justScala futures, Python is acquiring an asynclibrary and everyone is more comfortablewith higher order functions. I'm notnecessarily attributing those changes toScala's growing popularity. I think they'rejust useful abstractions so it makes sense forthem to gain more widespread adoption.Nevertheless, if Scala becomes morepopular, this cross-pollination will just keepon happening, and that's a good thing”.

While Stefano also sees Scala being thelanguage of choice for a wide array oforganisations, he disagrees with the ideathat Scala will eat away at the popularity andcoverage of Java – for him it does not makesense to compare it to uber-maturelanguages like Java. In his opinion, Javacannot and will not be replaced by Scala (or

any other language). That said, he argues,that “as the IT panorama becomes more andmore complex, there will be space foreveryone, and it’s easy to predict Scala willtake a considerable slice of the pie”.

Scala as Native

Stefano points out that there is so muchgoing on in the Scala community that havingto choose one thing to focus on for thefuture is quite a challenge! However, for him,“the recent release of Scala Native had methinking whether this could dramaticallychange impact the future of Scala. “Escapingthe JVM opens up a whole world ofapplications - we could soon have mobileapps written in Scala!”

The idea of Scala moving ‘closer to baremetal’ is something Paul Roberts is similarlyexcited about. “Although it's very early daysand I am not sure that it will grab theheadlines any time soon, I am really excitedby the possibilities offered by Scala Native,which extracts Scala out of the Java VM andtargets the hardware directly through theLLVM toolset. To my mind, this promises tobring the power and convenience of Scala toentirely new domains, such as embeddedand systems programming”.

Scala Journeys

As the IT panorama

becomes more and more

complex, it’s easy to predict

Scala will take a considerable

slice of the pie.

The Future

If Scala does end up as a mainstream

language, say, at the level of Python or

Ruby, this will result in profound changes not just in the Scala

community, but in the programming

community as a whole.

18

“I think if you couple this with the ScalaPlatform Project, which aims to define a coreScala Platform API and then modulariseeverything else, you could really end up withScala being at home in every layer of thesoftware stack from the bare metal all theway up to distributed cloud-basedabstractions.

For Paul, “the core of Scala can become theultimate flexible platform on which manydifferent abstractions can be built. Scala hasan attractive yet simple and familiar syntaxcoupled with a rock-solid collections library.It's possible for everything else to exist ascustomisable, optional components. Thanksto the power of compiler plugins, macrosand other meta-programming techniques,there is really nothing that is off-limits tothese external components. I think this willplace the future of the Scala platform in theperfect position to become the foundationon top of which many different elements areassembled and customised to support anynew programming paradigms that will comedown the pipeline in the future”.

Scala for Data

Kingsley sees “the triumvirate of Big/Fastdata, AI and ML as a juggernaut in Scala”,and Rhys nods to the increasing value ofScala ecosystem in “machine learning

problems in the industry with the amount ofraw data being generated and withcompanies looking for insight into theircustomer’s habits, and as a result, I thinkScala and Spark jobs will become morepopular”.

Daniela shares this thought, believing that“the Spark ecosystem will grow a lot since ithas a huge adoption and impact on thecommercial market – and maybe we’ll seesome cool additions to the toolbox!”

Scala Adoption

Kingsley sees wider adoption of Scala bybusiness in the future as they see economiesof scale in doing so, which is somethingDaniela similarly expects, alongside “toolboximprovements on the documentation forbeginners”. For Stefano, in the future, “Scalais not just the cool language startups go for.It is the language of choice of a number oflarge organisations, and any others arepresently investing a lot in transitioning toScala”.

As Kingsley has mentioned, while training isan ongoing challenge, organisations likeUnderscore, and the growing network ofmeetups and conferences are helping toease this transition and open up Scala tothose who are interested.

Scala Journeys

19

The Future

Scala Community

Pascal believes that, if Scala becomes mainstream, the Scalacommunity will change. “At the moment, a significant fraction ofScala programmers are there ‘by choice’: they are people who useScala in personal projects or who pioneered using Scalaprofessionally (or who deliberately joined a company that usesScala). As adoption grows, there will be more developers who useScala because someone else told them to use Scala: maybe it's thelanguage of choice at their workplace. These people will haveapproximately zero interest in understanding the underlyingmathematical structures of the language, and zero patience forblog posts explaining that monads are simple after all. They willjust want to get stuff done”.

“Thus, I think the share of "pragmatists" within the community willgrow. This will bias the community towards using a reduced, easilyunderstandable set of functional features. My guess is that thisreduced set will include everything that's currently in the standardlibrary (and similar), with better support for defining type classes(maybe something like Simulacrum and maybe lenses”.

Alice agrees that, as the community grows, we’ll see more‘pragmatists’ who just want to get stuff done, or those who haveless aptitude for mathematical principles, but I think that will be apositive outcome. Kingsley similarly sees the “bar for developersentering the Scala market lowering” as adoption increases, whichwill add new rewards, and new challenges for the community.

Currently, documentation and support for learning Scala still needsfurther development, and many outsiders do view Scala as a‘difficult choice’. As Scala becomes increasingly mainstream, asPascal suggests, it seems a fair guess to make to see a morecompact, more readily approachable set of features that help easethe transition of those moving into the mysterious world offunctional programming.

Today Scala has garnered a great community around it, but asPascal says, a big proportion are here by choice, and as Scalagrows, this may change. But, perhaps, Alice suggests, this hasalready happened – “to take Stefano’s experience as an example,he admits that his manager championed Scala, and he wasn’tinitially keen to pick up another language. He is an example ofsomeone who has joined the Scala community out of pragmatism,and he is now a keen proponent of Scala! I won’t claim thateveryone pushed to use Scala will have the same enthusiasm, butas I mentioned earlier, I am always struck by the passion thatpeople have for Scala, compared to other languages, so I thinkgrowing adoption will bring a great number of passionate peopleinto the community – and I look forward to seeing this develop”.

Scala Journeys

20

CONTRIBUTORS

Kingsley is a Partner at Underscore consulting, and has spent over a decade designing, developing and supporting large scale systems for a number of clients including Betfair, the BBC, Barclaycard and others that don't start with a B ;-)

While working to make things better, he’s seen a steady evolution towards functional programming, a sharper focus on development operation teams and tools and decomposing big things into smaller composable things commonly called services.

@kings13y

Scala Journeys

Pascal is a data engineer with a strong quantitative background and deep knowledge of Python and Scala, having authored a book on using Scala in data science. He is proficient in many of the languages and tools commonly used in data science, and his background as a PhD and Post-Doctoral reasearcher in theoretical physics has given him a deep understanding of applied mathematics and statistics. He also maintains several of his own open source software projects (pascalbugnion.net/code.html).

@pascalbugnion

Paul has been a Scala software developer at the Guardian for just under three years. In addition to his day to work he loves learning about and thinking about new programming platforms and languages.

github.com/paulmr

- Pascal bugnion

- Kingsley davies

- Paul Roberts

21

CONTRIBUTORS

Rhys is an accomplished software developer, with extensive experience in leading and growing teams, and delivering maintainable software. He is a follower of the DevOps movement, and a strong believer that developers should share the operational burden by building software that is monitored and supportable and that they should be responsible for how the software runs in a production environment. He is a keen Test Driven Design, Domain Driven Design and Functional Programming practitioner, and a follower of Agile principles and practices.

@rhyssharrem

Scala Journeys

Stefano works as a Staff Software Engineer at HomeAway UK. He has been developing software within the cozy boundaries of the JVM for a few years. He has recently become passionate about the Scala ecosystem - especially about all things Akka.

@svez_faz

Daniela Sfregola is a Software Consultant based in London, UK. She is an active contributor to the Scala Community and a passionate blogger at danielasfregola.com.

@danielasfregola

- Stefano Bonetti

- Daniela Sfregola

- Rhys sharrem