When you work with software developers, especially those with less experience, it’s virtually guaranteed to hear one of them utter a version of the above expression when someone presents them with a situation they think is impossible (or more likely, improbable) to happen in the program they’ve written…
In the software world, we don’t have as many complicated terms as there are in biology, but we aren’t completely immune to giving complex-sounding names to what should be simple concepts – some of us even enjoy getting pedantic about them. Here are some of my favorites, with examples in JavaScript…
I will never forget the time I discovered how web pages were made. The year was 1995. I was using Windows 3.1 like most everyone, and it didn’t even support the TCP/IP network stack out of the box. I had to install a program called Trumpet Winsock and a hot new web browser called Netscape to connect to the Internet…
Is it possible to make code easier to read than to write? After all, code is read more often than it is written when multiple developers work on the same codebase. If developers spend less time to understand how the existing code works, they can start writing code faster…
What happens when a function call fails? Can you retry without causing any unintended side effects? If the answer is no, then your function is probably not robust enough…
Over the years I’ve seen all sorts of SQL mistakes made by developers on my teams, and I’ve made quite a few of them myself. I’d like to share what I’ve learned with you, starting with security first…
One of the most effective methods for detecting invalid types is to validate function arguments in runtime. Instead of using an all-purpose validation library designed for validating a wide range of data types, it might make more sense to use a library tailor-made to validate function arguments. With that idea in mind, I’ve created a lightweight JavaScript function argument validation library called fn-arg-validator…
When Design Patterns first got published, the year was 1994, a rather primitive time when functional programming languages that support first class functions were rarely used outside academia. These days, though, we have mainstream languages such as JavaScript and Python that can be used to trivially implement many of the design patterns described in the book with only a few lines of code…
You’ve probably seen programmers calmly writing code at 200 keystrokes per minute to solve hideously complex problems under strict deadlines, and the programs they wrote run perfectly on the first try, often only a few seconds before something blows up real good…
There are many ways to write automated tests for testing code, and you may have heard about test doubles for making testing easier. Some of the code we write is hard to test, so we replace those parts with fake test doubles that are easier to test…
B2B (Business-to-Business) software is different from B2C (Business-to-Consumer) software for several reasons, but the most important one is this: In B2B, each customer isn’t an individual but a company with its own unique needs and workflows. If your software isn’t compatible with the way a company operates and there are no convenient workarounds, you are out…
If you are a cash-strapped startup, you can usually get away with a team of just one or two developers and hope for the best. There’s absolutely nothing wrong with that. But if you have the funds to add new members to your team, don’t just go with more developers. Developers aren’t generally very good at designing products people want to use – they are good at implementing well-specced features…