In this article, Toptal Freelance Software Engineer Konrad Gadzinowski dissects trunk-based development and Git flow, listing the pros and cons for various use cases.Continue reading →
Complex, tightly-coupled, and fragile interdependent code. We’ve all written it. The kind of code where fixing one bug creates seven more. Have you ever wondered how to create independent modular code?
In this article, Toptal Freelance Software Engineer Konrad Gadzinowski walks us through the different types of architectural paradigms you can adhere to and how to write modular and decoupled code where changes to one module have minimal impact on the overall application.Continue reading →
In this article, Toptal Freelance Developer Adam Wasserman explains what software entropy is, what causes it and how it manifests itself, and what can be done to prevent it or mitigate its effects.Continue reading →
This article will help you identify and address various communication issues that can plague off-site professionals. Whether you’re a full-stack developer, a UI designer, or a content creator, these easy to memorize tips will help you hone your communication skills.Continue reading →
Premature optimization hurts experts and novices alike. How can you know when and how to optimize without shooting your project in the foot?
This week, Toptal Freelance Software Engineer Kevin Bloch walks project managers through some time-tested optimization strategies and when to use them.Continue reading →
Optimization sounds ideal. Ironically, the very aspect of our code we are trying to optimize can be sabotaged by this process, taking out innocent bystanders along the way. Is it a perfectionists’ goldmine…or minefield? In this article, Toptal Freelance Software Engineer Kevin Bloch offers a more balanced approach to the art and science of optimization.Continue reading →
While working at different stages of the software development lifecycle you often realize that software production isn’t easy. It takes consistent effort to make something great. However, it doesn’t have to come at the cost of working through nights or weekends.
In this article, Toptal Freelance Software Engineer Timofey Nevolin shares eight simple, yet powerful rules for effective software production.Continue reading →
Learn how, with the right remote worker security policy, distributed teams can be just as secure as in-house teams.
Toptal Freelance Software Engineer and full-time remote worker Amin Shah Gilani walks us through common security attack methods, cyber defense strategies, and, finally, an example of a good remote worker security policy.Continue reading →
Deploying new features with Salesforce can be problematic in more ways than one. It is crucial to have a sound strategy governing the publication of new releases, without running the risk of breaking your product.
In this post, Toptal Software Engineer Ajinkya Deshmukh will provide you with all relevant information and key tips that will allow you to manage your next Salesforce release smoothly.Continue reading →
Could you be using Git more efficiently?
The answer is probably a resounding “Yes,” which is why Toptal Software Engineer Ursula Clarke wrote today’s post.
In it, she teaches you how to use git stash, git reset, git bisect, git squash, and git rebase for maximum productivity.Continue reading →
While the success of your project depends on many factors, one of the most common reasons projects fail is a lack of management or downright bad project management.
In this post, Lead Engineering Editor Demir Selmanovic teaches you the basics of Agile project management using Kanban and Trello.Continue reading →
Freelancers work flexible hours, but this convenience comes at a price: They have to manage their time better than on-site professionals. However, it also means they’re free to optimize their routine and achieve exceptional efficiency.
In this post, software engineer Dmitry Ryazantsev will guide you through the ins and outs of personal time management, leaving little to chance. What good are great rates if you waste hours each week?Continue reading →
If you’re a veteran frontender, you’ve probably had some not-so-great experiences with designers, and chances are some designers have had an equally bad experience working with you. How can you make sure you get exactly what you need from your designer, without placing an undue burden on them?
It’s a tall order, but in this article Freelance Software Engineer Vedran Aberle Tokic outlines and addresses a number of potential issues that may become roadblocks for your execution. Implementing these suggestions may result in overhead for designers, but they can save enormous amounts of time and headache elsewhere.Continue reading →
How do you define good code? Is it 100% test coverage, or is it backwards compatibility with decade-old hardware? We may not be able to reach an end to this debate yet, but good software always seems to conform to a few certain qualities of code.
In this article, Toptal Freelance Software Engineer Zachary Goldberg walks us through six simple ideas that can help you make better, more maintainable software.Continue reading →
What’s the biggest problem with crowdfunding today? Everyone wants a sweet slice of the crowdfunded pie, but nobody wants a single crumb of responsibility. As a result, crowdfunding platforms, the tech press, and the geek public have picked up a track record filled with spectacular crowdfunding failures.
In this article, Toptal Technical Editor Nermin Hajdarbegovic takes a look at the state of crowdfunding today and explains why the industry needs to do more to clean up its act and get rid of bad apples in crowdfunding.Continue reading →
Many product owners don’t have a technical background and thus often find themselves unprepared and scrambling when it comes time to bring on a new development team. This often results in hindered progress, wasted time, and frustration for everyone involved. If this sounds like it could be you, either now or in the future, then you should be somewhat concerned.
In this blog post, Toptal Freelance Software Engineer Carlos Ramirez III will walk you through the various steps of a typical transition process in project management so you can prepare for this eventuality and make the transition as smooth as possible.Continue reading →
Synchronizing productivity for interdependent team tasks can be a hassle even in the best traditional workplace environments. Add in the inherent challenges of a remote team, and the hassle becomes two-fold. But it doesn’t have to be.
Toptal’s Technical Editor Kate Scheer takes us along on her journey to inspire timely content from her remote authors, and her communication recommendations cross into other realms of remote work.Continue reading →
For every tech project or business, there’s inevitably the “client” and the “programmer”. Sometimes they make it work between themselves, but often someone has to step in to establish the ground rules, keep everyone honest, and facilitate communication between all parties.
This someone, this hero, is the project manager.
In this entertaining article, Ethan James gives his insights as to why you, the developer, and you, the client, should invest in a project manager… or at least employ the techniques outlined.Continue reading →
Small teams frequently have to compete with bigger, more structured organizations who are capable of allocating more resources to project management, and software release management in particular. This means that small teams, or even individual developers, need to properly organize and execute their release process in order to keep up.
In this article, Toptal Freelance Software Engineer Lucas Mancini focuses specifically on small startups, teams that don’t have, or can’t afford, DevOps support, or teams that don’t have a formal process defined for releasing new versions of their product. The author provides a suggested checklist method to manage releases, tailored to match his past experience working on different projects, together with some recommended best practices and guidelines.Continue reading →
In the modern software development environment, we increasingly hear words like “agile,” “scrum,” and “kanban,” and they are often used improperly. In this article, I’ll try to explain and to clarify some of these terms.Continue reading →
The Art of War is an ancient military treatise, but despite its age, the text is still included in the syllabus at many military schools. Sun Tzu’s principles and teachings also have practical applications in politics, business, sports, and, believe it or not, software development. In fact, you might just be applying some of these principles in your daily routine, without even knowing.
In this post, Toptal Freelance Software Engineer Jose F. Maldonado explains why many of these ancient teachings still matter, and what you can do to make them work for you and your team.Continue reading →
Handling all validation in domain objects results in objects that are huge and complex to work with. In domain-driven design, using decoupled validator components allows your code to be much more reusable and enables validation rules to rapidly grow.
In this article, Toptal engineer Josip Medic shows us how validation can be decoupled from domain objects, made context-specific, and structured well to achieve more sustainable validation code.Continue reading →
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.Continue reading →
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.Continue reading →
Using modern DevOps Tools like Chef, Docker, Ansible, Packer, Troposphere, Consul, Jenkins, SonarQube, AWS, etc. does not mean that you are applying DevOps principles. DevOps is a way of thinking.Continue reading →
By and large, I haven’t run into any major disadvantages or advantages to being a woman in the software field. I feel like that’s a story not told enough in the debate, where the experience is just like anything else in life: some good, some bad, overall average.Continue reading →
Is open source scary? Do developers think that nobody would be interested in their personal projects? What are the fears associated with publishing your own work for the public to see? In this article, Toptal Director of Engineering Anna Chiara Bellini shares how, as an accomplished engineer, she made her first contribution to GitHub. This guide features all the step-by-step basics to getting involved in open source, including everything from what open source software is, to how to start working with Git and GitHub, to actually making meaningful contributions to open source projects.Continue reading →
Toptal has a strong remote culture), to say the least. To keep up with each other, we need a tool to keep team members in sync, where we can reach any other person at a moment’s notice. We use Skype as our main communication channel among Toptal’s core team.
Over the years, Skype has grown a lot, and has become a versatile tool that can be used on all of your devices at once, syncing chat amongst them, and providing a simple way to call and share screens. It is a tool that we leverage every day for our internal operations.
As heavy Skype users, there are a few things we’ve noticed that might not be clear to everyone. Here are a few tips on how you and your remote team can get the most of of Skype.Continue reading →
The fact that women are underrepresented in tech is nothing new. However, while we’ve seen the gender diversity reports from companies like Google, Facebook, and many more, a look at the number of women in the open source community suggests that the numbers might be worse than these reports imply. In this post, Toptal COO Breanden Beneschott shares the results of a study looking at gender on GitHub and considers a few reasons why GitHub is so male-dominated, including a few ideas on how we can make the open source community a more welcoming place.Continue reading →
Many developers often overlook, or do not thoroughly think through the implications of open source licenses. Whether you’re planning to open source your own project under one of these licenses, or you intend to integrate some other open source project into one of your own, it’s important to have at least some knowledge of what these licenses are, how they may affect your projects, and how they complement or contradict one another. In this article, Toptal engineer David Marín gives us a comprehensive guide to some of the most popular open source licenses, and several rules of thumb to follow when choosing a license for future open source projects.Continue reading →
Inheriting someone else’s code can be a nightmare, especially when the code is poorly designed and lacks documentation. In this post, Toptal Engineer Juan Pablo Scida provides a case study of how he reengineered a chat server written in Node.js, transforming its original spaghetti code into a cleanly architected and designed piece of software.Continue reading →
Remote jobs can be good for you, but depending on your character, they can also have some unpleasant side-effects. Burnout affects people in all walks of life and in all industries, so what makes remote workers different?
Recognising burnout symptoms early on is of vital importance and I cannot stress this enough. The deeper you sink into it, the longer it will take to recover, it’s as simple as that.Continue reading →
Working as a remote software development freelancer has many benefits, but setting up an effective distributed working environment can be a real challenge. In this article, Toptal Engineer Ivan Voras describes how he leverages SSH and a number of related technologies, along with the Raspberry Pi and ownCloud, to be able to work effectively from anywhere.Continue reading →
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.Continue reading →
Docker, an open source tool, has changed the way we think about deploying applications to servers. By leveraging some amazing resource isolation features of the Linux kernel, Docker makes it possible to easily isolate server applications into containers, control resource allocation, and design simpler deployment pipelines. Moreover, Docker enables all of this without the additional overhead of full-fledged virtual machines.Continue reading →
Some people like the known and predictable. They freak out when their daily routine gets disrupted. But, I’ll bet if you are doing any kind of creative work like programming or design, you are not one of those people. Ordinary day-to-day office work will kill you. It will eventually strip your motivation, creativity or flare for what you do.Continue reading →
Google’s new cloud code platform does not appear to be taking on GitHub head on. Instead, Cloud Source Repositories (CSR) will allow users to connect to repositories hosted on GitHub or Bitbucket. However, everything is automatically synced to the Google Cloud Source Repository.
The good news is that a Google CSR can be connected to another Git repository hosted on GitHub or Bitbucket. All changes will be synchronised on both platforms, as you can set Google CSR to automatically mirror from GitHub and Bitbucket.Continue reading →
Whether you’re an avid angler or an app developer, you may be interested in taking a closer look at the development of a fishing app, which involved some of your fellow Toptalers.
The goal was to create an app that would be truly useful in a professional fishing setting, while at the same time meeting a hard deadline. Since Fatsack Outdoors wanted to launch the app at one of the biggest fishing tradeshows of the year, the deadline was non-negotiable.Continue reading →
In this article, I will show that unit testing itself is quite easy; the real problems that complicate unit testing, and introduce expensive complexity, are a result of poorly-designed, untestable code. We will discuss what makes code hard to test, which anti-patterns and bad practices we should avoid to improve testability, and what other benefits we can achieve by writing testable code. We will see that writing testable code is not just about making testing less troublesome, but about making the code itself more robust, and easier to maintain.Continue reading →
Simply calling something Agile isn’t particularly helpful. The word, even in a software context, means different things to different people or organizations. There are many facets, definitions, implementations, and interpretations.
In this article, Toptal Head of Projects Paul Barnes teaches about behaviors, frameworks, techniques, and concepts supporting agile project management in software development.Continue reading →
Remote work comes with lots of things to take into account when designing your schedule, so finding the right balance that works best for you can be tricky. Here’s how to create a remote working schedule that works best for you, enabling you to get the most out of life while staying productive and effectively supporting your colleagues.Continue reading →
We live in a time where technology has made it possible to work from anywhere, and many people have eschewed the traditional office for the chaotic din of a cafe in Bangkok or a hotel in Prague. Yet, while this trend has opened up unprecedented opportunities, it also brings with it a number of challenges, perhaps the most insidious of which is a lack of ergonomically healthy options in non-traditional workspaces.Continue reading →
Technically, hiring freelance developers has never been easier, but don’t lull yourself into a false sense of security. The number of freelance platforms and skilled developers on the market is going up, but so are the challenges associated with finding, testing and selecting a truly great candidate.Continue reading →
Any time you’re physically out of the office or working with someone who isn’t next to you, you’re working remotely. At Toptal, working remotely is a productive and efficient reality that we evangelize to our clients, while practicing what we preach.
In this article, Toptal COO Breanden Beneschott shares great tactics in operating highly collaborative remote teams.Continue reading →
We will see technology push its way forward and society will be the better for it. The exciting question is who will lead this wave of disruption?Continue reading →
Toptal has taken its place as one of the strategic partners in Facebook’s effort to connect the world. Our vision of a distributed and office-less company with developers spread all over the globe has proven to be an amazing match to Facebook’s attempts to connect people worldwide.Continue reading →
You might presume that Non-Disclosure Agreements (NDAs) have been widely accepted in the tech world as a means to protect sensitive and potentially valuable information from theft and abuse. Not so fast.
Jones Day Corporate Associate Bret J. Stancil examines software developer NDAs for Toptal blog followers in a must-read post for anyone faced with the prospect of signing an NDA.Continue reading →
When entering the remote developers’ world, the biggest obstacle that managers must overcome is to change their mindset by accepting that the developer will not be in plain sight, and where they can manage and follow the work being done.
This new paradigm requires businesses to implement a number of mechanisms to track progress and avoid a redundant workload. Such mechanisms will help both manager and developer be more productive, which is in everyone’s best interest.Continue reading →
A business rules engine is a tool for executing business rules. Business rules are composed of facts and conditional statements. Any “if-then” statement that appears in traditional business logic qualifies as a business rule.Continue reading →
This article provides an overview on building a great Android application, from defining an idea to releasing an application to the store. Toptal developer Ivan Dimoski gives us a chance to learn from his experience in making Ooshies, an Android Live Wallpaper designed to give you a hug and make you feel loved each time you interact with your Android device.Continue reading →
Web services and their APIs abound. Unfortunately, the vast majority are difficult to use. Reasons range from poor design, to lack of documentation, to volatility, to unresolved bugs, or in some cases, all of the above.
Follow the guidance in this post to help ensure that your web API is clean, well-documented, and easy-to-use. Such APIs are truly rare and are therefore much more likely to be widely adopted and used.Continue reading →
It’s astounding how few business owners properly account for the real cost of their labor. This article presents tried and true methods – including an online calculator – for calculating the real cost of your employees and consultants, enabling you to perform a sound financial analysis when faced with the “employee vs. consultant” dilemma.Continue reading →
As Co-Founder and COO, Breanden Beneschott has been effectively running Toptal, a venture-funded company growing hundreds of percent year over year, while traveling across the globe. Breanden shares his tips and experiences as a successful traveling engineer and entrepreneur, including his perspective on the benefits of this new lifestyle.Continue reading →
With an 80% increase in the remote workforce from 2005 to 2012, there must be more to the picture than meets the eye. This post pulls the rug out from under 5 of the most prevalent myths about remote workers, with a specific focus on the software development industry.Continue reading →
Testing. It always seems to get left to the last minute, then cut because you’re out of time, budget, or whatever else. Management wonders why developers can’t just “get it right the first time”, and developers (especially on large systems) can be taken off-guard when different stakeholders describe different parts of the system.
With behavior-driven development, you can turn testing into a shared process that focuses on the behaviors of the system, why they matter, and who cares.Continue reading →
Effective interviewing and hiring is as much of an art as it is a science. Nonetheless, approaches and methodologies do exist for evaluating the more subtle dimensions of a software developer’s skills and abilities. When used collectively, these techniques yield a highly effective screening process with a proven track record of success. That process is what this post is all about.Continue reading →
As a veteran telecommuter through multiple jobs in my career, I have witnessed and experienced the many joys of being a remote worker. As for the horror stories, I have more than a few I could tell. With a bit of artistic inclination and a talent for mathematics, I also have a fascination with patterns: design patterns, architectural patterns, behavioral patterns, social patterns, weather patterns—all sorts of patterns!
When I first encountered anti-patterns, I discovered a trove of wisdom I wish I had known before I had learned the hard way. Anti-patterns are recognizable repeated patterns that contribute significantly to failure. For example, the manager that keeps interrupting the employee in order to see if the employee is getting any work done is engaging in an anti-pattern that serves to prevent the employee from getting any work done!
Based on my own experiences and experiences of friends and co-workers, I am assembling descriptions of anti-patterns related to telecommuting.Continue reading →
Demand within the web design scene today has changed over the past few years: designers with front-end skills, and front-end developers with design skills, are more and more in demand. Yes, you could argue that the jobs are completely different—and maybe you straight-up don’t like one of them—but truth be told, in my six years as a freelance web developer and twelve years as a designer, I’ve learned that it’s much harder to get by as just a web designer or just a front-end developer.
Wearing both hats has a lot of advantages: from a professional perspective alone, you can find work more easily and charge a higher rate because you’re bringing more to the table.Continue reading →
At Toptal, we’re building a software product that aims to revolutionize team creation, contracting, and human resources. Our team is completely distributed: we have no office, and we work from all around the globe. And when I say “all around the globe”, I mean “all around the globe”: our internal staff consists of nearly 50 full-time individuals from Brazil, USA, Russia, Argentina, Czech Republic, Ukraine, Hungary, and more. This includes engineers, designers, recruiters, sales, and executives.
We all work from home, and we’re good at it: we’ve had countless Skype sessions, code reviews, feature iterations—all components in building a great product. We work hard, and we’ve been at it with as much fervor and energy as ever.
Earlier this year, we decided it was time to bring everyone together in the same location. We’ve had tremendous success as a distributed team. But regardless, we wanted to add an edge to our collaboration and creativity, and connect in-person. Our journey, the results that came of it, and the economics behind it are all explained thoroughly in the post that follows.Continue reading →
At Toptal, we’re always looking for the best freelancers around. But what makes a freelancer truly great? Luis Martinho, one of our top developers, is beloved by his clients — so we sat down with him to talk about freelancing, technologies, and paying your taxes.Continue reading →
Starting a new remote gig, be it a contract project or a full-time job, can be a little intimidating if you’re used to going into an office day after day.
But this style of employment is growing in popularity, with some very notable companies lending it their endorsements.
I’ve worked remotely for years now on projects of various scales and durations. With this post, I hope to enumerate some of the best practices that I’ve picked up for working in a variety of situations. The advice here ranges from specific recommendations for software and hardware, to tips for hitting your team’s deadlines.Continue reading →
These days, I’m living in the great city of San Francisco. I’ve got a job that I love, and one that I’ve dreamt of having for a long time. Everything seems easy now, but it wasn’t always like this.Continue reading →