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 1, I’ll explain how tongs relate to mobile software development. For the uninitiated, tongs are a tool held in the offhand used for securely grabbing the piece to be hit by the hammer wielded in the dominant hand. Tongs look a bit like scissors, and indeed were the precursors to scissors. Click here to see some examples. While you get a more secure grip on your piece if you hold it in your hand, the end of the steel you are working on will typically be around 2000 degrees Farenheit and steel conducts heat very rapidly, so unless you have a long piece that you are sure is cool, its generally advisable to use tongs to hold it.
The first analogy I am going to be making here is that tongs are a tool that we use when making something else, much like development tools like WYSIWYG IDEs are tools that we use when building mobile applications. Tongs are not an end result, you do not sell tongs to non-blacksmiths, much like IDEs are not an end results, end user customers want mobile applications, they don’t much care how it was built. What tongs and WYSIWYG IDEs do is make building applications easier and safer. If you know what you are doing, you can likely work more effectively without a WYSIWYG IDE, much grabbing the piece with your hand gives you a better grip. You will likely spend more time, however, building applications without a WYSIWYG IDE, much like you spend more time cooling off the end of the piece before you grab it with your hand. Moreover, if you don’t know what you are doing, or aren’t paying attention, you are far more likely to get burned doing it yourself. Ask me how I know.
The second analogy I am going to make is that there is no one-size-fits-all kind of tong. There are tongs for material with a round cross-section, with a square cross-section, with a flat cross-section; tongs that can hold different sizes of material, from 1/8″ all the way up to 2″ and beyond; bolt tongs that allow room for a section of the piece to be much larger than the part you are trying to grab; offset tongs; parallel and perpendicular tongs; mild steel and tool steel tongs; and many, many more. Similarly, there is no one right way to build a mobile applications, there are lots of entirely valid ways of building a mobile applications, depending on the type of application and the type of developer. Some applications should be written natively to optimize their performance, look-and-feel and device capabilities. Some applications should be written as pure web applications to support multiple platforms simultaneously using common development skills with a short turnaround. Some applications should be written as hybrid native-web applications to leverage the advantages of pure web applications without sacrificing the device capabilities of native applications. Different mobile application frameworks are best suited to different kinds of applications and different kinds of developers. Different developers are suited to different kinds, and extents, of mobile application tooling.
Now, that being said, there are so-called “universal” tongs that are capable of holding most of the common kinds and sizes of stocks you use for most projects. In my mind, most mobile applications, particularly in-house enterprise mobile applications, should be built as hybrid native-web applications, making hybrid native-web applications the universal tong of mobile application design. You’ll note, however, that I put the word “universal” in quotes. I did so because there are a wide variety of pieces for which “universal” tongs are entirely inappropriate, you won’t get a good hold on the piece and you are likely to end up burning yourself, or somebody in the crowd watching you (your “customers”). Similarly, if you have, say, a B2C mobile application which is your bread-and-butter application, that should almost certainly be written as a native application, the time and skill you devote to building it are far less important than the degree of perfection you can achieve in the end result. The answer to “what kind of tong should I use” and “how should I build my mobile application” is the same – “it depends on what you are making and who is making it”.
In mobile software development, just as in blacksmithing, there are no easy answers. Take heart and enjoy the ride, though; if it was too easy, it wouldn’t be fun.