Out of all the tests I write on a day-to-day basis, acceptance tests are the hardest. In my experience, writing them for web applications is complex. There are many asynchronous actions going on: web requests firing off, responses being processed, UI elements popping on and off the screen, etc. To manage this complexity, I’ve been […]
As we decide where to focus, figure out the best way to implement things, or evaluate costs on any project, we hear the same questions: “How much will this cost?” Or “When will it be done?” Or even technical questions like, “How many records can this process per second?” We need to make decisions and […]
Releasing a new version of a mobile app can be a stressful process. The first few times you do it, your customer base is probably pretty small, so it doesn’t feel like a very big deal. However, after your user base grows into the thousands, the pressure really starts to build. The fear of releasing […]
Picking the right libraries for your project is important. The wrong ones can create long-term headaches and introduce technical debt that will eventually be very expensive to correct. When making your choice, there are a few important things to think about, and a few common things to avoid.
Containerizing can be a useful approach to developing applications. While it has many benefits, there are also situations where you might not want to use it. In this post, I’ll cover both the pros and cons. What Are Containers? Containers are the result of a packing mechanism that decouples applications from the environment where they […]
The package.json file is the heart of any Node.js project, but it often goes entirely undocumented. In this post, I’ll review a few areas that are worth documenting, and how I like to do it.
Okay, that’s a bit grandiose, I admit. But I often see tweets or posts about how people don’t “get” capital-A Agile. Tweets like this and this point out common faults. Everything they say is technically correct but not especially useful. Pointing out all of the not-get-its in the wild won’t make people “get it” better, […]
This is the third in a three-part series about strategies for synchronizing data between systems during a software replacement project. You can read about one-way integration and two-way integration if you want to catch up.
When replacing large existing software systems, we need to be able to use both systems in parallel, or at least parts of the systems. And to achieve that goal, we often need to share data between the two systems. In this three-part series, we’ll look at a number of strategies that you can use.
The Agile principle of delivering value early and often is critical when replacing large, existing software systems. To achieve that goal, we want to be able to use both systems in parallel, or at least parts of the systems. And to achieve that goal in a rewrite situation we often need to share data between […]