My primary hobby in my off-time is blacksmithing. Blacksmithing as a profession effectively died out in North America in the 1950s/1960s, but was reinvented as an art during the 1970s. There are still incredibly few blacksmiths still around, but it is an extremely rewarding hobby. This series will examine how blacksmithing and mobile software development, two seemingly disparate pursuits, share a lot more in common than you might suspect.
In Episode 4, I will discuss how making quick fixes relates to blacksmithing. Specifically, I’ll discuss this how it relates to welding.
There are a wide variety of ways of attaching two pieces of steel together, but by far the most permanent of these is welding. Done properly, a weld can be seamless, making it appear as if it is one piece, not two pieces, and be virtually as strong as if it actually was.
There are two main types of welds available to the blacksmith: the forge weld, done at the forge/anvil while the piece is extremely hot, and arc welds (be it stick, MIG or TIG) or gas welds done “cold”.
Oversimplifying, forge welding involves heating the two pieces up to near-melting temperatures and hammering them so that they fuse together. The two faces being attached weld across their entire surface. This contrasts with arc and gas welding, where the faces are not actually attached, only the edges (typically chamfered to maximize surface area) are connected. Forge welding is dramatically harder and it can be much more time-consuming to create the bonding, there is a lot of preparation that I haven’t gone into here. On the surface, therefore, one might be, and often is, tempted to choose arc or gas welding, given that its easier and quicker.
The same thing can apply to writing mobile apps when choosing whether to make the app offline-capable or not. Making a mobile app capable of functioning if it goes offline, which has been most accurately described as an occasionally-disconnected app, is a lot of work, it dramatically easier and quicker to have it serve up data directly from the server.
With both these techniques, however, there are hidden costs that can make these “quick and easy” solutions actually cost you more time in the long run.
With a forge weld, the two pieces join together naturally, folding into one another in an organic way. There is no cleanup afterwards, a few swipes with a wire brush to remove scale and flux is typically all that is required. With an arc weld, however, there is typically spatter, very small globs of material that stick to the piece, that need to be chipped off. As well, a weld leaves a very unnatural joint, sometimes with very small pits in it, between the two pieces, which is unacceptable when attempting to create a work of art, so you are stuck with adding more material than you need and then laboriously grinding and filing off to get to a smooth connecting surface. By the time you’ve done all of this, you’ve actually spent more time than you would have had you forge welded the pieces together, and you’ve got a worse result.
Mobile apps which are not offline can cause a lot of headaches down the line. Imagine an application that shows you a product catalog as you shop. If that application is online, it needs to connect to the server and pull down the product catalog each and every time you use it. If you lose connectivity, the app stops working, with no graceful failures and with no ability to continue working until you regain connectivity. Trying to solve these problems after the fact, in an app designed to be purely online, can be a nightmare. In practice, unless you can guarantee that you’ll never need to worry about an occasionally disconnected scenario, you’ll be better served to design them for that scenario in the first place, you’ll end up with a better solution and, in the long run, it will take you less time to develop.