Writing Tests that Work

Your team realizes that testing is valuable. Your team creates tests for already completed features. The result was encouraging and your team even found a few bugs hiding in the application. Your team returns to feature development and attempts to add new tests. Features took more time to complete because of the need to create corresponding tests, but your team remains committed to testing. However, some tests keep breaking and some aspects seem too difficult to test. The test suite

Read More »

Why Automated Testing Matters

Your software development team released an MVP application into production. The application only had a few features and the codebase is far from perfect, but there are big plans for the future! Your team presses on, adding features and your user base continues to grow. After a few months, cracks begin to surface. Users started reporting issues and developers get sidelined to fix problems appearing in production. Your release cycles slow as pressure mounts to manually test a growing list

Read More »

Smart Contracts: A Tutorial

Introduction Now that we’ve demystified smart contracts and better understand what they are and how they work, let’s build our own contract on top of the Ethereum blockchain. Because smart contracts are computer programs at their core, many of the concepts that we’ll use to build a basic contract will seem familiar. Major advancements in developer tooling and infrastructure in the Ethereum ecosystem allow us to effectively develop a smart contract completely in-browser, so let’s get started. Remixing Solidity The

Read More »
Smart Contracts

Demystifying Smart Contracts

Smart contracts are often described as a transformative new technology that borders on magic, able to remove third-parties and monetary risk alike from business deals using the power of the blockchain. The autonomous execution and enforcement of an agreement may sound like something out of a Harry Potter novel, but the maturation of blockchain-based programming techniques have made smart contracts more of a reality than ever.  Smart Contracts in Theory Many types of business transactions today require intermediate parties to

Read More »

An Even More Modern Terminal-Based Development Environment

It’s been a year since I last talked about my development environment. Many things remain the same: I’m using neovim, zsh, and tmux. However, I have made a few changes to improve usability and make my day-to-day work feel faster. I’m using a new terminal application, my vim environment has changed dramatically (at least behind the scenes), and I started using a pretty neat keyboard-based window manager. This article is a continuation of the previous one. Rather than starting from

Read More »

The Importance of Good Software Architecture

What is Software Architecture? Software architecture is the analysis, thought and design considerations that form the foundational scaffolding for a successful software system. If you write software for work or as a hobby, whether you know it or not, you’re already dealing with software architecture and the processes of making architectural decisions within your applications. You might even work for a company where software architecture is a defined, hired-for skill set with its own career development track. Every software system

Read More »

Progressively Adopting TypeScript in a Dojo Toolkit Application

TypeScript has become a mainstay of modern web development libraries. Consuming functions and widgets written by a third party can be error-prone without some type of guidance. Introducing static typing to the interfaces doesn’t just reduce misuse, it has added benefits including intelligence code completion. Dojo Toolkit is one of the earliest libraries to facilitate the building of large, dynamic, interconnected single-page applications. Above and beyond the tools for loading and storing data, managing events, and working with the DOM,

Read More »

A Smooth Transition: Designing for the Development Handoff

In an olympic sprint relay, four runners operate as a team to sprint a total of four hundred meters. In order to compete at a record-setting level, an athlete needs to be capable of running one hundred meters in less than ten seconds. The training and dedication it takes to get to this level of performance is nothing short of staggering. While individual performance is paramount to winning a race, the reality is, a sprint is often won or lost

Read More »
Business Analysis

Business Analysis: One of the Overlooked Areas of Successful Software Development

“What problem are we trying to solve?” As a career business analyst, I’ve lost count of the number of times I’ve asked this question. More often than not, stakeholders are ready to discuss solutions before dissecting the problem itself. The result? A half-baked “solution” that may or may not address the key problem, and likely also creates new problems. Case in point: Once, a stakeholder submitted a project request to have a report generated out of the claims adjudication system.

Read More »
Disciplined Engineering – Part 3: Refining Your Engineering Process

Disciplined Engineering – Part 3: Refining Your Engineering Process

This is part 3 of the Disciplined Engineering series.  It is for teams that have an established engineering process with confidence around the quality of their application. This article will help improve your engineering game by identifying the common patterns that will further improve your team’s focus on quality. If you don’t  have an established culture of engineering at your company, we recommend reading Part 1: Building an Engineering Process. If you would like to be more confident in your code,

Read More »
Disciplined Engineering – Part 2: Creating Code Confidence

Disciplined Engineering – Part 2: Creating Code Confidence

This is part 2 of the Disciplined Engineering series. It focuses on improving the confidence of the code produced by your team. If you haven’t already, we recommend reading Part 1: Building an Engineering Process as a prerequisite for these practices. You can also check out Part 3: Refining Your Engineering Process. Creating Code Confidence Ensuring the quality and sustainability of large applications can be challenging. One of the best ways to address this challenge is by adopting tools and practices that improve

Read More »
Disciplined Engineering – Part 1: Building an Engineering Process

Disciplined Engineering – Part 1: Building an Engineering Process

This is part 1 of the Disciplined Engineering series.  It is for teams that want to establish a culture of engineering excellence for their organization. For teams that already have an established process, we recommend reading Part 2: Creating Code Confidence. If you’re looking to further improve upon your process, please check out Part 3: Refining Your Engineering Process. Building an Engineering Process A well-defined process for taking a feature from inception to production is critical for any healthy engineering organization. Teams

Read More »