Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Positioning for Scala or Lift jobs [closed]

Tags:

I'm starting to understand Scala and I like it a lot.

How can you position yourself to get a paying job as a Scala developer (assuming those become more common)?

  • What parts of the Scala ecosystem have the best job potential (Lift, Actors?).

  • How can you gain credibility with a prospective employer without being able to point to Scala work experience (maybe experience on open-source projects?).

(The above questions are hopefully of somewhat general interest to Scala folk. If you want to factor my particular situation into your response, here are a few details about me: longtime developer (mostly Java) with a Computer Sci PhD; not currently working; I'm tied to a non-cutting edge location (Rochester NY), so I may be limited to remote work.)


Update 2010/07/30:

Thanks for the responses. I'd like to crank up the emphasis on the location issue. I'm tied by family to a location that probably won't have Scala work locally for a long time. Are there realistic prospects for getting remote Scala work, and if so how do you position yourself to get remote work? (A modest amount of travel would be doable, but not a full-on road warrior.)

Also, I was wondering about leveraging my teaching background. Would teaching a Scala class at a local university make a big difference in one's marketability as a developer, or just divert more effort than it is worth?

like image 896
Mark Abbott Avatar asked Jul 26 '10 19:07

Mark Abbott


People also ask

Is Scala good for Career?

Today, Scala is one of the best languages to learn before big data and Data Science. This capability of Scala helps it to sustain in the IT industry. Big data and Data Science are the two rising areas, which are demanding high for technical professionals.

Who is a Scala developer?

A Scala developer is someone who's highly skilled in designing, creating, and maintaining Scala-based applications. They also produce code in line with app specs, do software analysis, and collaborate with the software development team to verify application designs.

Is Scala a good technology?

Advantages of Scala No language is perfect for all use cases, but Scala brings a lot of advantages. Some of its desirable features are: The code is more concise, readable, and error-free. It is easy to write, compile, debug, and run the program in Scala, when compared to many other programming languages.

What is Scala used for?

Scala is used in Data processing, distributed computing, and web development. It powers the data engineering infrastructure of many companies.


2 Answers

Pure Scala position:

Finding a pure Scala position is not very easy, but it is getting easier and easier. I am going on my first pure Scala job interview in a few days.

I hope we will see a lot of new systems being written entirely in Scala, and I think these systems will be mostly back-end, heavy duty systems. These systems will be using Scalas less error prone functional style to reduce bugs. I think Akka, SBT and Specs will be important frameworks for the Scala developer (this is not much of a prediction since they are already important).

If you do not find a pure Scala position:

Your credibility comes from your time with Java. Most big companies have heaps of Java code that must be maintained and developed. If it is your job to babysit the old Java code, and as an old Java guru, you should have some say in how this should be done. The first step is to change the Maven setup to allow mixed Java/Scala environment. Moving to SBT is probably your best choice. This is a one time investment you have to do or else you can not proceed!

  • If you work independently you could probably replace Java with Scala whenever you feel like, most likely when you have to re-factor some old code. Talk about Scala as a "framework" for Java (this is technically a lie) that boosts productivity when speaking to the non technical project manager, this might calm their worrying minds. In the end it will be your responsibility to see to it that Scala indeed integrates with Java. But since Scala does this very well it is not much of a problem. Actually, maintaining old legacy code is not a dream for anyone, so PMs are usually happy if they find anyone who would do it for more than 3 month. Management will probably put up with you rebellion.

  • If you work in a team it is a bit more tricky. In this case you have to teach the team Scala, or else they will not be able to understand your code. You have to persuade your PM to set aside resources for Scala training (might be hard). When you introduce Scala to a team, start small. My experience is that it takes a while for a Java dude to learn Scala, so this is not done overnight. Therefore, ignore everything that is "hard" when you teach Scala. When the team grasps the basics, start with writing tests in Scala (thank Davetron5000 for this tip), continue to use Java for programming in the application (the production code). Hopefully the team will learn and enjoy Scala and after that, well, it is all downhill from that point.

Good luck!

like image 176
olle kullberg Avatar answered Jan 03 '23 16:01

olle kullberg


If I was hiring at the moment, I can tell you right now what questions I would be asking and they would be about the language. It is a hard language to understand at a deep level, even if it seems easy to use and, as a consequence, you might be expected to understand code written in a large number of different styles.

Knowledge of libraries (Akka and Lift being the obvious ones) the sbt build tool is great but it is an extra. I would want to know that you understand:

  • a bit (well, a lot) about the type system (and higher-kinded types)
  • something about the typeclasses approach
  • implicits and the pimp-my-library approach
  • good scala style (i.e. idiomatic scala)
  • recursion
  • the actors approach to concurrency
  • the standard libraries
  • functional programming

If you understand the language, you'll pick up the libraries with no problems, I'm sure.

Other libraries:

  • scalaz for functional programming
  • scalala for numerical programming (linear algebra etc)
  • scalaj for interacting with Java
like image 37
oxbow_lakes Avatar answered Jan 03 '23 18:01

oxbow_lakes