What Does This Report Cover?
How to Train Software Developers in 2017
This report will help you:
Deliver software more quickly, with fewer bugs
Attract, retain, and grow top engineers
Make learning an enabler for your strategic goals
Increase ROI on your learning dollars
Skip to your favorite section!
Over the past decade, DevelopIntelligence (DI) has provided world-class, role-based learning solutions for software developers and engineers. As the technology industry changes, engineers and companies are continually challenged to keep pace.
Recently, it has become clear that in order for organizations to achieve strategic initiatives as well as keep their employees engaged, both R&D and L&D departments must be aligned and work closely with one another.
According to go2HR.ca, up to 40 percent of employees leave their jobs within the first year. Staff turnover is expensive–several studies report that the cost of replacing an employee averages six to nine months’ salary. In other words, to replace a developer earning $130,000/year could cost the company between $65,000 and $95,000 in recruiting and training costs!
In 2014, DI conducted the industry’s first developer learning survey, which yielded valuable insights into the learning and development needs of software developers. We recently repeated the survey with double the sample size, reaching out to almost 800 software professionals. The survey was structured around three broad areas: Developer Learning Behaviors, Developer Training Preferences, and Developer Training Requirements.
Outlined below are the key findings from the 2017 DI Developer Survey.
Developer Learning Preferences
On average, respondents spend seven hours per week of their own time learning new skills necessary to do their jobs. On the other hand, respondents spend an average of just two hours in formal training opportunities.
The survey suggests that developers do not receive enough on-the-job time to learn about current and future technologies they need to successfully complete their job tasks. We recommend that HR and L&D managers acknowledge this after hours learning investment and replace it with regularly scheduled, brief–yet meaningful–topical training opportunities.
Most Desired Forms of Training
Senior Developers (5+ years)
With the growth of platforms such as Pluralsight, Udemy, Coursera, and others, junior developers are including more video training in their technical self-education. Video training can be an efficient method for teaching oneself the fundamentals of different technologies–however, it can be difficult to find videos covering intermediate and advanced topics. It is also challenging to find videos tailored to specific development stacks. Our data show that once developers are well into their careers, private ILT courses become as preferable as video training.
These data–coupled with our extensive experience in developer training–lead us to recommend that L&D managers adopt a blended learning strategy which combines reading with private, dedicated training courses, along with outlets for peer-to-peer mentoring and coaching (e.g., internal company meetups). Online technical libraries or video libraries such as Pluralsight are ideal resources to include in such a blended learning strategy.
Private, dedicated ILT courses of three to five days in length are rated by developers as the most effective way to learn. Of the developers who participated in a private ILT event over the past year, 83% rated it as an effective way to learn and adopt new technologies.
Based on the survey results, we recommend three-day courses as the most effective option in terms of cost, retention, and project schedules. In addition, we recommend that learning and development managers who strive to lower the cost of learning should avoid investing in mobile learning. While this segment is rapidly growing within the learning industry, 32% of developers and those in related roles rated mobile learning as their least favorite learning method.
Conferences represent a popular trend within the development community and indeed, some companies spend large portions of their training dollars on conferences, foregoing ILT, online libraries, and other learning solutions. However, our respondents rated conferences as their second least favorite learning method. Therefore, managers who plan to spend training dollars on conferences should view that investment as one which will boost employee morale and create technology awareness, rather than an investment in long-term productivity gains.
Developers seek out training for practical purposes. Over 55% say they seek out training in order to meet current or upcoming needs or to advance their careers. By increasing the learning solutions offered to the engineering staff, managers demonstrate a commitment to employee and organizational success.
DI regularly finds that a minimal learning investment of $800 to $1,800 per engineer per year delivers significant returns–as much as 20 to 30%–in employee morale and productivity gains.
Current Skill Gaps
Design Patterns and Architecture
We found a strong demand for high-level software engineering skills such as software architecture (55%), design patterns (52%), high scalability (40%), and developing secure code (40%). These results indicate that many developers want to take their software development knowledge to the next level. That is, they want the skills that will allow them to transition from developers/programmers to engineers/architects. This transition involves writing secure code that scales well and lends itself to collaboration.
Architectural skills are difficult to instill in developers, which may explain why the median salary for Software Architects is roughly $116,000–more than any other IT position. It is vital for organizations to focus on cultivating and retaining their Software Architects. Investment in software architecture training will both increase return on software investments and decrease the amount of rework which stems from poorly-designed applications.
High-Demand Programming Languages
Java continues its long streak as the number one language on the TIOBE Index and number 2 in the RedMonk rankings, and consequently, Java training remains in high demand–30% of developers would like Advanced Java training in the next 3-15 months and 28% desire Introductory Java training.
Many of the programming languages that developers want to learn are languages that have been popular for 15-20 years, but we’ve also discovered that developers want to learn two new languages– Go (29%) and Swift (20%).
Nearly half of the respondents are eager to learn and apply new NoSQL concepts and technologies such as MongoDB or RethinkDB. NoSQL (or “document store”) databases are relatively new to most organizations. We have found that one-day “NoSQL Concepts and Landscape” sessions offer a quick introduction and allow organizations to evaluate the impact of NoSQL as well as identify which specific tools and technologies to adopt.
CEB CIO Leadership Council recently released their annual Key Findings from the IT Budget Benchmark for 2015-2016. The nearly 160 organizations participating in the study represent nearly $40 billion in IT spending and these organizations grew their IT training budgets by 5.1% in 2015.
One way in which managers can increase learning opportunities for engineers without increasing training budgets is to decrease costs associated with operational overhead. Typically, 60-70% of a training budget is allocated to operational costs, including employees, learning management system (LMS) products, and collaboration products.
However, most development organizations already have informal collaboration and knowledge-sharing products in place, in the form of wikis, project-management tools, or other similar tools. Rather than investing in yet another collaboration product to help facilitate knowledge sharing within the organization, managers should leverage and formalize the tools already in place. This will reduce overhead and improve morale as the organization recognizes and embraces the tools their employees find useful.
Overall, the 2017 DI Developer Survey Report demonstrates that developers are already engaged in training, have clear areas of desired skill growth, and know which training methods are most effective in building their skills. By creating and implementing learning plans based on their development team’s needs, managers are more likely to help their organizations stay competitive and retain top talent.
Over the past 13 years, DevelopIntelligence (DI) has provided world-class, role-based learning solutions to software developers and engineers. The technology industry is constantly evolving, and engineers and their organizations face a continual challenge to keep pace with these changes.
Software development is rapidly transforming into a new set of technologies which better align with the creation, deployment, and maintenance of cloud-based web applications. This marks a fairly dramatic shift away from on-site, client-server types of applications. Corresponding shifts are occurring in DevOps (development + operations), project management, and release processes. Correspondingly, developers need to be more conversant with–and possess a deeper knowledge of–development technology, as well as processes. In order for organizations to truly keep pace with this evolution and enable strategic investments, both research and development (R&D) and learning and development (L&D) divisions must become better aligned and collaborate more closely.
In late 2016/early 2017, DI conducted the industry’s second developer learning survey, anticipating that the results would provide insights necessary for R&D and L&D to bridge the collaboration gap. This survey was an updated version of our 2014 Developer Survey, in which our goal was to determine where and how the developer training landscape was changing.
The 2017 DI Developer Survey was conducted between November 2016 and March 2017. Its purpose was to assemble an in-depth narrative of the training needs of software developers as well as industry trends. Nearly 800 software-development professionals from 200+ companies across more than 40 industries and 50 countries provided feedback regarding their current work environments, technology trends, and the ways in which they learn best. Our survey respondents hold a variety of positions including software developers, project managers, and development managers.
The data and recommendations in this 2017 DI Developer Survey Report are intended to better equip L&D managers and software development executives in the development of comprehensive learning strategies which will:
The survey was structured around three broad areas: Developer Learning Behaviors, Developer Training Preferences, and Developer Training Requirements. Both closed- and open-ended questions were asked in order to collect consistent, quantitative responses, while delving into qualitative responses regarding underlying issues.
Developer Learning Behaviors
It is important to understand what motivates developers to undertake technical training as this directly influences material retention and instruction. A significant portion of the survey focused on developer-learning influencers and preferences as well as current methods of acquiring new skills.
Overwhelmingly (68%), developers are motivated by curiosity or a desire to improve their skills, indicating a deeply personal motivation and enthusiasm for their craft. HR and L&D executives need to be cognizant of these key drivers when designing comprehensive learning programs. Though not often included in a traditional learning plan, providing developers with time to explore new technologies can greatly impact innovation, employee retention, and job satisfaction.
Developer Learning Motivations
Curiosity and skill improvement are not the only motivators.
Learn tips, tricks, best practices, etc. to deepen my overall knowledge and abilities.
Staying up on the latest and greatest technologies for my career.
Current or Future Need
Learn how to use a technology for an upcoming project/feature.
Learn how to fix something I am struggling with on my project.
Developers want to succeed in both current and upcoming projects (future and current needs–24%). These findings suggest that the type and structure of the learning (examples, labs, use cases, etc.) should be as relevant as possible in order to be most impactful and keep developers engaged throughout the learning experience.
Preferred Learning Method
Survey respondents indicated that their most preferred methods of learning are reading and instructor-led training (ILT) with their peers (Group ILT) in a classroom setting. When combined, these two types of learning accounted for 54% of all responses.
Developers With Fewer Than
5 Years of Experience
Developers With More Than
5 Years of Experience
The least favorite methods of learning are attending meetups (2%), virtual ILT (2%), attending conferences (6%), and mobile self-paced learning (1%).
For training to be well-received by developers, L&D managers should focus on providing learning opportunities that are slightly more traditional (ILT), yet highly customized, role based, and lab intensive.
While the current training industry trends such as mobile learning and VILT are poorly received by developers, they may have a place in an organization’s learning plan. For example, in order to create awareness of a new technology, a VILT in the form of an “infomercial” may be a good use of this training modality. However, the survey suggests that adopting mobile learning or VILT as a way to save money will likely result in wasted training dollars and disaffected employees. Before adopting either of these less-popular strategies, executives should identify the motivation for the modality, the desired outcome, and the significance of that outcome on the business.
Time Spent Learning
Respondents revealed that an average of seven hours per week of their own time is devoted to learning. Given the average salary of a senior-level engineer, this “learn-on-your-own” approach works out to be a costly model, to the tune of $18,750 per engineer per year.
On the surface, this model may appear to be a commendable and responsible personal investment on the part of the engineers. More than likely, however, this learning is done on the job, creating technical debt when measured against project plans and software quality.
Many software companies recognize that developers tend to be innovative when they’re given time to explore technologies that may not relate to their current daily tasks. As an example, Google allows developers to spend up to 20% of their work hours on approved special projects in an area unrelated to their current tasks. This figure should be included when calculating any anticipated loss of productivity due to formal training, as this time is effectively a sunk cost that is already being absorbed by the organization.
This practice of self-improvement should be encouraged throughout every engineering organization. Engineers whose companies acknowledge that the activity already exists and support the practice through company-sponsored resources (e.g., Pluralsight) feel supported in their jobs.
Organizations with online libraries that provide analytics or usage reports should perform quarterly reviews of these data in order to identify, organize, and regularly schedule ILT-based learning opportunities focused on the most-desired skills. These resources, combined with special projects or hackathons, create a collaborative environment of “learning and doing.”
Learning research continually supports the notion that this type of comprehensive approach cements new skills and leads to rapid productivity gains.
Online Learning Resources (Video vs. Text)
In addition to instructor-led training, developers have a strong preference for reading and watching videos. We asked developers to name their go-to resources for learning new technologies and keeping their skills up to date.
91% of respondents said they use Stack Overflow, a Q&A site featuring over 10 million questions/answers from all aspects of programming. Stack Overflow is part of Stack Exchange, a network of Q and A sites on different topics such as Linux, Information Security, and general Computer Science. 41% said they use miscellaneous Stack Exchange sites as part of their self-teaching.
71% reported using GitHub as a learning resource. GitHub is the largest code hosting repository site and features wikis, discussions, and documentation for many major open source projects.
Online Learning Resources
Video learning sites were less popular than text-based sites but still quite popular with our respondents. 29% reported taking a course through Coursera, a university course hosting site. 20% said they had learned using Pluralsight’s IT-centric video course library.
Developer Training Preferences
As ILT continues to be a major preferred source of learning for developers, understanding its current use and perceived value is important in devising new and effective comprehensive learning programs.
Frequency of Formal Training
The lack of formalized training opportunities within the technology sector is alarming. Respondents reported that 71% of employers do not provide formal training opportunities for their software developers on an annual basis. The ATD State of the Industry 2014 report indicates that employees across all industries and professions logged an average of 36 hours of training annually in 2013.
The technology labor market is experiencing the lowest unemployment rate in years–recruiting and retaining talent is becoming consistently more difficult.
Course Taken Through Employer
The 2017 DI Developer Survey confirms that engineers feel better-equipped and more productive (54%) when they receive formal training.
Organizations which continually invest in engineer learning and development enable engineers to leapfrog their competitors through innovation and the invention of disruptive technologies and software solutions. Over the next 6-9 months, the level of training provided as a key benefit to developers will also directly influence the motivation and retention of key workforce members.
Managers experiencing high rates of turnover or difficulty in attracting quality talent would do well to evaluate the learning and growth opportunities provided to their engineers. An additional investment in training is easily recouped in savings associated with lower attrition rates.
Types of Formal Training
Those respondents who received formal training were asked in-depth questions about the learning solution in which they participated.
Overwhelmingly, ILT was the most commonly utilized method of developer training. Moreover, 61% of the time, this type of instruction is private or dedicated to a group of individuals from a single company.
The trend toward increasing training through ILT is expected to continue, evolving to meet industry expectations. As software becomes more complex, traditional ILT will gradually shift to more project-oriented training focused on creating nearly real-time, production ready hands-on skills.
Duration of Formal ILT Training
When designing a comprehensive learning program, L&D managers should consider the ideal length for ILT courses. Feedback from DI students consistently shows that on average, a 4.5-day ILT course is the most popular with a technical audience.
Typically, these preferences stem from the belief that a longer course will:
1) Provide additional opportunities for labs
2) Be more in-depth in terms of content
3) Address any variations in skill level between the class participants.
Based on our experience training over 49,000 developers, DI recommends a three-day training duration as the best balance between cost and new skill acquisition. However, in order for a three-day course to be effective, at a minimum it should be customized to participant roles and skill levels, as well as any software the group is building. In addition, L&D managers should, whenever possible, try to minimize variations in the skill level of the attendees in order to maximize the learning impact. A workshop format is best for those critical and complex projects that mandate a five-day course. Rather than the rote, highly structured, traditional lecture/lab format, a workshop focuses on producing working code. An effective workshop should be structured around writing code (55% of the time, at minimum), architectural discussions (15-20% of the time), and lecture (any remaining time).
Perceived Value of Formal ILT
Studies have shown that training materials and concepts must have a high level of perceived value in order to be internalized by students. To determine whether developers place a high value on ILT as a learning method, the survey asked respondents if they believed ILT helped them be more effective in their current job roles.
Over 90% said instructor-led training “helped me do my job better.” Another way to measure the potential effectiveness of a learning solution is to determine whether or not the students would recommend the solution to their peers. More than 77% recommended the training they received to their peers. These responses are ringing endorsements from an audience generally known to be pragmatic and critical.
These data indicate that developers overwhelmingly believe the best method of learning new technologies is a private ILT setting with their peers, where they can explore the implications of new technologies and work out together how best to apply what they learn to current (or upcoming) projects.
Recommended Their Training Course to a Peer
Learning Style Preferences
Next, the survey explored learning-style preferences and the balance of hands-on (lab) time vs. lecture (presentation) time–69% of developers responded that they preferred allocating 50-80% of the course to hands-on interaction.
A significant portion of any technical training should provide developers with the opportunity to interact with new technologies. DI students are encouraged to bring their laptops to training courses so they can retain the code (or other artifacts) created during the course. Sample code frequently becomes the basis for real-world solutions and helps fast-track the implementation of new technologies.
Developer Training Requirements
A significant portion of the survey was devoted to understanding the topics developers feel they will need to learn over the next 3-15 months. The survey explored areas such as operating environments, programming technologies, automated build and quality assurance (QA) tools, as well as developer-related “soft skills”, e.g., software architecture and development-process methodologies.
Areas of Desired Skill Improvement
Developers were asked to rate their own proficiency in several areas, followed by the level at which they would like their skills to be in these areas. The gap between current and desired states, known as the performance improvement gap, indicates where developers feel they need improvement. The desire to improve a perceived deficiency is a powerful motivator for a student.
Developers equate skill improvement with career advancement. From this perspective, managers should understand that employees are unlikely to simply go through the motions during learning opportunities. Rather, developers are active and willing participants who extract knowledge and value from training.
Strong Demand for Core Front-End Skills
The front-end world is one of the fastest evolving areas of software development. The framework or library du jour changes often.
Angular 2 is the newest version of the extraordinarily popular Angular framework. Google’s Angular team caused a great deal of controversy when they released Angular 2, since t is considerably different from Angular 1 and there is no clear migration path. Companies who had built significant portions of their product using Angular 1 required near complete rewrites of their product for Angular 2.
Online Learning Resources
Frustration aside, Angular 2 fixed many issues that made Angular 1 slow or confusing. As a result, Angular 2 is a complete production-ready framework, and we firmly believe Angular 2 adoption will grow steadily.
20% of respondents indicated interest in learning React Native, which lets developers use React to develop mobile applications. This allows companies to reuse most of their web application code when developing mobile apps. There are solutions such as Ionic and Cordova which allow companies to write mobile apps using their existing HTML5/Angular apps, but these apps often have a slower user experience when compared to “native” mobile applications.
Developers reported a significant training need for Gulp (19%), Grunt (15%), and Webpack (13%). Grunt and Gulp are both known as “task runners” which automate and execute development tasks. Webpack has all the power of Grunt/Gulp, combined the ability to handle other common development tasks such as Module bundling. We foresee the demand for Webpack training to grow along with its market share.
Many of the newer libraries such as React are based on ES6. Browsers don’t support ES6 natively yet, but transpilers (source code translators) such as Babel are currently the go-to method for using ES6. Most new application development from 2017 onward will be built using ES6 and we therefore recommend companies provide ES6 training for all of their front-end developers.
Core Big Data Technologies and Concepts
Big data is about finding insights through analysis of large datasets. These datasets are sufficiently large or unique such that they require special technologies to perform their analysis (i.e., Excel, SPSS, and SQL aren’t powerful enough). There are numerous big data technologies and we found a strong training need for these technologies and the broader concepts around big data–27% of developers reported a training need for broader “big data concepts.”
Training Needed for Big Data and Data Technologies
Training Needed by Programming Language
27% of respondents reported a training need for Hadoop, a collection of hardware and software solutions for processing large datasets. Hadoop often utilizes MapReduce, a computing model/method to get multiple machines to team up on a data analysis task. Using Hadoop and MapReduce, the tasks of processing/analyzing a large dataset are performed across many computers simultaneously.
13% reported a training need for Apache Spark, a computing framework which manages the data processing tasks performed by Hadoop. Spark ensures the right computers are working on the right task when analyzing a big dataset. Spark is faster than MapReduce and is likely to supplant it eventually.
15% reported a training need for Scala, a programming language which runs on the Java Virtual Machine. Scala is a general purpose language but is often utilized when implementing big data strategies. Scala is primarily written in a “functional programming” manner and is typically taught in combination with Spark.
Python was hands down the language in the highest demand–46% of respondents expressed interest in Python training. Python’s popularity is a testament to its versatility and its syntax, which is considered by many to be more readable than other languages. Its syntax has made Python one of the most adored programming languages (see, e.g., The Zen of Python). Python is used in many contexts such as web development, data analysis/science, scientific computing, machine learning, internet of things, general purpose scripting, and as a first language for teaching the art of programming.
We believe that Python training courses teach developers a powerful new tool while also keeping them engaged through the pure enjoyment of working with the language. Python possesses the rare combination of being useful as well as enjoyable to read and write.
Many of the programming languages for which developers desire training are core popular languages according to the TIOBE index and other indices of programming language popularity. Most of those languages have been in use for 15-30+ years. However, we did find that developers are interested in learning two newer languages: Go (29%) and Swift (20%).
Swift is a language created by Apple in 2014 for developing iOS (and MacOS) apps. It is intended to be safer, more concise, and more readable than Objective-C. Swift is one of the fastest growing languages in terms of popularity (and lands in the top 15 on the TIOBE index after just two years).
Both Swift and Go are languages developed by expert teams at large companies, and as such, there are enormous amounts of expertise and resources behind them. Both languages were crafted intentionally in order to address the common pitfalls of their ancestors.
Swift is likely to become the future of native mobile app development. Go isn’t quite as popular but could grow to become a popular server-side programming language.
We believe it’s still early for both of these languages, but both are highly regarded by developers and are likely to see more use each year. As a result, we recommend adding Go and Swift courses to your training offering/calendar.
DevOps and Continuous Integration Technologies
DevOps is an industry/methodology which blends application development and systems operations tasks. This means that the same people who build the software also help deploy and maintain it. We found strong demand for training in DevOps technologies such as Chef (13%), Puppet (13%), and Docker (41%).
Chef and Puppet
Chef and Puppet are “configuration management” languages which are used to set up and configure your infrastructure, and both are able to integrate with cloud-based platforms such as AWS to automatically provision and configure new machines.
Docker is open-source software used to automate the deployment of applications inside software containers. A container wraps a piece of software in a complete filesystem that contains everything it needs to run, such as code, tools, libraries, etc. Wrapping software in a container ensures that it will always run the same, regardless of the environment in which it runs.
Training Need for Software Engineering Process Skills
Continuous Integration and Deployment
We also identified a strong demand for continuous integration and continuous deployment technologies, which often fit under the broader DevOps umbrella. Continuous integration and continuous deployment are the practices of continuously testing and deploying new code for a software project. Continuous integration and continuous deployment help teams iterate quickly while simultaneously maintaining code quality. 32% of developers expressed interest in learning about Jenkins, which is an open source continuous integration server written in Java and formerly known as Hudson.
Training Need for Software Engineering Process Skills
This survey can be used to better understand general industry trends; however, in order to be ahead of the curve, managers must be aware of the ways in which their organizations align with the survey results, and how trends affect their organizations specifically.
Learning and Development managers need to work together to share the strategies behind their software development programs, and to determine how best to support those initiatives. Managers should understand
1) Which new technologies are being considered and why
2) Potential implementation timelines
3) What level of difficulty to expect while transitioning from one technology to another
4) Which major architectural changes may be on the horizon
5) Any new skills required for implementation
Administer a short, anonymous survey to the development teams. Are they spending their time coding or on production and process issues? Remember, most developers value productivity and are looking for ways to reduce repetitive tasks. Find out which agile tools they are currently using and which tools they would like to learn. Likewise, look into current and desired build and automation tools and methodologies. Improving efficiency and productivity will help your organization thrive, and will demonstrate a clear return on training investments.
When determining learning objectives for software developer training, try writing them in an agile use case format. For example, write a statement such as: “As a [developer role], I need to be able to write a/an [application type], so that [objective] can be implemented.” Writing objectives using this template should help align the team in regards to goals, objectives, and the success criteria for training.
In short, design learning solutions as if designing a software product:
- Identify needs, objectives, and requirements
- Define a budget, project plan, and rollout plan
- Identify solutions, consolidate a purchase
- Deliver using a phased, agile rollout
- Pivot and adjust
We Can Help
Thanks to the results of our 2017 DI Developer Survey, we recognize that the best learning occurs when it is relevant to the three “P”s: your people, your project, and your development platform. With all the cookie-cutter solutions available, it’s a challenge to find a learning solution that fully meets the needs of your team–that’s why we customize each and every one of our learning solutions to fit your people, your project, and your productivity goals.
Our goal is to continually help HR, L&D, and R&D managers better equip their development teams with the skills needed to be the best at what they do. We are adept at creating company-specific learning plans designed to meet the strategic business initiatives, as well as enable efficient and effective technology adoption, helping your company stay competitive and retain its top talent.
DI has trained more than 49,000 developers over the last 13 years. We have achieved a satisfaction rating of 98%, based on student feedback collected through post-course evaluations.
If your organization is ready to better equip your development staff, but are unsure where to begin, we can help. Our proven process of evaluating needs, designing a learning plan, and constructing solutions will help you understand the needs of your team and ultimately deliver relevant and comprehensive solutions.
DI delivers blended learning solutions by coupling highly customized expert-led training with subscriptions to Pluralsight–a powerful combination which ensures your developers get the training they need.