Software Developer Apprenticeship

Overview

Software Developer Overview

Software Developer apprentices are taught how to build and test simple, high-quality code across front end, logic and database layers. They'll be able to interpret design documentation and specifications.

To achieve their Software Developer apprenticeship, apprentices must:

  • Demonstrate competence against two knowledge modules: Software Development Methodologies and Software Language. These are assessed by examinations set by the British Computer Society and regulated by Ofqual. Apprentices must pass both modules.
  • Submit a portfolio of evidence showing how they have applied the knowledge from these modules to projects and activities in their workplace.
  • Complete their formal End Point Assessment, which comprises: a synoptic project to showcase knowledge and skills from across the apprenticeship; a review of their portfolio of evidence; and a final interview with an independent EPA assessor.

Successful Software Developer apprentices go on into roles such as a Web Developer, Application Developer, Mobile App Developer, Games Developer and Software Developer.

Technical Competencies

Upon completion of their Software Developer apprenticeship, individuals will be able to:

  • write good quality code (logic) with sound syntax in at least one language
  • develop effective user interfaces for at least one channel
  • effectively link code to the database/data sets
  • test code and analyse results to correct errors found using either V-model manual testing and/or using unit testing
  • apply structured techniques to problem solving, can debug code and can understand the structure of programmes in order to identify and resolve issues
  • create simple data models and software designs to effectively communicate understanding of the program, following best practices and standards
  • understand and create basic analysis artefacts, such as user cases and/or user stories
  • understand and utilise skills to build, manage and deploy code into enterprise environments
  • operate at all stages of the software development lifecycle, with increasing breadth and depth over time with initial focus on build and test.
  • apply good practice approaches according to the relevant paradigm (for example object oriented, event driven or procedural)
  • interpret and follow:
    • software designs and functional/technical specifications
    • company defined coding standards or industry good practice for coding
    • testing frameworks and methodologies
    • company, team or client approaches to continuous integration, version and source control
  • respond to the business environment and business issues related to software development
  • operate effectively in their own business', their customers' and the industry's environments
  • apply the maths required to be a software developer (e.g. algorithms, logic and data structures)

Technical Knowledge and Understanding

Upon completion of their Network Engineer apprenticeship, individuals will understand:

  • and operate at all stages of the software development lifecycle
  • the similarities and differences (taking into account positives and negatives of both approaches) between agile and waterfall software development methodologies
  • how teams work effectively to produce software and contributes appropriately
  • and apply software design approaches and patterns and can interpret and implement a given design, compliant with security and maintainability requirements
  • and respond to the business environment and business issues related to software development
  • and apply the maths required to be a software developer (eg algorithms, logic and data structures)

Underpinning Skills, Attitudes and Behaviours

  • logical and creative thinking skills
  • analytical and problem solving skills
  • ability to work independently and to take responsibility
  • can use own initiative
  • a thorough and organised approach
  • ability to work with a range of internal and external people
  • ability to communicate effectively in a variety of situations
  • maintain productive, professional and secure working environment

Qualifications

Apprentices will achieve one BCS qualification and one vendor qualification.

Funding

£18,000

Level

This is a level 4 apprenticeship.

Professional Recognition

This apprenticeship is recognised for entry onto the register of IT technicians confirming SFIA level 3 professional competence and those completing the apprenticeship are eligible to apply for registration.

Duration

The duration of this Firebrand apprenticeship is 16 months. Because this period involves both training and the final End Point Assessment (some of which must be carried out in the workplace), employers need to ensure the apprentice’s contract covers the full programme duration.

Registration to the Register of IT Technicians (RITTech)

Once apprentices have completed their apprenticeship they are officially recognised by the British Computer Society (BCS) for entry onto the Register of IT Technicians, confirming SFIA level 3 professional competence.

Curriculum

Software Developer curriculum

Firebrand’s apprenticeship programme covers all mandatory knowledge and skills outlined in the apprenticeship standard. Every Firebrand apprentice attends a suite of market-leading training programmes, to cover knowledge required from the apprenticeship standard. This training is then fleshed out through a package of selected online learning, which also allows apprentices to explore any topics of particular interest/importance to them in greater depth.

How are apprentices taught?

Apprentices receive a range of market-leading training as part of their qualification – typically between three and five courses per apprenticeship - giving them fundamental skills at speed.

We'll deliver all the knowledge apprentices need to learn for each knowledge module in the Standard through our Lecture | Lab | Review delivery. Apprentices then attend a Syllabus Review Session to cover the knowledge content covered in the apprenticeship standard.


Knowledge Module 1: Software Development Methodologies

Upon completion of this Knowledge Module, Software Developer apprentices will:

  • Understand and can operate at all stages of the software development lifecycle
  • Understand the similarities and differences (taking into account positives and negatives of both approaches) between agile and waterfall software development methodologies
  • Understand how teams work effectively to produce software and contributes appropriately

Read through the full curriculum for Firebrand's classroom-based training and supporting online learning modules below.

This online session, led by a Subject Matter Expert, will focus on core concepts that apprentices will need to learn to get the most from their next residential training course. It provides practical information and/or study activities to help apprentices gain the prerequisite knowledge needed for the course.

This online session, led by a Subject Matter Expert, will focus on core concepts that apprentices will need to learn to get the most from their next residential training course. It provides practical information and/or study activities to help apprentices gain the prerequisite knowledge needed for the course.

Topic 1: Understand the software development lifecycle

Learners will understand that software development does not occur in isolation. Learners will gain an understanding of the stages in the lifecycle of software development and how these stages are likely to be performed by professionals in related disciplines. In particular learners will understand that core function of a software developer is to implement code to a given specification which will fulfil a set of functional requirements.

1.1 The role and scope of software development and its relationship to other associated disciplines

  • Describe the stages of developing software products through a development lifecycle:
  • Requirements gathering and analysis (separating functional and non-functional requirements)
  • Software design and prototyping including design trade-offs and diagramming
  • Choice of development languages and tools
  • Appropriate testing methodologies including validation and verification of meeting the requirements gathered
  • Deployment into production and ongoing maintenance
  • Describe the relationship of software development with other disciplines such as project management, programming, testing, service management, change and configuration management

Learners will understand why it is important for software to be implemented using a structured software development methodology and the benefits of following the chosen method. Learners will be able to discuss why these benefits are important to other professionals such as project managers, and to the sponsors of the software development project, and for those who will support the software once it is has been deployed.

1.2 Explain the importance of the following in a procedural (Linear) /staged (Iterative) software development lifecycle, e.g.:

  • Standardisation
  • Methodical approach
  • Analysis of each step
  • Collation of information
  • Ensuring correct design
  • Cost control
  • Robust evaluation to aid future development

Topic 2: Understand the similarities and differences between two software developments methodologies in common use in industry

In this topic, learners will learn to describe the advantages and disadvantages of at least two software development methodologies in common use in industry. In comparing these methods, learners will be able to explain when a particular method would be preferable for a specific software implementation projects, and what the consequences of choosing the wrong method might be. The learner will also be able to describe the different team roles and responsibilities of at least two methods.

2.1 Summarise software development methodologies, application, advantages and disadvantages.

  • Principles and rationale
  • Structure and stages
  • Advantages
  • Disadvantages
  • Selection criteria
  • Team roles and responsibilities

Learners will learn the specific differences between at least two common industry software development methodologies. Learners will learn that different methods related to wider business issues beyond the scope of software implementation such as the focus on working product (Agile) over completeness of process (Waterfall).

2.2 Compare and contrast software development methodologies

  • Differences e.g. :
  • Structure
  • Phases with completion of each phase prior to moving onto the next phase of the cycle
  • Agile: Ability to work with uncertainty and volatility and focus on working products
  • Comparison e.g.:
  • Individuals and interactions over processes and tools
  • Working products over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
  • Agile recognises that while there is value in processes and tools, there is often more value in individuals and interactions

Topic 3: Understand how to respond appropriately to the business environment and business issues related to software development

Learners will understand that software development typically takes place in a wider business which places constraints upon the software development process. The learner will be able to explain the types of constraints that may typically arise, and how they can be mitigated.

3.1 Describe the business environment related to software development

  • Business environment pressures:
  • Are there any specific project requirements such as contractual constraints – time, cost, quality, compliance, regulatory, innovation criteria?
  • Are there configuration management and change control constraints?
  • Are there opportunities to promote alternative practices – Agile over waterfall, rapid prototyping, modularity over performance

Learners will learn how to describe the business issues related to software development and how to mitigate them. In particular, learners will understand the importance of engaging with project management as business owners of the software development project.

3.2 Understand how to respond to the business environment and business issues related to software development

  • Engagement with project management:
  • Understand how to identify potential risks and flag them
  • Understand how to identify where additional technical resource will be required
  • Support effective cost estimation
  • Accurately Forecast effort (time) required

Topic 4: Understand why teams must work effectively to produce software

Learners will learn to explain a range of common roles found within an industry software development function. One person may hold multiple roles within an organisation. Core functions of business analysis, software design, software implementation, testing and architecture will be discussed.

4.1 Describe the roles and responsibilities within the software development and implementation lifecycle

Business analysts

  • Requirements analysis and capture
  • Resource estimation and planning
  • Requirements validation (including scope, documenting assumptions and exclusions)
  • Requirements engineering
  • Requirements tracking
  • Separation of functional and non-functional requirements
  • Specification development

Designers - Design a software model that fulfil the specifications:

  • Refinements of specifications
  • Use of diagramming tools
  • Use of formal and mathematical specification approaches
  • Choice of system architectures
  • Different design approaches and trade-offs such as, but not limited to: modularity v. performance
  • Choice of structured design
  • Documentation of design

Developers

  • Implementation choices – development language and tools
  • Debugging methods
  • Performance measurement
  • Validation and verification – ensuring the code meets the design specification

Testers

  • Quality assurance
  • Black-box and white-box testing
  • Formal proof models
  • Static and dynamic analysis tools

Technical architects

  • Deployment choices and architectures
  • Configuration management and change control

Learners will learn that software development in industry is seldom an individual effort and that to be an effective software development professional, it is important to work as a member of a development team. This will require the learner to understand the wider business context and how they can engage with it through their peers and managers.

4.2 The importance of working as a member of an effective development team

Describe how key roles and responsibilities can be used to form teams. Key Roles e.g.

  • Project manager
  • Business analysts
  • Designers
  • Developers
  • Testers
  • Technical architects

Describe factors that influence effective team working and their importance including internal and external factors e.g.:

  • Communication
  • Composition
  • Interpersonal relationships
  • Maturity of the team
  • Skill set
  • Leadership style
  • Resources
  • Climate and environment of the organisation
  • Sponsor
  • Software Process Management (3h 43minutes)*
  • Secure Software Development (3h 15minutes)*
  • Design Patterns (3h 13minutes)*
  • Clean Architecture: Patterns, Practices and Principles (2h 12minutes)*

Total time: 12 hours 23 minutes


Knowledge Module 2: Software Language

Upon completion of this Knowledge Module, Software Developer apprentices will:

  • Understand and apply software design approaches and patterns and can interpret and implement a given design, compliant with security and maintainability requirements
  • Understand and apply the maths required to be a software developer (e.g. algorithms, logic and data structures)

Read through the full curriculum for Firebrand's classroom-based training and choose one of the following software languages below. The chosen curriculum is supported by an online learning module.

This online session, led by a Subject Matter Expert, will focus on core concepts that apprentices will need to learn to get the most from their next residential training course. It provides practical information and/or study activities to help apprentices gain the prerequisite knowledge needed for the course.

This online session, led by a Subject Matter Expert, will focus on core concepts that apprentices will need to learn to get the most from their next residential training course. It provides practical information and/or study activities to help apprentices gain the prerequisite knowledge needed for the course.

This online session, led by a Subject Matter Expert, will focus on core concepts that apprentices will need to learn to get the most from their next residential training course. It provides practical information and/or study activities to help apprentices gain the prerequisite knowledge needed for the course.

OCA Java SE 8 Programmer

Java Basics

  • Define the scope of variables
  • Define the structure of a Java class
  • Create executable Java applications with a main method; run a Java program from the command line; including console output.
  • Import other Java packages to make them accessible in your code
  • Compare and contrast the features and components of Java such as: platform independence, object orientation, encapsulation, etc.

Java Data Types

  • Declare and initialise variables (including casting of primitive data types)
  • Differentiate between object reference variables and primitive variables
  • Know how to read or write to object fields
  • Explain an Object's Lifecycle (creation, "dereference by reassignment" and garbage collection)
  • Develop code that uses wrapper classes such as Boolean, Double, and Integer.

Operators and Decision Constructs

  • Use Java operators; including parentheses to override operator precedence
  • Test equality between Strings and other objects using == and equals ()
  • Create if and if/else and ternary constructs
  • Use a switch statement

Arrays

  • Declare, instantiate, initialise and use a one-dimensional array
  • Declare, instantiate, initialise and use multi-dimensional array

Loops

  • Create and use while loops
  • Create and use for loops including the enhanced for loop
  • Create and use do/while loops
  • Compare loop constructs
  • Use break and continue

Methods and Encapsulation

  • Create methods with arguments and return values; including overloaded methods
  • Apply the static keyword to methods and fields
  • Create and overload constructors; including impact on default constructors
  • Apply access modifiers
  • Apply encapsulation principles to a class
  • Determine the effect upon object references and primitive values when they are passed into methods that change the values

Inheritance

  • Describe inheritance and its benefits
  • Develop code that demonstrates the use of polymorphism; including overriding and object type versus reference type
  • Determine when casting is necessary
  • Use super and this to access objects and constructors
  • Use abstract classes and interfaces

Handling Exceptions

  • Differentiate among checked exceptions, unchecked exceptions, and Errors
  • Create a try-catch block and determine how exceptions alter normal program flow
  • Describe the advantages of Exception handling
  • Create and invoke a method that throws an exception
  • "Recognise common exception classes (such as NullPointerException, ArithmeticExcpetion, ArrayIndexOutOfBoundsException, ClassCastException)"

Java API Classes

  • Manipulate data using the StringBuilder class and its methods
  • Creating and manipulating Strings
  • Create and manipulate calendar data using classes from java.time.LocalDateTime, java.time.LocalDate, java.time.LocalTime, java.time.format.DateTimeFormatter, java.time.Period
  • Declare and use an ArrayListof a given type
  • Write a simple Lambda expression that consumes a Lambda Predicate expression
  • C# Beginners Tutorial*
  • C# from Scratch (3h 11minutes)*
  • Object-Orientated Programming Fundamentals in C# (4h 22minutes)*
  • C# Fundamentals with Visual Studio 2015 (5h 21minutes)*
  • C# Equality and Comparisons (4h 51minutes)*
  • C# Collection Fundamentals (5h 56minutes)*
  • HTML5 Fundamentals (3h 47minutes)*
  • HTML5 Fundamentals (2h 13minutes)*
  • Semantic HTML (1h 49minutes)*
  • Javascript from Scratch (1h 52minutes)
  • Introduction to CSS (2h 9minutes)
  • Front End Web Development: Get Started (3h 47minutes)
  • Front End Web Development: HTML5, CSS and Javascript (3h 4minutes)
  • Microsoft Professional Program for Front End Web Development
  • HTML5 Fundamentals (3h 47minutes)*
  • HTML5 Fundamentals (2h 13minutes)*
  • Semantic HTML (1h 49minutes)*
  • Building HTML5 and Javascript Applications (4h 50minutes)*
  • Java Fundamentals: The Java Language (7h 45minutes)*
  • Java Fundamentals: The Core Platform (7h 25minutes)
  • Java Fundamentals: Collections (4h 2minutes)
  • Java Fundamentals: Generics (3h 53minutes)

Total time: 70 hours 21 minutes


Additional Courses

Choose from one of Firebrand's accelerated courses listed below to add to this apprenticeship programme. These courses are delivered when apprentices have submitted evidence to their End Point Assessment gateway.

These additional courses support apprentices in achieving a Distinction grade at End Point Assessment.


Or choose two from any of Firebrand's courses listed below to add to this apprenticeship programme:

Prerequisites

Who can enroll on a Software Developer apprenticeship?

End Point Assessment

How are Software Developer apprentices assessed?

Progression Plan

How do Software Developer apprentices progress?

Exams

Exams

While apprentices benefit from new digital skills they can use in their job, almost all digital apprenticeships that Firebrand offer provide the chance to gain industry recognised qualifications.

Apprentices gain qualifications through either BCS or Vendor specific exams where applicable. These qualifications add to a professional career and can be used to help move seamlessly between roles in the IT industry.

All relevant exams that will be achieved during this apprenticeship are listed below:

  1. BCS Level 4 Diploma in Software Development Methodologies

Upon selection, the apprentice will also sit one of the additional examinations below:

  1. Microsoft Programming in C#
  2. Microsoft Programming in HTML5, CSS and Javascript
  3. Oracle Certified Java Programmer

Latest Reviews from our students