Software Development

Showing 28-36 of 45 results
EngineeringIcon ChevronBack-end

Declarative Programming: Is It A Real Thing?

By Federico Pereiro

In a nutshell, declarative programming consists of instructing a program on what needs to be done, instead of telling it how to do it. This approach involves providing a domain-specific language (DSL) for expressing what the user wants. This DSL shields users from messy low-level constructs while still achieving the desired end-state. While declarative programming offers advantages over the imperative approach it replaces, it’s not as straightforward as it may seem. In this comprehensive article, Toptal Freelance Software Engineer Federico Pereiro outlines his experience with declarative tools and explains how you can make declarative programming work for you.

25+ minute readContinue Reading
EngineeringIcon ChevronBack-end

Introduction to Concurrent Programming: A Beginner’s Guide

By Marko Dvečko

Concurrency allows programs to deal with a lot of tasks at once. But writing concurrent programs isn't a particularly easy feat. Dealing with constructs such as threads and locks and avoiding issues like race conditions and deadlocks can be quite cumbersome, making concurrent programs difficult to write. In this article, Toptal Freelance Software Engineer Marko Dvečko gives us an overview of some concurrent programming models. He explains how each of these models gives structure to the programs we write and shows how to avoid certain concurrency issues that can come with these models.

24 minute readContinue Reading
EngineeringIcon ChevronBack-end

Eliminating the Garbage Collector: The RAII Way

By Peter Goodspeed-Niklaus

Manual memory management is a nightmare that programmers have been inventing ways to avoid since the invention of the compiler. Programming languages with garbage collectors make life easier, but at the cost of performance. In this article, Toptal engineer Peter Goodspeed-Niklaus gives us a peek into the history of garbage collectors and explains how notions of ownership and borrowing can help eliminate garbage collectors without compromising their safety guarantees.

13 minute readContinue Reading
EngineeringIcon ChevronBack-end

Creating Usable JVM Languages: An Overview

By Federico Tomassetti

Java Virtual Machine (JVM), the powerful virtual machine behind programming languages like Java and Scala, provides a platform-independent environment for executing compiled bytecode. Programming languages built for the JVM can be used to write programs that can run on a wide range of platforms without modification and can even leverage all the libraries and frameworks that exist for the JVM. In this article, Toptal engineer Federico Tomassetti presents an overview of the strategy and various tools involved in creating our very own programming language for the JVM.

9 minute readContinue Reading
EngineeringIcon ChevronBack-end

Guide to Multi-processing Network Server Models

By Ivan Voras, PhD

In this article, Toptal engineer Ivan Voras provides a useful overview and comparison of multi-processing network server models, with the goal being to take some of the mystery out of writing high performance networking code. The article is intended for "system programmers", i.e., back-end developers who will work with the low-level details of their applications, implementing network server code.

9 minute readContinue Reading
EngineeringIcon ChevronBack-end

Single Responsibility Principle: A Recipe for Great Code

By Adel Fayzrakhmanov

Maintainable code is something we all desire and there are no shortage of coding principles that promise it. It is not always apparent how tremendously useful these principles are during the early stages of development. Nonetheless, the effort put in to ensure these qualities certainly pay off as the project grows and development continues. In this article, Toptal engineer Adel Fayzrakhmanov discusses how the Single Responsibility Principle is one of the most important aspect in writing good maintainable code.

9 minute readContinue Reading
EngineeringIcon ChevronBack-end

Hosting for Freelance Developers: PaaS, VPS, Cloud, and More

By Nermin Hajdarbegovic

Whether you’re creating a virtual storefront, deploying an app, or simply doing some third-party testing and development, chances are you need some server muscle. The good news is that there is _a lot_ to choose from. The hosting industry may not be loud or exciting, but it never sleeps; it’s a dog eat dog world, with cutthroat pricing, a lot of innovation behind the scenes, and cyclical hardware updates. In this article, we take a look at hosting options for freelance software engineers: PaaS, Cloud, VPS, dedicated, and more.

11 minute readContinue Reading
EngineeringIcon ChevronMobile

Slow Android Wear Adoption Is Stifling Development

By Nermin Hajdarbegovic

Several factors conspired to stifle Android Wear growth, ranging from lack of Google development, to inadequate hardware. Some of these problems have been addressed, some are being addressed, while others cannot be addressed with currently available technology.

11 minute readContinue Reading
EngineeringIcon ChevronTechnology

Software Costs Estimation in Agile Project Management

By Toptal Talent Network Experts

One of the hardest things to do in software development is to determine how long and how much it will take to deliver a new software product. Should it be so hard? The answer is not straightforward.

19 minute readContinue Reading

Join the Toptal® community.