How we work

We understand that only true cooperation will result in working software satisfying your needs. We build digital products based on domain-driven design method.

Transparency is our priority – you see what we do, then you give feedback, update goals, and change directions to meet your project’s needs.

Product cycle

  • Your idea
  • Backlog
  • Coding & Testing
  • Demo
  • Ship it
  • Great product

Communication cycle

  • You & our team
  • Communication rules
  • Ongoing interactions
  • Feedback and final acceptance
  • Ongoing monitoring
  • Good deal

We know who needs to join the team at which stage and free you up from doing estimates

  • Dedicated Team

    Time and material contract
    Transparent workflow
    Need NDA? not a problem
    End-to-end delivery

    Tell me more!
  • Team Extension

    Quickly adapting to your team’s needs and standards
    Great communication skills
    Sharing knowledge and expertise

    Tell me more!

Company

Team

Process

Quality & Security

Technology

  • How does SoftwareMill’s mission support my project success?

    Our mission is divided into 3 parts and each one of them is dedicated to a different aspect of our organisation that is very important to us:

    • Clients - proactively transforming your business with technology.
    • Team - embracing individuality to build a collective tech mindset.
    • Tech Community - inspiring and guiding with true engineering.

    All of those combined emphasise who we want to be as a software agency. And that is a team of tech experts sharing our knowledge with others and using it to bring real business value to our clients through software.

  • What can you help me with?

    We distinguish 6 main services of ours:

    Tech partner for digital product development
    Custom software designed for a specific set of business needs. We speak your language and understand your domain. We can help you evolve your existing applications using Domain Driven Design methods and techniques.

    Software Architecture Consulting
    Designing robust, high-quality, and secure software solutions is complex and requires up-to-date knowledge on changing technologies, frameworks, and tools. Our engineers are experts with hands-on experience in implementing different software architectures and design patterns. Here is the process of how we work together with clients to build modular, scalable, maintainable, and testable software solutions that enhance digital operations and drive growth. You’ll get a detailed recommendation of your tech stack based on your project requirements and constraints, and any other consulting work you’ll request!

    Project rescue
    Project in trouble? Reset your course of software development and overcome any difficulties in your core systems. We will assist you with identifying the problem, gathering information, and recommending solutions to your project in need. You’ll receive a turnaround plan and consultation to help you implement it.

    Cloud Modernization
    Migrate and modernise your business applications with us by transitioning from legacy monoliths to microservices-based cloud applications seamlessly. Using tools like Kubernetes, Helm, Terraform, AWS, GCP, or Azure, our developers will test and validate different migration strategies with the aim of minimising service disruptions down to minutes, improving availability, resilience, and scalability of the system.

    DevOps as a Service
    Do you lack internal DevOps expertise or the budget to obtain or train employees with those skills? Our vetted DevOps talent will ensure that your business achieves desired outcomes and successfully follows strategies of continuous delivery (CD) and continuous integration (CI) to deliver business value.

    Machine Learning
    We approach ML projects holistically, using a blend of science & tech. Mixing our scientific backgrounds, engineering expertise, and a generous pinch of business approach, we're able to build solutions that are usable, scalable, and profitable. We're diving deep into business problems to match it with the right tech and bring tangible results. See more on ReasonField Lab, SoftwareMill-founded machine learning company.

    Need anything else? You can always reach out to us at hello@softwaremill.com and discuss the best possible solution in your specific case!

  • What distinguishes you from other software development agencies?

    We will become your tech partner, putting your business success and growth in the centre of our efforts. We go beyond resolving tasks, taking an active role in shaping your company's technical core. We can do that as we have many years of experience in custom software development (for example, in Scala), hiring exquisite people with a CEO’s mindset.

    The whole SoftwareMill is technology-centred, keeping up to date with all the software development novelties, constantly growing our range of services (as another example, we’re a Confluent Plus Partner) to deliver products fulfilling both your technological and business strategic goals.

    Clients entrust us with responsibility for the technology side of their business, their software development teams read our technology blog and Scala Times newsletter, watch our tech talks, and use open source software that we create to build tools for the IT community.

  • Who are your founders?

    Back in 2009, our CEO Tomasz, CTO Adam, and Agile Coach Paweł (now SoftwareMill alumnus) were working together on a software project for a company from the US. They knew remote work is efficient and they liked the freedom and work-life balance it gives. They wanted to start their own software agency.

    The only thing that was missing was a diverse business perspective, so they invited Jan, (Tomasz's brother-in-law) to join the Founders Board. All of the Founders were experienced remote workers, so starting a remote-first company was a no-brainer.

    Tomasz Szymanski - former Software Engineer, currently our company CEO. As the SoftwareMill leader, he is guided by values like transparency and empowerment. Since 2020, he holds an EMBA title and constantly broadens his expertise as a teal organisation evangelist and a partner to all of the people he encounters on his professional path.

    Adam Warski - a Software Development Expert with over 15 years of development experience, building and growing our technical team as the company CRDO. Following traditional engineering values, his goal is on one hand to inspire the community, and on the other to proactively transform the businesses of our Clients with technology. An active OSS creator and contributor, Scala expert, and frequent tech conferences Speaker.

    Jan Zborowski - a dedicated Business Development Manager, focused on delivering the best technological solutions to our clients. Software Development Association Poland vice president, engaged both in creating new strategies and constantly analysing the market to deliver a true business value. He is the connector between the IT world and the non-IT surroundings.

  • How do you operate as an organisation?

    We operate in a holacracy-like structure. We chose it because helping our team members rapidly grow both in terms of technology and soft skills is our number one priority! Our distributed and self-organised teams embrace the feeling of personal responsibility for our clients success, as everyone's voice is equally valued. Instead of delegating tasks, we delegate responsibility. Mutual trust gives everyone a sense of purpose and keeps us together.

    You can read more about how we operate here.

  • What makes you extra qualified to run software projects remotely?

    We have credentials in the area of remote work and distributed software project development. At the same time, we help our clients with transitioning to the remote model by sharing our experience.

    For us, remote work is as natural as breathing. We've been operating that way since the company's very beginnings in 2009, building our whole company culture around the remote-first approach. That’s why our cooperation with clients goes so smoothly! Here you can discover our lessons learned when managing remote software development projects.

    We know that communicating a bit too much is much better than under-communicating. We update our clients regularly on Slack, Jira, or via email, to let them know that their projects are taken care of - even if we’re not physically in an office together. We’ve learned a lot about remote work throughout the last 13 years and we are eager to share it with you and your team! If you want to know even more - download our ebook about our Remote Software Development philosophy here.

  • How long do you typically cooperate with one client?

    We’re mostly focused on long term projects as we’re specialised in complex systems and software - and those usually require some time to dig into. For example, with one of our clients, IntelliSMS, we’ve been working on-and-off for 11 years already! One of the things that makes us most proud is that so many of our clients come back to us with their next projects. This means that we’ve built a level of trust between us allowing us to take the technical ownership of their new, exciting idea!

  • Why us?

    To provide tangible business value, we do much more than develop bullet-proof software and write code. We anticipate common challenges and provide solutions in the form of open-source solutions, technical content, and architectural patterns. When working with clients, we excel at creating a mutual business relationship. Understanding the big picture allows us to give honest feedback and assist you in improving your business processes.

    Not only do we practise and learn constantly, but we also teach, create, and contribute. We put ourselves into the community: empowering individuals who want to lead by example and encouraging technical diversity. We are your engineers’ first choice and your tech partner for digital transformation. Everything we learn usually lands on our tech blog. The topics we cover there are those most relevant to the current software engineering world. We’ve already heard numerous times that other companies' developers, from all around the world, read it on a regular basis. This is the result of investing so much in our developers' growth - they are very experienced when it comes to crafting software and it’s really worth having them on your project team!

    Being a remote-only company from day one, we have proven remote plays to organise and accelerate your team’s work.

  • Who should I contact for more details?

    We have an experienced team of Account Managers, who will guide your project in the right direction. Here you can read what happens after you contact us, and then make the first step towards starting cooperation with us. All you need to do is to fill in the form here!

  • Who is in the team?

    What’s exceptional about SoftwareMill is that we have lots of recognised industry experts on board, people who are characterised by an exceptional passion for software craftsmanship.

    Need proof? Simply check a few of them:

    • Adam, our CRDO, Scala expert and OSS maintainer,
    • Michał, CTO at SoftwareMill, Architect, Team Lead,
    • Magda, experienced Scala/Java developer, successful conference speaker, and quality feedback advocate,
    • Jacek, Scala and Functional Programming tutor at SoftwareMill Academy, eagerly shares his development expertise at various tech conferences & meetups.

    The list could go on and on, but what you need to know is that no matter who specifically is going to work on your project, they will have access to our collective tech mindset. This means that the skillset of our software engineers is so diversified and extensive that in most cases, our teammates can find the help they need inside our organisation. This wouldn’t be possible if our developers weren’t constantly updating and extending their knowledge, completing certificates, attending tech conferences, writing for our tech blog, joining tech reading clubs, and so much more!

    Our whole team is visible on our website, so you can always check by yourself what kind of competencies our colleagues have. Additionally, you will have a dedicated Account Manager assigned to answer all of your questions - we value transparency highly, so feel free to ask whatever you want!

  • How does your team extend their skillset?

    Joining the SoftwareMill team means gaining access to lots of internal development initiatives! In 2021 alone, we:

    • attended 37 conferences & meetups - 22 times as speakers (among the most interesting ones were Devoxx Poland, Build Stuff in Vilnius, ScalaCON, Scala Love in the City),
    • run 4 Tech Reading Clubs (covering books “Design it”, “Implementing Domain-Driven Design”, “Streaming Data”, and “Kubernetes Operators”),
    • organised 10 Friday Markets (live presentations done by our team), on topics like “What’s new in Cats Effects 3”, “About the DGraph Database” or “MSK - Managed Kafka Cluster on AWS”,
    • read 7 books within our Soft Skills Reading Club initiative (among them were titles like “Never Split the Difference”, “Essentialism”, or “Peopleware”).

    As you can see, there is a lot going on inside our company! Thanks to the holacracy-inspired approach, the majority of those self-development initiatives happen bottom-up: they’re proposed by our teammates and conducted with the support of the whole organisation. When our software developers see that some kind of certificate or course would help them make an even better job for our client - they simply go and get it! And then they will be happy to share their knowledge with your developers as well.

  • How do you assess your developers' technical expertise?

    Our hiring process is very well thought-through and demanding as we focus on multiple aspects that make someone a great software engineer. Besides evaluating their technical expertise (which obviously is very important and our technical interview & assessment, regularly updated by our Senior Developers, address it extensively), we check the person's soft skills and the general ability to think and act as a trustworthy technical partner to our clients.

    You can read more about how we evaluate our engineers during an interview here. We conduct an extensive professional experience evaluation, dedicating time to examine their GitHub portfolio, check for certificates, and ask how they want to develop in the future.

    When it comes to our current team members, we regularly monitor their progress, making sure that their knowledge is still relevant and constantly expanding. We ask their teammates how they assess their technical expertise and we send questionnaires to our clients, where they can share how satisfied they are with their work. Thanks to those actions, we’re making sure that they will stand up to the challenge in our partners' projects really well!

  • What distinguishes your developers from the others?

    The best way to answer this question is to give voice to our clients. And the qualities they most often use, when describing our developers are proactivity and engagement. In their Clutch.co reviews, they praise how fast our engineers have blended into their company, understanding their business core and becoming a very valuable asset, driving the whole company in the right direction. They also mention their exceptional work ethic, good, or often fluent, communication in English, and openness to share their knowledge and experience with others.

    This is the result of an element of our mission - embracing individuality to build a collective tech mindset. Each of our developers is an independent, self-aware professional, perfectly capable of coming up with new solutions and feeling personal ownership over our clients' success. So since the very beginning of your cooperation with our engineers, you'll feel that you have found a team ready to use their technical expertise to serve your business goals!

  • What do you do to minimise employee turnover?

    Our brand is very recognisable in the Polish software market. We’re known as remote work advocates (we’ve never had an office), acknowledged public speakers, and experienced mentors, ensuring our team members the opportunities for growth that are rarely seen in other tech companies. To minimise team turnover, we organise lots of company integrations and joint activities and we nurture our exceptional culture of individualism by adjusting all of the company procedures to our own needs.

    That’s why lots of our engineers feel the motivation to stay with us because they gain a lot from being one of the SoftwareMillers in so many ways! We understand that our engineers are our biggest asset, so we take care of them by creating clear career paths, keeping them up-to-date with all of the company's data, and doing everything to provide them with projects in which they can truly thrive and feel satisfied with their work.

  • What kind of competencies do you have inside your team?

    Our core expertise includes:

    • Programming languages: Scala, Java, Python, TypeScript, JavaScript
    • Databases: PostgreSQL, MySQL, Cassandra, MongoDB
    • Data processing: Apache Kafka, Apache Spark, Apache Flink, Akka Streams
    • Application frameworks: Akka, Spring, Monix, React, Angular, JQuery, Node.js
    • DevOps: Kubernetes, Docker, AWS, GCP, Grafana, Terraform, Prometheus, Zookeeper
    • Machine Learning: Tensor Flow, OpenCV, PyCharm, Pandas, Scikit-learn
    • The list is quite dynamic, as we often have to learn new things, so if something of your interest isn’t on the list, contact us and we’ll let you know what our experience in that area is.

    Besides technical competencies, we also worked our way through to high domain expertise. The industries we specialise in most are finance, telecommunications, healthcare, eCommerce, and education. If you’re looking for specific competencies for your project, the best way is to simply reach out to us so we could ask about them inside our team.

  • Can I check who exactly from your team will be working on my project?

    Yes, you can - simply visit the Team page on our website. There, you will find everyone currently working at SoftwareMill. The majority of our teammates run active social media profiles (Twitter, LinkedIn) and have their portfolios visible on GitHub, so feel free to check them out!

  • How can I start working with your team?

    The first point of contact is always our Account Management team who assign clients to specific engineers. So if you want to reach our development team, simply fill in the contact form or send an email to hello@softwaremill.com.

    What’s unique about us is that each of the queries sent through those ways land in a joint inbox visible to the whole company. So in the spirit of transparency, our developers can examine what kind of projects we receive and pick the one that they feel most passionate about. Thanks to this approach, we have both satisfied engineers who work on projects they’ve personally chosen and happy clients because they received someone who is a match both in terms of skills and personal motivation. Sounds like a win-win situation!

  • What do I need to know before contacting you?

    It’s great if your idea is at least well-described, but we’re able to provide you with guidance and technical assistance at any phase of the development process. Our engineers join projects at various stages: from idea incubation to extending a team working on a launched product. If all you have is an idea, we will help you crystallise it and make it happen. When first contacting us, please let us know how advanced the works on your product are and what support you expect.

  • How do you communicate during the project?

    We value open and honest communication, so we make sure that good communication standards are always maintained. Our clients work directly with our engineering team, so we don’t play chinese whispers, but there’s also an account manager who will be there if you need any extra help.

    We communicate on Slack in our daily work, and participate in our clients’ project management practices, e.g. take part in daily Scrum meetings, planning sessions, etc. We plan our work in chunks and prepare demo meetings to present progress regularly.

  • What tools do you use in your development process?

    The exact toolset is case-specific and adjusted to the needs of a given project, but as a rule, for technical stuff, we use Git, GitHub, Stash, IntelliJ IDEA, Jenkins, Visual Studio Code.

    To hone collaboration, we use Jira for backlog management, Google Meet or Zoom for video calls, Slack for instant communication, and we share all relevant files via Google Drive.

  • How can I track progress of my project?

    Our work is organised in Jira, which we update on a regular basis. It’s our goal to make our engineers integrate smoothly with your team, which also means that you can contact them on Slack whenever it’s needed and they join all the meetings that require their presence. Additionally, our business development specialists provide you with support in any project-related issues, will check in on the project regularly, and be in touch with you to keep everything on the right track.

  • What happens if I change my mind about the way my product should work?

    We approach our projects in an Agile way, so there is always room for improvement, change, or even a privot if necessary. Whenever changes need to be implemented, we discuss them with our clients to contribute to choosing the optimal solution. Our engineers are proactive and committed to finding the best ways around for the tasks they’re working on. They can suggest solutions or improvements if applicable

  • What steps do you take to make sure that my project will go according to the plan?

    We know that it’s essential to set the right foundation for the project, so we make sure that we start off the right foot. At the beginning of cooperation with our clients, we hold project scoping sessions or workshops that help us thoroughly discuss requirements, objectives, limitations, doubts, and set a project roadmap.

    We follow Agile principles to allow for flexibility, which is an important part of software projects. When applicable, we create a PoC (Proof of Concept) before going into a full-blown project to validate the idea first and mitigate financial risks for our clients.

  • How do you estimate and track time?

    Our estimates are provided by engineers who can best assess how much workload will be required in a given project. The estimates are made in mandays. We also summarise the time spent on the project in mandays.

  • In case of any changes inside your development team, how will you maintain my project continuity?

    If any changes happen on our side, it’s our responsibility to find the right people for the job and make the transition smooth. We have a team of people working on our open source projects that can join external projects if their expertise will be of value. Our engineers introduce new team members to the project to help them kick off their work easier and faster.

  • Will you share your expertise with my team members?

    Of course! Knowledge sharing is one of our essential values and we believe in growing through the exchange of knowledge. We always share insights and lessons learned with our clients’ team members. Additionally, we offer consulting and workshops, conduct SoftwareMill Academy trainings, and our senior engineers can take on the role of a tech lead in your project if that’s something you need.

  • How do you track clients' satisfaction?

    First and foremost, we check in on our clients regularly. Our developers are in constant touch with their teams on Slack and our business development team contacts the clients to chat about how the project’s going. We also conduct surveys that assess our work and our engineers’ performance.

    We’re proud of the amazing reviews that our Clients leave us on Clutch, and since they often come back to us with new projects, we’re guessing we’re doing it right ;)

  • How do you foster business relationships with clients?

    Being a self-organising team that draws from the values of holacracy, we’re skilled all-round, meaning that we all share a business mindset, though naturally have various levels of business knowledge. It’s a team effort to build and foster a relationship with a client, so we all contribute. Transparency is our essential value that helps us build valuable relations with our clients.

  • Do you visit your clients?

    We do! We are a 100% remote team, but that doesn’t mean we don’t appreciate the value of meeting in real life. We visit our clients in their HQs whenever possible to work together with their teams, hold brainstorming sessions, and just get to know each other better. In our experience, collaboration is even more efficient when we’ve had a chance to meet in person and learn what we’re like in everyday life.

  • How much does custom software development cost?

    We work in the time and material model, so the cost of software development depends on various factors: how long the project will last, what roles are required, how many engineers will participate in the project. Before the project begins, we estimate the work required in the project taking into account the team composition and workload. During our cooperation, we summarise the work on a monthly basis and our clients are charged for the actual number of mandays our team spent on the project.

  • What are the common challenges you work on in your projects?

    Some of the common challenges we face include performance issues that clients come across when their businesses are growing and their systems can't handle that increase; the lack of tests - which is a major issue as it impedes making changes in the code. Additionally, it's common that we work with non-maintainable code; in such a case, adding new features can eat up much more work and time than intended. We're prepared for many challenging scenarios and even have a service line addressing problematic software projects - Project Rescue.

  • How do you deal with different time zones?

    We’re very flexible - though our engineers work with us full-time, it’s not a 9-5 job. When there is a time zone difference, we always look for time slots that will be manageable for both the client’s team and us to hold all important meetings and discuss any challenges. We’re also in touch on Slack, and since our team members work at different times of the day, there are no big delays in communication.

  • I have an idea, how shall I proceed?

    Contact us! An idea is already the right place to start - from there, we’ll discuss your goals, needs, requirements, obstacles. We will find the best people on our team to help you with the idea. We provide end-to-end support, so you can count on our guidance and expertise and any stage of product development.

  • How do you assure software is of high quality?

    Our process of software quality assurance focuses on testing, reviewing, and code design inspection. We follow clean code principles so that the code written by our developers can be read by other developers, understood, and easily extended. We practice code reviews - this way, we reduce overhead costs, minimise project failures and remove uncertainties, as well as grow as individual developers.

    Bug-free and semantically correct code is very important, thus, we cover every piece of system functionality developed by us by low-level, automated (unit) tests. Apart from that, we maintain a set of high-level "acceptance" tests that verify whether a product works properly from the client’s perspective. In fact, these tests are automated as well in order to get rapid feedback after any changes in the code. For example, this can be done by simulating "clicking" through your web application.

    Through the development process, we aim to ensure a clean separation of functionality in our code with high cohesion and low coupling. At every stage of our cooperation, we identify what quality attributes are important so the software architecture designed for you is easy to modify or extend as your business needs change.

  • How can I check for myself that your software quality is high?

    We care about the quality of how we produce software. As software craftsmen, we are raising the bar of professional software development and always strive to design solutions that solve real-life problems and serve our clients best.

    There is no better way of learning about the results of our work than listening first-hand to our clients. We have a number of clients who are glad to provide feedback on our collaboration. Please, view the reliable reference interviews from Clutch where you can read about the scope of work, and general feedback on our engagement. Also, if you’d want to speak directly with one of our clients, let us know, we will make an introduction.

  • How do you handle a project's intellectual property?

    First of all, we understand that our client’s business is their business and we appreciate and value that they let us in to learn about the details of their processes. To get a better picture, we might need some sensitive information. In such cases, we sign a Non-Disclosure Agreement (NDA).

    Moreover, our insurance for nearly 2 mln USD covers cyber and privacy liability. We follow our Privacy Policy, which includes the GDPR requirements. All Intellectual Property Rights are contractually guaranteed to be transferred to the client once an invoice is paid.

  • What do you do to preserve your clients from vendor lock-in?

    The answer is simple: you won’t be locked-in. We build software using popular open-source frameworks and libraries, resulting in digital systems that are future-proof. We follow principles on delivery that make releases and development high-level and fully transparent for you.

    We write code and documentation so that another team - either from our company or from a different one - can continue its development in the future. It happened a number of times that we had to revisit code that we wrote a couple of years back to add some new functionality!

  • What steps do you take to ensure my code’s safety?

    We are very careful about the people who join our team. These are experienced engineers with a proven work record. Everybody is contractually obliged to follow our internal security policy, which covers, among others:

    • regular software updates,
    • encrypting all hard drives and mobile devices used for development,
    • requirement to use 2-factor authentication when possible,
    • requirement to always lock the computer when leaving it unattended,
    • following the principle of least access: you should only have access to the things you really need,
    • using selected and trusted SaaS platforms such as GitHub, Confluence, Google Workspace.

    The other side of security is writing applications that are secure themselves. Our software developers are taking it into account and building it into their programs from the very beginning of each project. Let the fact that we’ve never experienced a software leak or a security breach speak for itself.

  • How do you make sure that my software will work smoothly even after our cooperation has ended?

    Our recipe for a successful software project delivery includes access to the know-how, high commitment to the project, and common goals for all parties involved. Apart from always making sure that our code is well documented and communication in the remote software project is of high quality, we know that to provide you with tangible value, we need to do much more beyond just developing bullet-proof solutions.

    Here you can read more about a strategic approach to knowledge transfer in IT projects done with SoftwareMill. We make sure our developers share their knowledge with your team on a daily basis so there are no grey spots or any hidden work. Every time we develop a new functionality, there is time to suggest amendments or give us the green light to the progress made. After this, with a clear head, we focus on what the whole cooperation is about: providing business value!

    Even when our cooperation ends, you’re always welcome to come back and resolve any issues that might arise see the question about lifetime code warranty.

  • Are you willing to adjust to my organisation's security measures?

    Yes, of course. When we join your team, we follow your rules and if required, we can take part in your security training. We are experienced in developing software for many fintech software development companies who have high security standards.

  • How long does it take to start a project with you?

    After you send us your inquiry, we can assure you that you will receive a response from us within 24 hours (besides weekends & public holidays). We are a transparent and self-organised company and we keep all of our inquiries open to the whole team: everyone at SoftwareMill can read them, including developers. Thanks to that approach, we can quickly sign an NDA and set up a call to discover your requirements. If you wish, we can also meet in person, preferably in Warsaw, but we can also establish that together.
    Here you can read more about what happens when you contact us and explore steps like:

    • initial strategy meeting,
    • technical meeting with developers,
    • assembling your software development team,
    • and project kick-off.

  • How fast can you scale up your team working on my project?

    How fast we can scale depends on our software engineers’ availability. When we start working on your project, you’ll be assigned a dedicated business representative that will take care of all your needs during our cooperation.

    No matter if you are a big, scale-up, or medium company, you will get excellent customer service as everyone else! What’s more important to us than your business size, the industry you’re operating in, etc, is your idea’s potential. We know that every software development project starts small before it becomes huge.

  • Who shall I contact for more details?

    Fill in this contact form or write to us at hello@softwaremill.com to reach out straight to our Business Development Team. If you are a highly technical person and want to get straight to the development stuff at the very first meeting (we don’t recommend that approach but can adjust to your needs) let us know, we’re all set to meet your expectations.

  • What technologies do you specialise in?

    Our core expertise includes:

    • Programming languages: Scala, Java, Python, Typescript, Javascript, Kotlin, Rust
    • Databases: PostgreSQL, MySQL, Cassandra, MongoDB
    • Data processing: Apache Kafka, Apache Spark, Apache Flink, Akka Streams
    • Application frameworks: Akka, Spring, Monix, React, Angular, JQuery, Node.js
    • DevOps: Kubernetes, Docker, AWS, GCP, Grafana, Terraform, Prometheus, Zookeeper
    • Machine Learning: Tensor Flow, PyTorch, HuggingFace, OpenCV, Pandas, Scikit-learn

    The list is quite dynamic, as we often have to learn new things, so if something of your interest isn’t on the list, contact us and we’ll let you know what our experience in that area is.

  • What is the typical tech stack you are using?

    When making technical decisions, we are choosing technologies, frameworks, programming languages, and other development tools that are a good match to solve a given problem. These decisions have a high impact and can go a long way in making your life easier or miserable in the future, so there is no recommendation of a silver bullet solution when it comes to tech stack. We always focus on a problem to be solved and choose our tools based on that.

  • How will you choose the right tech stack for my project?

    Our engineers take several factors into consideration when choosing the perfect technologies for your project.

    • our hands-on development experience with specific software frameworks, tools, and software architecture and design concepts,
    • our experience in solving edge-cases and knowledge of given technologies and tools,
    • the popularity of different IT technologies and their costs,
    • the size of various tech communities around given technologies: the bigger the community, the more support and up to date maintenance you can expect
    • the commercial support offered by software libraries, tool creators and maintainers.
      Here you can read more about nuances of choosing the right tech stack for your project.

  • Why Scala?

    Scala is our language of choice. Adam Warski, our CTO explained it well once: Scala is especially well suited for certain problem domains (but not all!). The biggest strength of Scala is its flexibility in defining abstractions. There’s a number of basic building blocks at our disposal; sometimes defining an abstraction is as simple as using a class, methods, and lambdas; sometimes an implicit parameter has to be used, or an extension method; in rare cases, there’s a need to resort to a macro. However, the options are there.

    Hence, Scala works great when there’s a need to navigate a complex domain. Distributed and concurrent programming is one example. Parallelism is very tricky to get right and Scala offers a number of libraries that make this task easier by building abstractions. There are two main approaches: an actor-based, represented by Akka, and an FP-based one, represented by Monix/cats-effect and Scalaz/ZIO (if you’d like to read more about how these compare, our CTO’s written a series of articles on this subject).

    But of course that’s not the only possible domain. Modelling typical business applications can also be taken to another level, using the available Scala features. Here, however, the complexity is of a different kind. With distributed systems, the complexity was technical. With business applications, the complexity is in the problem domain itself. Find out more in this video.

    Discover Scala.page
    Download Scala 3 Tech Report

  • Why Java?

    Java is one of the most popular programming languages out there, and the JVM is one of the most heavily optimised and battle-proven runtimes. Java might be a pragmatic choice; often our clients have existing Java teams and projects, where we help to develop a particular challenging functionality or introduce a new component.

    Moreover, Java has a vibrant and open community, meaning that for a particular problem, chances are high that there’s a Java library or framework that helps to solve it.

    The above makes Java a great choice for large-scale enterprise software development, including back-end, Machine Learning, and Big Data projects, which we specialise in.

  • Why Kotlin?

    Kotlin helps developers work more efficiently with its clear and simple syntax. It reduces unnecessary code, speeding up the development process. Kotlin's built-in features, like null safety and immutability, help create reliable and less error-prone code, making it a great choice for strong backend systems.

    Kotlin works well with Java, allowing teams to adopt it gradually without having to rewrite everything. This makes it a good option for updating existing Java projects. Its powerful features make Kotlin suitable for handling complex tasks while supporting both object-oriented and functional programming.

    Many large companies, such as Revolut, Zalando, and Amazon, are choosing Kotlin for backend development. It combines productivity, safety, and JVM compatibility, making it easier to create scalable and maintainable systems.

  • Why Typescript?

    We see static typing as a great tool to make our work more efficient and eliminate a whole class of potential bugs. For some domains, such as frontend, but also in same cases on the backend, using the JavaScript runtime is a requirement; in such cases, our language of choice is TypeScript, which combines the flexibility and universality of JavaScript with the power of static typing.

    Our Senior Software Developer, Marcin Baraniecki has been an advocate for the use of TypeScript in multiple open-source & commercial projects, having an overwhelmingly positive experience from his use of the language. Here you can read his story.

  • Are you actively maintaining OSS?

    We are involved in many open source initiatives, not only because it feels appropriate to contribute to the open source community, which we heavily rely on in our day-to-day work. It’s also a great learning opportunity, but in the end, it also fills the niches where we have found insufficient investment. “Scratching your own itch” as they call it. Quite a few are related to the Scala language and functional programming as these are our favourite tools. We primarily contribute to our own projects and collaborate on existing ones, but also donate to some — take a look at our open-source showpage.

    A second major reason why OSS matters to us so much is that we are committed to building a “Simple Scala Stack” — a step toward a better Scala ecosystem that could use simpler or better thought-through APIs. Therefore, we’ve created tapir and sttp libraries which are widely known and used by the community.

  • Who should I contact regarding my tech needs?

    Fill in this contact form or write to us at hello@softwaremill.com and let us know you want to get straight to discussing technical details at the very first meeting (we don’t recommend that approach but can adjust to your needs). We’re all set to meet your expectations. You’ll meet with our software engineers when discussing your project needs.

  • Can I meet your software engineers before I commit?

    Yes, of course.

  • Would your software engineers be involved in my buying process?

    Yes. Before we send you an official proposal, you’ll meet with our developers during a technical call. To find the most suitable candidate to dive into your project needs, we check our teammates’ previous experience, the feedback that they got from their teammates/previous clients, and technological compatibility.

  • Can I contact my tech team with you?

    Yes, you’re welcome to bring your developers on the technical call.

    Plus, we are always eager to talk about programming and the software world. You can approach us via hello@softwaremill.com, write to us on Slack AMA, or simply say hi on various IT events we actively participate in.