I recently asked a group of high school students what happens when they send a text message. The overwhelming response was, “My phone just sends it over the network.”
But this, of course, prompted me to ask: How does their device upload that message to the network? How is the message routed to the correct destination? How is it received, processed and displayed to the recipient?
It was soon evident to me, and to them, how little they know about the technology they use every few minutes. As consumers, we’ve all come to expect our various gadgets to just do what we want them to do, instantaneously, with little thought about what goes on behind the screen.
I call it Technological Attention Deficit Disorder, or Tech ADD.
This technological inattentiveness is having an impact on software development and user-experience design consultancies in two ways: First, how we recruit and manage new developers (especially new graduates), and even how we must take the time to deprogram and reprogram them; and second, how we must instil an appreciation for the tools and frameworks they must use to build truly robust and scalable applications.
The common consumerized code jockey
Our collective expectation that technology will just work for us on demand without us having to actually learn anything isn’t really all that new. A few generations ago, when the analog television was the state-of-the-art consumer technology, few people understood how it worked. But today’s consumer tech has had such a profound impact on how we live our lives and engage with the world that its influence on our behavior is more pervasive than television, radio and the traditional analog telephone were.
It’s an influence I see more and more on young software developers.
Here it manifests in two ways. The first is an inability to focus on one task for any length of time. (The polite—and misleading—term is “multi-tasking.”) The second is an expectation that software design and development should entail very much the same plug-and-play simplicity as the consumer tech that too often distracts from the work to be done on the company clock.
The ADD begins at school age and continues on through college and university, where students wonder why they must learn linear algebra without appreciating how it provides an important grounding in root principles of computer science and problem solving for something as common as how a browser creates a cookie. Developers know how to create a cookie by typing a single line of code, but they don’t understand how tiny pieces of technology frameworks and protocols work together to enable the creation of a cookie on the end user’s computer.
Their idea of “programming” often involves just throwing together various plug-ins, frameworks, libraries and, in some extreme cases, a few bits of code that are already floating around in the public domain. But this can easily lead to a common software design pitfall we call “the big ball of mud.” This is a program so tightly coupled that it’s very difficult to scale or customize, and it’s rarely robust enough to handle large volumes of users.
#!Searching for the next generation of craftspeople
For many of these young programmers, the primary motivation seems to be quick success. Everyone wants to create the next Angry Birds or Farmville, or have their ideas rapidly come to life. But I am looking for something a little deeper when I am recruiting: future craftsmen and craftswomen who really value the work they do. For apprentices to become masters of their craft, they must take pride in their work, have the diligence to devote whatever degree of time and effort is required, and, above all, possess a profound curiosity about why things work the way they do.
Most of the projects a consultancy-for-hire such as ours will take on involve enterprise-scale apps, apps for the top social media tools, and apps for specific industry verticals such as healthcare or finance. Building a robust application that is secure, reliable and scalable is crucial. But even if the project involves some kind of gaming, entertainment or reference app for general consumer use, we live in a world where any app or platform can be crippled by its own success if it wasn’t built to handle hundreds of thousands, even tens of millions of users at a time.
Even today, it still takes old-school heavy lifting to create designs that will meet these demands. This requires programmers who are willing to devote weeks, even months, to a single project, putting in long hours to the exclusion of all else. They may also have to resort to old mainstays such as C++, which brings many developers back to the “metal” of a system.
So where do we look for these future masters of the craft?
The importance of first principles
In a software development context, our best hires are those who live for the challenge—the bigger the challenge, the better. If we look in some areas of the U.S., it’s hard to find great talent that isn’t preoccupied with money, or caught in a salary bidding war. It’s not impossible, just challenging.
However, sometimes you need to be open to looking abroad. For example, I’ve observed an interesting phenomenon in the industry when we head to various points in Eastern Europe. Here we find many developers who are more thrilled by programming for the sake of programming. There are many pockets like this outside of the obvious North American tech centers, but it takes effort to find them.
Just like learning how to deal with complex differential equations, understanding the fundamental mechanics of programming will equip you for a lifelong career. Even with all the amazing programming languages and high-level programming concepts that typify the industry today, we still need to fall back on C++ from time to time to handle some of the most challenging performance or scaling problems.
Why does it appear to be so challenging to find those interested in the metal and the fundamentals, and with the profound curiosity that is the hallmark of a great software developer?
The issue is often market-driven. Education programs are highly tailored to big tech employers. In the North American market, Java and .NET often take precedence over fundamental programming languages such as C++ and C, or alternative programming concepts like JavaScript (prototype-based) and functional programming. This could be due to the needs of industry titans like IBM, Google and Microsoft.
Of course, there is a limit to how much can be packed into any four-year post-secondary curriculum. What’s important to me is that grads walk out of school as more than just decent Java developers; I want developers who have a strong grounding in the fundamentals of great design and development, ready to be coached and molded.
Regardless of their skill sets, anyone who comes through our doors while still early in their career will face a steep learning curve. Our shop has a growing roster of more than 150 software engineers working on more than 40 projects, each using unique and different tools, programming languages and libraries. That’s a huge pool of talent and experience. The breadth of knowledge is quite intimidating and very difficult to get comfortable with. But it’s also a huge resource for mentorship, if young developers check their egos at the door and take advantage of the learning opportunity. I often tell new hires, “For the first few months, you’re going to feel stupid and I don’t want you to think that’s a bad thing.” After that humbling probationary period, their apprenticeship will start in earnest.
#!There is value in having a little Tech ADD
I mentioned earlier that a persistent curiosity is a hallmark of a great developer. In other words, they do need a certain amount of Tech ADD in their DNA, just enough to drive a need to learn something completely new. It’s the fuel for creativity and innovation.
Among more experienced developers, it’s a trait they used to transition from the old days, when the industry was governed by an informal pecking order. This pecking order ranked developers based on their particular area of expertise, with a Linux kernel hacker somewhere at the top, a .NET developer somewhere near the middle, and a Web developer near the bottom. It was assumed that the ability of the developer increased as they rose up the pecking order.
This pecking order has flattened since the 1990s and given prominence to the once lowly Web developer. The Web guys and gals slowly developed the backbone of everything that has risen to the mobile forefront in the last half decade, and they were relied upon to build the infrastructure that is now crucial to handle the huge traffic demands of our always-connected wireless world.
What does the upset of this pecking order mean from the talent recruitment and development perspective?
New hires, regardless of whether they are seasoned pros or fresh grads, must demonstrate a mental agility. Not only must they be turned on by the challenge of solving real problems, but they must also be generalists. You need C++ to code a device driver, but you also need some of those Web-developer skills to scale to 100 million users.
This curiosity is easy enough to spot in an interview. I’m not looking for applicants who can just rattle off answers to given questions. I want those individuals to also ask me what I think and kick off a discussion in which we each end up learning something from the other. The best interviews are the ones where I walk away knowing each of us has learned something new.
It’s even more important to me that more experienced developers haven’t left themselves pigeon-holed by the outdated constraints of the old pecking order. This can be particularly evident with potential hires who spent their formative years at large and complex tech companies, where projects were broken down into tiny silos. Most rank-and-file developers were often relegated to working on only small parts of much larger projects and didn’t have to think too much about what happened once their part was done. I looked for people who didn’t allow themselves to be dulled by that. Instead, they took it upon themselves to learn something new every couple of years, and to stay abreast of current tools and technology.
The more our lives are changed by technology, the less we seem to know about it. As it becomes easier to cobble together something that can be called an “app,” a growing number of young developers are shying away from mastering old standbys and getting close to the metal. But while the consumer market is redefining the look and feel of enterprise-scale applications, the enterprise market’s requirements for security, information scalability and sheer horsepower allows few shortcuts.
The qualifications on a piece of paper might get you the interview, but it’s an enthusiasm to learn, a willingness to adapt, and, most importantly, an ability to control and apply your Tech ADD to fuel your imagination, which will win you a career.