Blog
Ryan Moscoe
Software Engineer | AI Prompt Engineer | Ninja
- Blog
- Software Engineering
-
3 Reasons Training Pros Make Great Software Engineers
3 Reasons Training Pros Make Great Software Engineers
Oops! Something went wrong. Please try again later.
Changing careers has become quite common. Although no one can say exactly how many careers the average person will have, almost everyone agrees with the World Economic Forum assessment that it is becoming normal to have multiple careers. According to the Pew Research Center, 53% of adults who quit a job in 2021 had done so to change careers. Given the fact that the average person has 12.4 jobs by age 55, 53% of job changers also being career changers could lead to an average of six or seven careers.
Career changers are traditionally thought to bring a foundation of soft skills to their new careers, but not much in the way of hard skills. For example, one might expect that a person transitioning from a career in training and development to software engineering would have excellent communication and presentation skills, as well as the ability to craft clear, effective documentation. These skills are all important for software engineering, but none of them are useful in the actual writing of code.
However, it turns out that training and development professionals also come with a number of functional skills, such as requirements gathering and UX/UI design. This article explores how a career in training and development equips a professional with three specific skills—development methodologies, UX/UI design, and control flow—that translate directly to software engineering.
Methodologies
Software engineers often refer to the Software Development Lifecycle (SDLC), which is a process intended to result in low-cost, time-efficient development of high-quality software. The traditional model for the SDLC is the cascade—or waterfall—method, which is a linear progression through the steps required to design, develop, and maintain software.

Cascade/waterfall model of the Software Development Lifecycle
Training and development professionals use a similar process when developing a training course. Since the 1970s, the dominant model for instructional design has been ADDIE, an acronym for Analysis, Design, Development, Implementation, Evaluate. This cascade methodology maps very closely to the software development cascade model.

Comparison of cascade/waterfall software development and instructional design models
Most software today is developed using an Agile methodology, which is an iterative process of prototyping designed to achieve working software more quickly and reduce risk by allowing for small failures along the way, rather than a spectacular failure at the end.

Agile software development model
In recent years, the training and development profession has appropriated the Agile methodology directly from software engineering. The software engineering and instructional design versions of the Agile methodology both begin with an analysis to identify requirements. Each model then iterates through design, development, and some sort of testing or evaluation process. These steps repeat until the project meets its success criteria.

Agile instructional design model
UX/UI Design
The Agile methodology is not the only concept the training and development field has borrowed from software engineering. Historically, training meant a group of learners in a classroom with an instructor or one or more learners receiving on-the-job training from an expert. Those modalities are still important, of course, but now training also includes asynchronous elearning courses and interactive tutorials on websites. With the advent of these digital delivery methods, training and development professionals needed to ensure learners could not only access the content, but focus on learning the content, rather than wrestling with the interface. Hence, the training and development field adopted the discipline of User Interface (UI) Design.
Professionals soon realized that the UI of an elearning course or website tutorial was only one piece of a learner’s journey. A learner might begin with the realization that he or she needed some knowledge or skill, access and log into a Learning Management System, search for an elearning course or look for an assigned course, request that course, and launch it, all before ever encountering the UI of the course itself. They began to consider the entire user experience (UX), not just for elearning courses, but for all learning activities. Thus, the training and development profession incorporated the discipline of UX Design to ensure the learner remained at the center of every design effort.
In my training and development career, I attended multiple workshops on UX Design and was guided by the Stanford Design School Model, shown below.

The Stanford Design School model of User Experience Design
Control Flow
Control flow is the order in which the commands in a program are executed. By default, commands are executed in sequential order, from top to bottom. However, software engineers frequently introduce structures that alter the order in which commands are executed, such as functions, conditional statements, and loops. The exact syntax for these structures may differ from one programming language to another, so what is important to software engineers is understanding the concept of these structures. Training and development professionals use these same structures when developing elearning courses.
In programming, a function is a reusable block of code that is executed only when called, or triggered, usually by something such as a user action or a condition. A training and development professional may not explicitly use the term function, but he or she routinely creates triggers within a course that result in a particular action—such as changing the state of an object on the screen or navigating to another part of the course—in response to a specific user action or condition. A training and development professional is, therefore, predisposed to think in terms of functions, even if he or she has not learned to write code.
A conditional statement tells the computer to take a particular action if a given condition is met, and (optionally) take a different action otherwise. Talent development professionals use this same logic frequently when developing an elearning course. For example, if a learner answers a question correctly, the course should show positive feedback; otherwise, it should show constructive feedback. Similarly, the concept of adaptive learning means the course should be tailored to the learner’s needs. Most often, this is achieved by allowing the learner to take a pre-test and using the results to determine which content to show the learner. The elearning developer must create variables to represent each learning objective, set the variables based on the learner’s performance on the pre-test, and then use conditional triggers to show the related content if a variable’s value indicates the learner has not already met that objective.
Conditional statements are also used frequently in interactive website tutorials. At any point in a given workflow, the next step might depend on which page of the website the user is viewing, which elements appear on the page (which, in turn, might depend on the user’s security permissions or other factors), or which action the user chooses to take at the current step. As a result, talent development professionals need to configure steps in the tutorial to appear only if certain conditions are met.
A loop forces the computer to repeatedly execute a particular set of instructions until a specified condition is met. As with functions, a talent development professional does not necessarily use the term loop, but he or she does create loops in a variety of circumstances. For example, a learner might be given a certain number of chances to answer a question correctly. Likewise, a course might be assigned repeatedly (on an annual basis, for example). Therefore, when a talent development professional starts learning to write code, the concept of control flow is already familiar.
Conclusion
On the surface, writing code does not appear to have much in common with instructional design or training facilitation. Someone with a background in training and development who learns to write code and wants to transition to a software engineering career would be expected to possess certain soft skills—which should not be discounted—but recruiters and managers could be forgiven for believing that a career in training and development would not prepare a person with any technical skills used in software engineering.
In reality, training and development professionals use a variety of technical skills associated with software engineering. This article examined three of those skills in particular: development methodologies, UX/UI Design, and control flow.
In my training and development career, I often worked closely with the IT Department. On one occasion, an IT Director expressed surprise that I had a Scrum board at my desk in order to track and display the status of my instructional design projects. On another occasion, when I showed a couple of software engineers the work I was doing to develop an interactive tutorial for a web application they were building, they remarked that my work on that project was very similar to what they did on a daily basis. What I’ve learned in the course of my career transition is that far from offering merely a foundation of soft skills, a career in training and development is excellent preparation for a career in software engineering.
Oops! Something went wrong. Please try again later.