As software applications develop simpler user interfaces and infiltrate more areas of everyday life, many young people are being drawn into programming by tech’s fundamental allure. But the streamlined nature of many popular applications may also be changing the way young developers think about building programs, teaching them to focus on basic functionality and immediate solutions rather than on scalable, thought-out design. In a recent column for SD Times, software consultant Anthony Hooper described this phenomenon as “Tech ADD,” suggesting that enterprise development shops may need to help their young hires reorient toward more granular, slower practices.

The issue, Hooper explained, is that many young developers know how to combine existing tools or write lines of code that make machines do what they want, but these slapdash approaches are designed for quick construction, not robust applications. Even simple consumer entertainment apps face challenges like handling loads of hundreds of thousands of users at once, and enterprise apps can involve even more complex needs. To achieve this durability, young developers may have to focus on one set of code for a long time and work on a more basic, lower level than they are accustomed to.

“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,” Hooper wrote of young programmers. “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.”

Building on a more basic level
To achieve the kind of application flexibility needed, younger developers may have to learn to code in a lower-level language like C++, Hooper suggested. At the same time, they need the “mental agility” to transition to a Web developer mindset and leverage the Web application skills needed to build a large-scale application. As programmers learn to balance multiple languages, there is an inevitable learning curve, however.

“C++ is very, very deep,” John Sonmez, a developer, blogger and founder of Simple Programmer, wrote in a blog post dissecting the role of C++. “There is just a very large amount to know about the language itself. C# and Java development are somewhat about learning the language, but much more about learning the libraries. C++ development is more about learning every nook and cranny of the language.”

The complexity of C++ makes it unsuitable for many high-level projects, Sonmez went on to argue. Additionally, it creates a challenge for young developers being brought in and taught slower, more low-level approaches that use the language. For companies that need to work with budding talent to build this skill, some number of C++ mistakes is inevitable. To mitigate these errors and help developers understand their mistakes as they build their code, companies can use static analysis software. By catching logical errors and immediately letting the developer see those problems, static analysis provides the perfect tool for teaching as programmers go along. For companies that need to train their young developers to look beyond simple, already built components and to develop custom tools themselves, static analysis is an ideal educational companion.

Software news brought to you by Klocwork Inc., dedicated to helping software developers create better code with every keystroke.

With over a decade spent in web process analysis and optimization, I now manage the web presence and online marketing channels for Rogue Wave Software. I love to follow technology, privacy and security issues online and am a technology geek at heart. I will try to post interesting news and developments in the software security industry. Dovahkiin!