Johannesburg, 24 Nov 2023
In The Matrix, Morpheus stated: “There is a difference between knowing the path and walking the path.” Lately, this quote keeps surfacing because it resonates so strongly with my experiences in Chillisoft and DevFluence.
The increasing demand for software developers, the growing technical hype and many government incentives ensures that the training business model remains lucrative and thriving. There are many claims of “producing industry-ready developers”, yet there is a burgeoning number of educated and unemployed software developers. This makes me question, given all the training and incentives, why is the developer skills shortage gap widening? Are industry, academia and training service providers on the same page?
I believe that in order to produce industry-ready developers, there must be a better understanding and expectations from all stakeholders, including the novice software developer. We need to understand what is required to build the tools and mindset for a software development career. We need to understand the difference between coding and preparing an individual for a software development career. This press release's purpose is to share Chillisoft’s knowledge about the foundational skills and mindsets that must be developed at the start of a software developer’s career.
Firstly, every individual is unique and moves through the software development journey at their own pace. The pace is determined by an individual’s world view that is continually being impacted by fluctuating factors such as cultural habits, social and family pressure, their drive to persevere, sources of their motivation, relative success and their learning ability. Consequently, it is critical for organisations to accept that the pace of learning and software development fluctuates and that the organisation needs to set the limits of the band of fluctuation. It is also important to know that a software developer’s career is more prone to crashing and burning if the individual does not have a solid scaffolding and habits.
Software developers enter the working world as apprentices, interns or juniors. Most of the new entrants are usually optimistic, raring to go and have chosen software development because they enjoy it. All of them see it as a high growth career choice. Generally the novices who are employed were among the most talented in their classes at college or university, so it’s usually a shock to them when they start work and realise that they have no pragmatic experience about how to make software work. As a novice, the individual must still learn how to debug code, problem solve, focus their attention, work within a limited time period, work with other developers, follow a software development methodology and various other factors in addition to developing technical skills.
The challenge of organisations is in teaching them how to build a solid grounding of good habits. This requires exposure to a disciplined, consistent production environment. Software, as we all know, is stressful, so in order to create a safe, consistent environment, you need to look at your systems that enables and creates a consistent, safe environment. Some of the mechanisms are:
- Focused and routine agile ceremonies.
- Modelling acceptable behaviour.
- On-the-job learning and coaching.
- Modelling and developing meta cognitive skills (thinking about thinking), teaching them to structure their thoughts and thinking.
- Teaching and coaching self-regulation.
It also requires an understanding of the theory of the zone of proximal development. The learning and production environment for a novice requires:
- Access to a software developer who has the skills and knowledge to guide the novice.
- Scaffolding that supports and guides the novice, providing him or her with the appropriate assistance.
- Social interaction to allow novices to work on soft skills (such as communication and collaboration within a team of mixed seniority) and technical skills.
- Moderating expectations of what novices can achieve.
It is important to understand that a novice does not have domain knowledge and that their learning is intense and could be exhausting. It is critical that the instructor knows how to break tasks into subtasks that are at the appropriate level. If the task is too complex, a novice will become despondent. At this stage of their career, they may be unable to ask questions or to even explain why they are stuck.
Novices generally do not have self-efficacy, and the situation is exacerbated by their work experience, which is characterised by uncertainty and anxiety during their first few months. As a novice progresses, he or she becomes aware of how much they do not know. This period is filled with self-doubt and the individual can find it overwhelming. A novice needs to feel safe enough to request help. Although sometimes even though there is safety in the workplace, social and cultural factors that are deeply ingrained results in a reluctance to ask for help. We also found that it is much easier to onboard and train novices on “green field” projects than them working on legacy code.
Training software developers is daunting and it requires instructors who have walked this path and who are patient and love teaching. Preparing a student for a career in software development requires more than surface level coding and soft skills development. In a nutshell, you can train a mass of individuals to write code, but it is not the same as training and preparing individuals for a software development career. Whose job is it to prepare a novice for a career in software development?
Whose job is it to build a strong enough scaffolding and foundation in a novice that can withstand the onslaught of the different work cultures, dynamics, pressure and expectations?
Chillisoft’s training and consulting company, DevFluence, has published training courses on Udemy and we are actively developing and training a pipeline of skills for international and local companies. Please contact us at firstname.lastname@example.org if you require assistance with developing training material, bespoke courses or building a pipeline of skilled juniors.