If you want to succeed in a World of ever-changing technology, you always need to be a step ahead of your competitors. Constantly pushing the boundaries is crucial if your business is to provide flawless customer experience, and grow. 

Today, we’re going to show you the perfect example of a company that wasn’t scared of scaling up machine experimentation with Scala. 

And let us just take a sneak peek at that in one sentence: 

“I love working with Scala” |  

Alexandros Bantis, backend Scala Developer at Tubi

The outcome is rather impressive, so read on to find out more about it!

Tubi: what is it all about

Tubi is an American streaming service. Tubi’s programming includes both movies and television series from various American content providers. 

In September 2019, Tubi announced that its users had streamed more than 132 million hours of content. It’s the largest free movie and TV streaming service in the US. It’s “powered by ad bidding”, which means that their users don’t pay to watch but need to see ads in return for streaming access.

Below you’ll find a screenshot from the Scylla Summit 2019, at which Tubi gave a presentation: the numbers aren’t too shabby. Having over a thousand ad partners, more than 200 content partners, over 15 thousand titles, and more than 20 million active monthly users (and bear in mind that Tubi only operates in the US for now!) speaks for itself. 

scala software development company

ML algorithms identify the content that the users want to watch and provide them with some recommendations. The system takes less than a second to select, sort, and display content for each user out of thousands of titles on Tubi’s AVOD (ad-supported video on demand) service.

And users don’t have to spend ages looking for something to watch. 

As you can probably guess, it’s a lot of data to work with and process on a daily basis. Getting through sufficient data to draw the right conclusions is nothing but a challenge.

It comes as no surprise that, to leverage all of that data, Tubi had to adjust their technology and solutions to serve not only their purpose but also to provide the best customer experience possible. 

And this is where Scala steps in, supporting the transformation within Tubi. 

Tubi’s Scala journey

So, what’s the marriage between Tubi and Scala? Tubi is one of the biggest companies in the World that benefits from implementing Scala in their strategies. 

Tubi’s backend Scala Developer at the time, Alexandros Bantis, explained the bumpy ride from a Node.js system to a fully distributed Scala engine.

There was that one event called Scylla Summit 2019 in San Francisco, and this is where Bantis provided some insights into the personalization service infrastructure that supports Tubi’s impressive database of titles and users.

“I think Scala is awesome”

Alexandros Bantis

Tubi before Scala

When Alex started working for Tubi, he encountered the following infrastructure: a homepage service written in Node.js, while analytics and experiment services used Apache Spark. A machine learning data pipeline, also based on Apache Spark, fed a Redis database backend.

Does it sound complicated? Definitely, especially when it comes to running A/B experiments. To test some new ideas out using A/B models, ML engineers were forced to write the Apache Spark model, write the data to Redis, and then update the code in the Homepage Service application. The work had to be done in cooperation with the backend engineering team, which meant extra time was needed for the implementation and may have caused delays. The engineers also had to update the configuration on the separate Node.js experiment engine, implement changes, and restart. After an experiment had finished, the process had to be repeated in order to come back to the starting point. 

Of course, that created a massive challenge and was an obstacle for the whole company. Machine learning engineers had to collaborate tightly with backend engineers to run even a single A/B test. Nothing could have been implemented without the backend team and multiple levels of approval, cooperation, and deployment. 

And you may be able to guess in such an institution as Tubi, the number of A/B tests to implement or even discuss was rather on high. The collaboration left a lot to be desired, especially when it came to projects being time-bound: multiple back-and-forth cooperation cycle times negatively affected the implementation of A/B tests. 

There had to be a better way to do it, and there was. We’ll cover it later on. 

Tubi’s challenge

That “collaboration” issue was just one of the reasons why changes were needed. The architecture, to put it simply, was rather obsolete and no longer served Tubi well, since the company had been growing dynamically.

And scaling did put a few challenges in Tubi’s way. The technological requirements that changed or newly presented themselves were as follows:

  • lower latency (collaboration issues to be eliminated and shortened)
  • better fault tolerance (including better observability and debugging tools)
  • higher efficiency (throughput)
  • reliable speed and performance
  • better, more stable, and maintainable code 
  • business logic technical debt removal 
  • more advanced support
  • better test coverage

Another challenge was in providing a great customer experience. The time taken to deliver a personalized page of video recommendations to a user was about 300 ms when Alexandros took the project over.

“My mission was to create a back-end application that would make recommendations and ML algorithms that have been run in Spark space, and get them in front of the user.”

Alexandros Bantos, Tubi | https://www.youtube.com/watch?v=ZnZ8oqz71bw

After a round of changes implemented with Scylla and Scala, Alexandros shortened that time to just 10 milliseconds.

Tubi after Scala: an expert commentary

One of the areas in which Tubi found Scala the most useful, according to Alexandros, was Domain Modeling. Scala is a very expressive language. It supports a lot of constructs that other popular languages don’t. This allows a Scala developer to express business rules with more precision while remaining concise. In other words, Scala lets you say more with less.

scala software development company

And this advanced expressiveness is checked for correctness by the compiler. That means, when the domain model evolves and the developer introduces changes, the compiler is there to help identify inconsistencies that the change might have introduced. These problems will be caught early during the development, not while the system runs in production. This greatly decreases the cost of evolving the system towards better supporting the business requirements. As Alexandros says, Scala allowed them to move from a “move fast and break things” approach to a “move fast with a stable infrastructure” one.

Another area that Tubi found Scala extremely useful (and rightfully so) was concurrent programming. It’s well established that applications built on JVM can take full advantage of the processing power of the hardware they’re running on. Multi-threading is at the base of JVM, and it’s common for developers to use it. Yet concurrent programming is not easy. Care has to be taken when accessing and mutating states from different threads, and getting it wrong can result in race conditions, deadlocks, or simply poor performance. Scala’s expressive and advanced type system again came into play here, allowing library designers to provide proper abstractions over these complicated operations. One of these libraries, used in Tubi, is Akka. It brings the actor model, which is well known from Erlang, into the Scala world. It provides abstractions that take the burden of managing multi-threaded code off the programmer and onto the library itself, reducing the number of future problems to a minimum, and yet allowing the application to take full advantage of multi-core processors.

Lastly, Scala is a multi-paradigm language, which means that it supports both object-oriented and functional programming. Tubi found it very useful to use the best of both worlds, combined with the actor model, in building their system. Object-orientation provided modularity, functional programming was used to build bullet-proof business models and rules, and of all this was used along with Akka, which provided seamless and easy concurrency. All of the above contributed to Tubi now having a performant, highly scalable, easily maintainable, and easily extensible system.

Tubi x Scala in 2020

How to “judge” whether a particular company invests in or is looking for new resources? By checking their career page, you can often quickly evaluate if a specific technology is a skill that the company is looking for. 

And Scala, in Tubi’s case, is definitely one of these skills. 

Tubi hasn’t stopped recruiting people with a specific, Scala-focused, mindset. 

Here’s just one example from Tubi’s LinkedIn job offers: in this particular case, they’re looking for a Scala Engineer.

We are looking for a Scala Engineer to work on building low-latency services to serve machine learning models, work on sophisticated algorithms for ad delivery pacing and forecasting, improve the way we deploy and operate our services, and even contribute to open source projects.

Such job offers are also available on various other sources, including AngelList.

Their Scala requirements are rather on the strict side, with a requirement of at least 3 years experience working with Scala and full efficiency. What’s more, Tubi may require a degree from an accredited university. 

However, from the job descriptions, it’s possible to evaluate how each Scala job role is going to look like. Scala Engineers at Tubi are responsible for contributing to building low-latency services, working with micro and distributed systems, and writing shipping quality code. 

Working with Machine Learning Infrastructure is a must. 

Tubi scala software development company

What else does Tubi do towards Scala appraisal & education? They use Github, for example, where Tubi willingly shares repositories written in Scala. Their Medium profile is also filled with insights that are precious for Scala wannabes, and not only.

To wrap-up

There are so many benefits resulting from changes related to Scala: more maintainable code, resolving collaborations and implementation of A/B testing issues, or lower latency, just to name a few. Such changes don’t happen overnight, obviously. Tubi is just one example of a company that has tackled Scala in a truly impressive way. If you want to join the club, contact us and let’s work this Scala magic together.

From challenges to achieving goals – building a complex solution takes time and effort in order to seize all opportunities and deliver a high-quality product. Thinking about all the aspects you have to handle when developing software or making changes to existing ones can be a little overwhelming. Especially when a solution that used to work doesn’t fit your needs anymore and bottlenecks give you sleepless nights. Picking the right partner to help you manage this is a hard nut to crack. Maybe it’s high time to ask other companies about their own experience and recommendations?

Read more

If you have already decided on IT outsourcing, the main question you may ask yourself is: should I choose offshore, onshore, or nearshore software development? While considering all of the options, you will probably always consider quality versus cost. This is a natural way of thinking, and you are not alone. 

Making decisions about IT outsourcing is nothing new. According to a Statista report, this sector generated revenue of $66.5 bn globally in 2019 alone. This shows how huge the market is and that tech companies are not afraid of moving some responsibilities to other countries. 

If you are a CTO or project manager in this group, you have to choose the best value-for-money outsourcing alternatives. The options you have include onshore, nearshore, and offshore software development. What do these terms mean? You will find brief definitions below, but fortunately, we have prepared more than just that. Read on to learn more about opportunities related to these three types of outsourcing. 

What is nearshore software development? 

Basically, nearshore software development is outsourcing work to a neighboring country or another not too distant location. For example, UK-based companies frequently choose software development teams located in Poland.

Advantages of nearshore software development 

  • Better communication – by choosing nearshore software development, the time difference won’t be more than 2 hours. Thanks to being located in similar time zones, it’s easier to maintain communication between the internal and external teams. 
  • Similar cultures and languages – thanks to nearshoring, both teams don’t have to face cultural or language problems. Neighbors can usually better understand local workers and avoid communication mistakes. 
  • Competitive prices – the average local wages of programmers, for example, in the United Kingdom and Poland differ a lot. This difference may be a big enough reason to choose nearshore software development.
  • A huge choice of options –  by passing on some work to nearby countries, you extend the pool of professionals. Of course, you need to assess their technical skills, but you are not limited to employees on the local market. 

What is offshore software development? 

Offshore software development means outsourcing work ‘beyond the shore’, far from the home country. For example, if a tech company in North America chooses to cooperate with a team from Europe or Asia. 

Advantages of offshore software development 

Real cost savings – the most appreciated benefits from offshore software development are financial savings. You may find information on forums, for example, that some companies can achieve even a 70% cost reduction. This refers mostly to North America, where the wages of developers are the highest. 

Skilled workers – instead of searching for candidates on the local market, you can have quick access to programmers in distant countries. An interesting report prepared by HackerRank may serve as a great guide on where to look for them. It presents 50 countries with the best programmers. The coding skills in this research were rated according to work accuracy and speed.

 – English-speaking professionals – in some countries, you may expect very high proficiency in English from software developers. To carry out research you can use a report prepared by EF, in which you can find the countries with the best English language skills. It shows that out of the 14 best English-speaking countries, Poland is among the top 10 European countries.

What is onshore software development? 

Simply put, onshore software development is domestic outsourcing. Hired employees could be from the same city, or any other part of the same country. In this case you shouldn’t expect cost savings, but rather the possibility to manage projects on time with extra workers. 

Advantages of onshore software development

An Easily reachable team – with the external team located in the same country, communication should be smoother. This is possible thanks to the same working office hours. 

Culture and language matching – with onshore software development, you don’t have to worry about communication problems.  Workers from the same country and speaking the same language have the best chance of getting along.  

Interviewing programmers in person– instead of working through a project manager, you can invite and test programmers’ skills yourself. 

Savings on traveling – having workers close to home doesn’t require traveling to a third-party company. This is actually the only cost-saving possibility when choosing onshore software development.

Remote software development on the wave of growth 

The development of IT outsourcing is a result of a growing demand for IT services and a talent shortage. For example, in 2019, unemployment rates for the US tech sector fell to a lowly 1.3%. The labor market is in high demand, and finding IT professionals isn’t a piece of cake. This is confirmed by another piece of research conducted by Indeed, according to which 86% of hiring managers and recruiters find it challenging to source and hire technical talent. Furthermore, over a third (36%) think it is “very” challenging. 

What’s also interesting is that in some regions that are the world’s biggest tech hubs, such as London or New York, finding a developer without help from HR agencies is an extremely demanding task.

Domestic markets have become a competition between local tech companies, and as a result they are forced to look for alternatives. Outsourcing therefore seems to be an inevitability for being able to manage projects. Even a report prepared by Statista reveals this. Over 45% of respondents from IT companies say that the reason for IT outsourcing is that it provides access to skills that are not available in-house. 

Lightshot screenshot

Top reasons for technology outsourcing worldwide 2018

Offshoring: Quality versus Cost

Successful offshoring will be the result of a thorough analysis before choosing a service provider. But the choice won’t necessarily be the same for each company, mainly because different tech businesses face different constraints. Some of them will have more problems with finding programmers who are skilled in a given technology, while others will be hampered by budgets. 

Regardless, all CTOs and Project Managers who consider offshoring will need to create a checklist in order to make the right choice of external company. And we have an example one for you. Those elements, when well-analyzed, increase the chances of a successful cooperation with the external team. Those factors should be prioritized in line with the company’s goals and limits. 

Key decision factors: 

Company’s location – this will impact communication and meeting options. Consider what time-zone flexibility you can accept and for which projects. 

Project Quality – this category may cover a few areas. For example, paying attention to customer requirements, on time and on budget service delivery, or previous client recommendations. All of those elements will show you whether a project is likely to be delivered according to your standards. 

Technical skills – without skilled workers, any project might be a failure. Check up on workers’ technical certificates and their involvement in the IT community. You can also verify GitHub profiles to see employees’ coding skills.  

English proficiency – language skills may affect communication matters. That’s why you should ask about workers’ English certificates or the possibility to arrange online interviews with project managers. You can also check whether the outsourcing company has previously worked with English-speaking countries.

Experience – you need to  check the team’s experience in a particular type of software technology or industry. Thanks to that, you may expect a piece of advice on similar functionalities for your company’s use cases. 

Cost – if you expect some savings, you should incorporate employees’ benefits, insurance, and travel allowance to the chosen countries.

Communication and transparency – key factors of successful remote software development 

Whatever type of outsourcing you choose – nearshore, offshore, or onshore software development, you need to take care of efficient collaboration. 

This requires engagement on both sides. 

The common saying at Scalac is: “we work with a client in two teams, but in reality we are one team in two locations working on one product or project”. With such an approach, both parties are involved enough to solve problems and get the most out of the available technology. 

Any challenges the teams face may be smoothly addressed thanks to effective communication. Let us show you a few tips on how it may support the remote software development process. 

  1. Plan working methods

Agree who will be a contact person on your and the external company’s side. Both sides need to confirm acceptance procedures, paths and working methods. At this point, you should start setting the rules of cooperation. Then you can always refer to the agreed arrangements at later stages of the project in case one side doesn’t stick to them. 

  1. Take care of transparency 

You need to create a culture that makes the collaboration clear. In order to achieve that, you should ensure that both parties are on the same page. For example, facilitate introductory meetings to show the bigger picture of the project. Arrange feedback calls to sum up the results of the cooperation at certain stages.

Use productivity tools  that enable tracking of tasks and working hours of the external team. Thanks to these, both the client and the outsourcing company can have a clear view of the progress. 

  1. Communication tools. 

Passing information about specifications, requirements and bugs in the code requires smooth communication. You will find many apps that help with arranging online meetings or video chats, facilitating project management, and sharing documents. Most tools are quite similar when it comes to their features. That’s why software development companies prefer to use one or two of the same type. For this reason, you should confirm with the outsourcing company which tools they use and, if necessary, have them agree to use your internal apps.

Where to find high-quality software developers at a reasonable price?

The choice of software development companies is as wide as the sky. But over recent years, some countries have become real leaders in delivering software. This has happened mostly because they meet several of the criteria from the above list. To give you an example we should mention Poland. 

#1 Coding skills and achievements

HackerRank classifies Poland as the third-placed country when it comes to coding skills. In the same study, Polish programmers ranked first in Java assessments. They were also listed in the top five for other mainstream programming languages like Python, Shell, and Ruby. 

The Scala language is getting more popular in Poland as well. On LinkedIn, there are over 3,200 profiles of Scala developers located there. There are even professional companies like Scalac that offer programming services based on this language. You can check out this top software development company on Clutch.  

We should also remember about some famous Polish minds in the tech world, who are working for the leading US companies. For example; Nathan Blecharczyk, the Chief Security Officer for AirBnB; Leonard Bosack, the co-founder of Cisco; or Piotr Szulczewski, the co-founder and CEO of the Wish platform.

Lightshot screenshot

#2 Environment for skills development. 

In addition to this, two of Poland’s largest cities, Warsaw and Krakow, were also included in the top 50 cities on the Tholons Globalization Index. This means that, thanks to emerging innovations, the available startup ecosystems and digital transformations taking place there, this country is a great place to develop coding skills. 

English is also the second language that most Polish people learn from primary school. They also tend to travel a lot and have a more Western mindset. These factors probably all contribute to a great command of English among Poles. 

#3 Adjusting to the clients’ needs 

Software development services have become a Polish national specialization. There are over 700 Polish software development companies on Clutch.co, which is the leading ratings and reviews platform for IT services. 

This position was also reached thanks to a great flexibility from Polish teams in terms of cooperation. For example, if North American companies start working with Polish teams then they have to make some accommodation for the different time zones. However, there is still enough overlap of working hours to enable a collaboration and to set up meetings. External teams usually adjust to the clients’ work time without it being a problem for them.

Final thoughts 

Due to the difficulties of finding IT professionals in most technologically-developed countries, outsourcing software development is now often a must, or at least the best alternative option. As workers around the globe can have a similar skill set to local experts, remote cooperations will soon be a world-wide standard. The growing demand for new technologies will only speed up this transformation. 

What’s interesting is that such collaborations have stopped being perceived as just a method for cost reduction. Today, it is simply the preferred way to manage IT projects on time. 

If you have already decided to outsource tech work, be sure to take your time over choosing the outsourcing option that best fits your company’s needs. This will help you avoid communication issues and, therefore, project delays.  Hopefully, this article will help you to make a sensible decision. 

Sometimes, buying an already existing solution for your company is not enough. It doesn’t have the features you need, or it doesn’t work well with your tech stack. Or maybe existing options on the market are very limited, and you need software built from scratch. Since you don’t have the time or personnel necessary to build this kind of tool yourself, you have decided to ask a software development company for help. You have prepared a list of requirements for your solution, picked a software company, and booked a meeting. 

Now, it comes to the most critical part – picking a cooperation model. The consequences of choosing the wrong type of contract for your business can be severe, from having no way of changing or replacing features, through ending up with a rushed or unfinished product, to going way over your budget. Therefore you must think carefully about the type of contract that will suit your needs best.

At Scalac, we offer three different cooperation models:

  • Fixed-Price
  • Time & Material
  • Fixed Budget

If you are wondering which of these cooperation models would be best for you then you’re in the right place. In this article, we will take a look at the three aforementioned contract types and how they work. 

We’ll also mention which types of projects work best with each model in order to guarantee that you will receive your ordered product on time, that it does exactly what you wanted, and without straining your budget (or nerves!).

What is the Fixed-Price model?

A Fixed-Price cooperation model works just as it sounds. You pay a lump sum of money to the developing company in exchange for specific results being delivered. It’s one of the most popular cooperation models because a fixed-price contract makes companies feel safe and secure. They have a set budget and thus are guaranteed not to pay anything more than that for the project. If a company needs to strictly plan their budget and expenses, this cooperation model admittedly sounds attractive. 

What’s more, there’s a “set in stone” deadline by which time the client is “guaranteed” to be presented with the ready product. And with a detailed plan including goals and milestones, they can easily track the progress of the project. There’s no need for the client to supervise the project either, so everything sounds clear and predictable. If your project is a small one, with clearly defined features and little risk of things changing, a Fixed-Price model might be what you need. 

How does the Fixed-Price model work in practice?

Let’s say you need to order a cake for a parent’s birthday. You asked them what type of cake they would like, and they definitely want a chocolate chip cake. So you call a bakery and order a chocolate chip cake. The bakery then asks how big the cake should be and gives you a price for the chosen size. You pay for the cake that you want and the bakery delivers it on the due date. This is exactly how Fixed-Price cooperation models work – it’s all pretty straightforward when it comes to simple products. However, this type of contract also has several drawbacks.

Imagine a different scenario. You have already ordered a chocolate chip cake, but then your mother calls and says she would prefer a strawberry sponge cake instead. Can it have a different text on the icing too? You call the bakery to change the order, but they refuse. Since they have everything ready for the chocolate chip cake, they can’t change the order. They can only make a second cake, for which you will have to pay extra. They could add the text to the original cake, but that will also cost you extra. 

Project models work in a similar way – if you have a detailed plan and a list of guidelines that you are certain won’t change, a Fixed-Price model is an option to consider. However, Fixed-Price contracts also have a number of flaws. 

Fixed-Price contract disadvantages

At some point during your project, you might learn that you won’t need one of the features identified in the contract, but you will need a different one. You also need a newer version of API, and support for the new system. With a Fixed-Price cooperation model, changing the scope of work requires additional procedures and usually the formal flow too. For bigger changes this is justifiable, but for small adjustments the overhead on the formal flow makes the work much more expensive. This is because a task that only takes a developer a few hours has to firstly be discussed with management, some risks assessments have to be added to the estimate, then quality assurance, a code review, and deployment, etc., have to be completed too. That means you will have additional paperwork and will also need another meeting with the development team just to discuss the changes, which might endanger the deadline (and your budget)

Before choosing a fixed-time contract you need to schedule a meeting with the development team first, during which you will discuss all of the project specifications.  These must be crystal clear to both you and the developer, so you need to plan down to the finest details. You also need to discuss all actions that the development team should take along with possible risks and pitfalls, so bear in mind that you might need several meetings just to have everything specified and accepted. Otherwise, it might be that the final product isn’t exactly what you hoped it would.

There’s also another problem that can occur with fixed-time models. That is the more complicated the project is, the higher the chance that problems will arise. Regardless, the software company is bound by the deadlines and the budget is set in the contract. In a rush to adhere to the schedule, the development team might cut corners and produce a barely usable product.

When can you safely choose a Fixed-Price contract?

  • It’s a small or medium sized project or an MVP
  • You have clearly defined your needs and expectations to the developers – and by clearly we mean you’re able to outline the user’s path step by step and you have some experience in writing user stories
  • The project requirements won’t change
  • You have no need or time to have meeting sessions with the development team 
  • There’s little risk of development problems happening so you can hand over all control to the developers
  • You have a limited budget for the project, or you need to get the project budget approved first
  • You are not interested in the time taken but in deliverables, which means that sometimes the project is finished faster but you are still charged the estimated amount

What is the Time & Material model?

The Time and Material model works on a completely different principle than the Fixed-Price model. In Time and Material, rather than pay a fixed sum right at the start, you pay the software team for the hours of work needed to finish a given project and for all of the materials they use. This type of cooperation model is useful when you cannot accurately estimate how much the project will cost or how long it will take to complete, so there’s no set price or rigid deadlines for the team. 

What are the biggest advantages of T&M contracts?

The most significant advantage of a T&M cooperation model over Fixed-Price models is that you retain much more control over the project. You can also change elements of the project when needed. If you don’t yet have a detailed vision of the product as a whole, the Time and Material model is also a great pick. 

With this type of contract, you can decide in which direction the project should go as it progresses. If there’s a sudden need to rework some parts of the project then simply add new features, or if an unexpected issue arises then the T&M model allows you to adjust the work schedule as required. The development team can also start working straight away, even if they (and perhaps you) don’t know all of the project details yet. Those can be discussed in later meeting sessions. 

How does it work in practice? The whole project is divided into smaller tasks that each have an estimated time, workforce, and cost. When you agree with the price quoted, the development team can start immediately. During the project, there will be several meetings with the team during which you can add suggestions and ask for modifications. This way, at the end of the project, you will receive a high-quality product that exactly fits your needs. 

Things you should consider before opting for a T&M contract

It all sounds great, but the main thing that might worry you here is the budget. How can you control the amount of money spent on a project without a defined price set in the contract? And if you are paying the team for the hours they spend on your project, won’t the final cost turn out to be much higher than the initial budget? 

Controlling the budget of a Time and Material cooperation model is actually much easier than you might think. Each task in the project comes with an approximate cost, so you can estimate the project cost in advance. To make controlling the budget more manageable, you will also be sent regular detailed reports about how much time the development team has been working on a given task, how many people were involved, what materials were purchased, and any other extra costs.

Controlling the progress of the project might be a bigger problem. A Fixed-Price model allows you to leave all of the work to the developers until the product is ready.

Time and Material, on the other hand, requires constant supervision of task progress, materials used, and budget spent, as well as frequent meetings with the development team. Monitoring is especially important since there’s no definite deadline in the contract, and you don’t want a six month project to turn into a year. You should also keep in mind that, unless there’s some bonus in the contract to be paid if the development team finishes ahead of schedule, there’s little incentive for them to finish the project early.  

We work on because most of the clients we are working with have problems in stating their all requirements upfront. 

When should you choose a T&M contract?

  • It’s a complicated or long-term project
  • You don’t know the full scope of the product, only a basic description
  • The requirements or needs are likely to change
  • You want to have full control over product creation and development
  • You need maximum flexibility
  • You want to pay for spent time only, as compared to a Fixed-Price model it is the most cost-effective solution for long-term projects with changing scopes

Fixed Budget/T&M with cap

If you are still worried about exceeding the budget for the project, there’s a third cooperation model we can use called Time and Material with a cap. This is the same as a regular T&M contract but with one change, which is that the contract specifies an upper limit of cost that you will not have to pay more than. If the cost of the project rises above the threshold, the development company will cover the additional outlay. This way, you can have all the benefits of a Time and Material contract without the risk of the project cost being far higher than expected.

Fixed Budget/T&M with cap is very well suited for companies that have a very dynamic change of priorities, but still need to keep control over their budget. The key difference between typical Time and Material and T&M with a cap is that Scalac takes care of budget control. Scalac monitors the costs, reports how far we are with the progress, and identifies risks if the scope of the project is not delivered in line with the provided plan. The key difference with the Fixed-Price model is the fact that Scalac allows clients to introduce changes to the scope of work dynamically and recalculates the available budget accordingly. If the budget needs to change, Scalac reports this as soon as possible and reacts on-the-fly to the client’s decisions. This model is the most collaborative and provides the greatest value to the client.

Fixed Budget projects have the same benefits as the Time & Material model, plus:

  • our Project Manager takes care of budget control 
  • they are also in charge of managing the work-load to keep all members focused and at full speed as much as possible


Both cooperation model types have their advantages and drawbacks, so each one works best for different types of projects. If you have a small project with detailed guidelines or when you are sure that no changes will be needed, a Fixed-Price contract is a good option.  You will know what the cost of the project will be in advance, and  your product will be ready on the due date. However, you need to be prepared for unexpected issues or errors arising that might either postpone the deadline, result in additional costs or leave you with an unfinished product.

For larger or long-term projects, a Time and Material contract would be a better choice. It offers flexibility and control of the product creation, while also helping you to stay within budget. There’s no precise final price or deadline date though, so you need to keep an eye on both the costs and project progress. T&M also relies on frequent contact between your team and the developers, so you’ll be spending a lot of time in meetings. 

If you are still in doubt about which project model would be best for you, we’re here to help. Contact us today and we’ll find the cooperation model that will work best for your needs.

It’s been decided: you want to relaunch your website, run a new mobile app, or simply start on a brand new business idea. In any case, you’ll need a bit of technology to support your plan. Instead of going in-house, you’ve opted to get a bit of a helping hand from a software development company. Well done – you’ve already taken the right first step towards success.

When opportunities come, questions follow too. If you’ve never collaborated with a software development company before then you may especially want to ask them about everything, or nothing at all. To make that process easier for you, we’ve created a special checklist of questions to ask a software development company.

Read more