We’ve learned our lessons, made mistakes and won battles. Now, we’re here to help you and pass some wisdom and practical tips about mastering the CTO’s role.

This article is based on a story of one of our developers, ex Java now Scala developer, who decided to follow the Scala path because he found writing in Scala and being part of a Scala Development Company extremely developing and interesting.

Scala programming is definitely one of the main topics that come to mind when it comes to Scalac (the name itself is actually Scala + C = Scala compiler and we’re a Scala development company in the very core). As you can probably tell from the name of our brand, before we developed teams like Data Engineers, DevOps, UX/UI and Frontend, our company was powered by Scala experts – even now, we are one of the biggest Scala development company in the world, and a Gold Lightbend Partner. 

Some time ago I started wondering; what is it about Scala that developers prefer over other languages? Why do we need Scala?  This post was originally meant to be focusing on Scala vs Kotlin comparison – so we interviewed our senior engineer (who was previously a Java engineer) just to find out, that there is a way better story to tell – about how Scala makes Developers enjoy their work again. Let me take you on a journey to discover the ultimate truth! 

On the first day, there was Java 

Java was developed in the early 1990s and it changed the whole IT world. In the early 90s, the idea of extending the power of network computing to the activities of everyday life was something totally abstract. Today, with technology being such a great part of our daily lives, we take it for granted. As a matter of fact, Java is still, after all these years, an engine that runs many applications – from games to business solutions.

The real question is: is Java enough?

The slow evolution of the Java programming language has led to quite a few inventions in the JVM programming languages. As a result, there are over 50 JVM languages! They were all created to fill in the gaps in existing versions of Java by developers who didn’t settle on “good enough”. 

In theory, Java can be used for everything –  a mobile app, a server, an e-commerce platform. In practice – iif you want a mobile app you’re better off with Kotlin, and if anything regarding your solution is more complex and requires a big amount of data Scala is a way to go.

On the second day, there was Kotlin

Sorry to have to put it this way but Kotlin is just Java in a nicer package – still an object-oriented language but fresher and funkier. It’s so similar that it doesn’t require a different mindset. Java developers are able to quickly switch to Kotlin and program smoothly in it. You can also call Java code from Kotlin and vice versa without any hassle. 

Moreover, apart from that, it has several other advantages, such as the way the collection library is built, support for nulls, and coroutines. Kotlin supports functional constructions, but it is still closer to Java deprived of its old-fashioned legacy than to Scala. It gives Java programmers freshness and constructions that are not available in Java, as well as brevity in expressing thoughts through code.

Kotlin’s domain in contrast to Scala is mobile. It can be used for both server and client (mobile) development – Frontend and Backend. Android supports Kotlin out of the box. You can also use Scala for that purpose but it is not as hassle-free as Kotlin.

Scala vs Kotlin popularity
Scala vs Kotlin popularity in USA
Source: Google Trends

I chose Scala as a junior because in a way it can be easy to start with.
You don’t have to jump straight into object-oriented programming (it can be introduced in a procedural paradigm at first), but at the same time, it has all the necessary concepts to learn it. You can move over to functional programming without having to switch to other functional languages. Scala also shares C-like familiarities so it’s easy to learn C-style languages too. 

Patryk Kirszenstein,
Junior Scala Developer 

and on the third day… there was Scala

As mentioned before, some Java developers knew that they couldn’t quite settle for what they had. They wanted more. They were looking for an alternative, where nicer syntax could be used. 

Scala as a programming language with functional facilities requires a different mindset and much more knowledge than Java or Kotlin because of the fact that, among other things, code is written differently.

In Scala, you can write functional and object-oriented code. It has a very rich syntax that enables you to write code in many ways. This is also why people who are not involved with Scala may have the impression that it’s over-complicated. This is because, in the case of Java and Kotlin, programmers know what to expect. With languages like Scala – you go big or you go home. 

Systems written in strongly typed languages like Scala are easier to maintain in the long term. Also, a big business-related advantage is that it’s a JVM compiled language so you can use all the existing Java libraries. Did you know that Scala, although not so popular as Java, it’s also used by world-wide enterprises which seems to see its advantages like Zalando, LinkedIn, Twitter, Foursquare, Netflix, Tumblr, Walmart, Paypal, Intel and Samsung?.

What are the business reasons to use Scala?

If you’re working with complex environments, applications, analytics it’s way more efficient than Java or Kotlin. Scala is used to implement Spark (the leading platform for distributed data processing)  as well as to define the computations themselves, so it’s really data-scientist-friendly. Not to mention that Scala is a great language for domains like Machine Learning and Blockchain which are extremely important in today’s business, and will become even more significant in the future. 

Scala is pure 

Challenges may be the key to why Scala has such a big community – especially for a seemingly niche language – with over 95 919 questions asked solely about Scala on StackOverflow (not to mention related topics).

Scala is a powerful language with highly-advantageous features and flexible syntax. But, it is quite difficult for developers to get a grip on this JVM programming language. However, with time, it becomes really natural and straightforward. What Scala represents, with its functional approach, is passion-driven work leading to pure self-development. To fall in love with it, you need to first start writing in it, and then dig a little deeper. Scratching the surface may only give you the wrong idea. 

Dorian Sarnowski Scala Engineer Developer Expert

“While many languages share some of Scala’s features, few share so many of them, making Scala unique in ease of development.

Dorian Sarnowski,
Senior Scala developer 

As a Scala development company – we use Scala for a variety of reasons, which mostly come down to reducing development time and reducing the number of bugs in code. While many languages share some of Scala’s features, few share so many of them, making Scala unique in ease of development.

Scala – simply beautiful.

Scala really encourages switching from mutable data structures to immutable, and from regular methods to pure functions (without getting crazy about it like Haskell).  It’s simply beautiful. It provides a good balance between the conciseness of a language, extensibility, and performance. Keeping to JVM’s paradigm promise of “write once, run anywhere”, and combining it with functional coding, Scala lets you build the best of both worlds in your code.

It’s functional

I don’t think there is any programmer who wouldn’t find Functional Programming interesting, but sometimes they just let it go because they have other priorities at work. Fortunately, some jobs actually let you do exactly that for a living and that’s quite amazing. 

Scala is a very appealing choice for developers who are looking to strike a balance between writing pure code and writing solid code quickly – by building upon existing solutions and libraries when available. That  – combined with interoperability with the Java ecosystem and the JVM – makes Scala look very promising.

Scala is more influenced by functional programming languages like Haskell than Kotlin. It encourages the use of functional coding along with some additional features such as pattern matching and currying. Not only that,  but functional programming is also more substantial in the Scala environment. 

“Scala lets you build the best of both worlds in your code.

It’s love

Scala is functional and type-safe, but you encounter the difficulties progressively (you can still write Java-like code), so at no point will you get bored. It’s more likely you will feel like you are always on an intellectual adrenaline rush. You could poetically compare it to the feeling of falling in love for the first time. I think that’s truly one of the reasons Scala is definitely worth the time you will need to learn it. It will change the way you think forever. 

Share some love for Scala in the comments and feel free to ask any questions.

Check out other Scala-related articles on our blog:

Scale fast with Scalac – Scala development company ready to solve all your challenges.

It is inevitable that COVID-19 will disturb not only health but also the economy.

Companies need to lock their businesses down and big decisions are being put aside while waiting for better times to come. However, putting the brakes on some projects may not be the way to go, since no one knows when the dust will settle down. 

The coronavirus outbreak is just a recent example, but any crisis is a potential threat to a project if the concerned parties are not prepared for persevering.

The crisis doesn’t have to fully disturb work, though. While we can’t forget about what’s happening all around us, we’re still able to accomplish tasks and take on new projects with the help of a few adjustments.

One of them is remote work. 

Today, we’ll talk a bit more about remote working and why it might save your business during these turbulent times, even if you assume otherwise.

What are some issues with running a business in challenging times?

KPMG have identified a few common contractual issues for businesses in troubling times, which you can see below. 

Source: KPMG

While all of the aforementioned issues could have created problems a few years ago, they can be easily solved via online, remote management of the projects today.

How does remote working deal with these issues?

Well, it can probably solve them all. For many businesses, a lack of work on site definitely leads to problems with contracts, but it does not apply to technology.

While there is still plenty of uncertainty going forward, the work must go on and work still needs to be done. Even those businesses that are on complete lockdown need to handle the situation somehow. The environment is challenging, but companies must do their best to run their business as usual. The same should apply to internal and external collaborations. 

Being prepared to cater for this new environment is not a choice any longer, especially when nobody knows when the turbulent times will end and business will return to normal. 

If work progresses as usual, except for being managed and reported remotely, then there’s no reason to worry about signing, terminating or breaching contracts. 

Today shows why this is, but should not be, a challenge for many. 

Those who had already adapted to remote working don’t necessarily win today, but more importantly they don’t lose. 

Work can’t stop

It’s understandable that the crisis may dampen the mood for launching, investing or spending resources. Of course, some businesses that are under financial pressure might face problems when it comes to upholding contracts and continuing work. However, if nothing except for the method of working and the economical lockdown changes, then putting technological projects on hold is very often not necessary. Actually, in certain cases, doing so could even be considered irresponsible

Any projects that were launched before the outbreak are likely to be continued now, so those that were scheduled to launch and are ready to go shouldn’t be put on hold either. 

What’s more, and what might be a tad controversial: this may be a really good time to work on certain projects while the World is slowing down a bit, especially if nothing really changes except for the type of work. This is where the following question arises:  how to make it work?

Finding the right partner to run a project is crucial. Nearly everyone is working remotely nowadays, but not many software houses know how to properly sort out their remote workflows. 

Change your approach

Facing the crisis isn’t a perfect situation for either side of a project and the atmosphere can be tense, it’s true. What’s most important is to stay safe, but also to be proactive, productive and keen to find workaround ways to deliver. 

Many businesses facing an external crisis need to quickly adjust to remote working.

Regardless of whether or not they have previously been remote working evangelists, they’re often now being thrown headfirst into a brand new situation that they need to handle.

There’s a hurtful opinion that remote working means a lack of productivity and missing deadlines. The problem doesn’t lie with remote working itself, but rather with business partners who don’t live up to expectations and put more groups off the idea as a result.

It’s a test for collaboration

While external collaboration (with software houses or agencies) is important, the crisis situation also puts internal collaboration to the test. This is another reason why it’s better to persevere on projects with those for whom remote working is their bread and butter. They may share their best practices and help you survive the transition to remote working, while maintaining the project stays up and running. 

It won’t happen overnight. First of all, it takes a lot of work and understanding.

Long story short: being surrounded by business partners who know the nature of remote working can save a whole project.

Keep growing, regardless

In turbulent times, you need to find a way of running your projects and also evaluating any potential risks. Of course you may be concerned about how the whole situation could affect your business, but to survive and be successful you need to grow and, eventually, scale.

If your team is not ready for this, your first thought might be to hire more people to accomplish some tasks. But how can you safely hire someone and conduct appropriate onboarding now, when you have been thrown in at the deep end in terms of working remotely and trying to sort out project management?

Well, you should think about contracting a software development company that is able to complete the project for you. That way, it can be done without you hiring extra people, or spending time on the searching, screening and onboarding process that go with it. Not to mention the additional never-ending costs that you would eventually have to cover.

With contractors, you don’t have such strings attached: if all goes well, you can scale the collaboration. If not, it’s fine to  part ways. What’s more, contracting can be much cheaper than hiring someone full-time, since you will hand a whole project over instead of providing benefits and business expenses for a particular employee. 

Contractors can therefore help you grow and adjust your activities to any current situation,despite reducing costs. So why not jump on a call and talk about it?

To wrap-up

The outbreak may stop some business for a while, and it will probably have an impact on operations. Does this mean that you need to stop too? Not if you don’t have a valid reason to do so, no. Running a business as usual may be one step too far, but if your team has the capabilities to work remotely then make the most of it. If not, provide them with the necessary tools to make remote working easier. In terms of external collaboration, choose those companies that know how to organize their work remotely and have already been doing so for quite a while. 

There are a lot of things to worry about right now, but remote working shouldn’t be one of them. Not with us, anyway.

Do you want to learn tactics, strategies, and tips on Managing Remote Employees?

Get our Ebook for free!

If you like this article, check out also:

Scale fast with Scalac – Scala development company ready to solve all your challenges.