Blog

Ryan Moscoe

Software Engineer | AI Prompt Engineer | Ninja

3 Reasons Training Pros Make Great Software Engineers

Oops! Something went wrong. Please try again later.

May 17, 2023

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.

Boxes arranged in a staircase pattern showing a progression from Requirements Gathering to Design, Implementation, Testing, Deployment, and Maintenance.

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.

Boxes in a staircase pattern showing a comparison of the waterfall SDLC model with ADDIE, the waterfall instructional design 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.

Arrows in a loop showing a repeating progression from Requirements to Design, Develop, Test, and Deploy

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.

A diagram of a progression from Analysis to a repeating loop consisting of Design, Develop, and Implement/Evaluate

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.

Hexagons arranged in a chain showing a progression from Empathize to Define, Ideate, Prototype, Test, and Assess

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.

May 17, 2023

Oops! Something went wrong. Please try again later.