Occupation Description:
Application Developer on Z Apprentices at IBM contributes to programming solution construction, implementation, and system integration, delivering high-quality solutions to clients in response to varying business requirements. As part of a cross-functional team, apprentices play a vital role with stakeholders, sponsor users, product owners, and design and technical teams in designing and developing business-critical functionality for IBM’s flagship z/OS operating system.
Program Description:
The IBM Apprenticeship Program lasts approximately 12 months and is an official registered apprenticeship recognized by the U.S. Department of Labor. Apprentices work as part of a larger team of experienced developers and mentors in an interactive, collaborative environment. The apprenticeship consists of two parts – technical learning and on-the-job training.
Technical learning helps apprentices build foundational knowledge in software design, testing, agile principles, IBM Design Thinking, DevOps, continuous delivery, debugging, and architecture under the IBM Z environment. The apprenticeship includes certifications like IBM z/OS Mainframe Practitioner and Interskill Mainframe Application Programmer.
During on-the-job training, apprentices apply agile principles and practices, business and professional acumen skills, and technical knowledge, and they leverage IBM Design Thinking practices to demonstrate high standards of problem-solving behaviors. Apprentices build strong connections with the development team to provide top-tier products and solutions to our clients and contribute to the design and development of z/OS applications. Application Developers on Z Apprentices gain the skills to be well-rounded developers who demonstrate strong communication skills, excellent teamwork and collaboration behaviors, solid technical skills in z/OS, and model good feedback behaviors. The program is an excellent pathway for a career within IBM’s z/OS Software organization.
Program Objective:
The objective of this apprenticeship is to prepare apprentices for a career as an Application Developer on Z.
Learning Outcomes:
- Introduction to Computers: The student will be able to describe basic operations of computer hardware and software, perform basic Operating System operations, process information using word processing, databases, spreadsheets, email, and related tools, identify types of storage, describe the use of files and folders, use the Internet and online resources, and apply security and privacy concepts in all computer activities.
- Introduction to UNIX: The student will be able to describe the purpose and functions of a computer operating system; explain the function of UNIX-based commands; identify information about a computer's files using UNIX-based commands; identify network characteristics and status using the UNIX-based command line; and perform computer management functions.
- Introduction to Programming: The student will be able to create programs using fundamental concepts; identify programming's role in cyber operations; create flow charts and design and implement pseudo-code to solve problems; identify variable types and strings; analyze, create, and compile programs; describe the use of classes and objects in programming; and explain vectors and create functions in programming languages.
- Scripting Languages: The student will be able to discuss the basic techniques used to create scripts for automating administrative tasks, employ regular expressions in processing text, demonstrate the use of scripting languages to manage applications using networks, explain how to use scripting language to process other application's data; and show the use of scripting developing applications using networks and databases.
- Introduction to Python Programming: The student will be able to utilize the Python programming language format and structure in coding; understand and utilize Python programming concepts, including lists, dictionaries, classes, and loops; use Python libraries and tools; debug basic Python programs; and employ Python as a means for developing information security tools.
- Introduction to Databases: The student can input data into forms, download data sets for analysis, develop SQL reports, administer updates to the database management system (DBMS), and integrate the database with external systems.
- Information Security Management: The student will be able to identify the required physical, personal, and procedural security for an automated information system; identify threats to information assurance; perform physical security of computer hardware and software; develop enforceable security policies, and implement procedures to prevent fraud, waste, and abuse.
- Business Communications: The student will be able to demonstrate presentation skills, prepare effective business messages for culturally diverse audiences, communicate by written, oral, and visual methods, and compose clear and concise business letters, reports, memoranda, and emails.
- Decision-Making: The student will be able to use creative thinking to solve problems, develop strategies for risk analysis and risk mitigation, conduct situational analysis, use decision support systems, conduct backward planning, allocate resources to resolve problems, and apply ethics to problem-solving.
- Introduction to Project Management: The student will be able to discuss project management using project terminology, prepare a project management plan, allocate time, personnel, and other resources to enable timely completion of a project, monitor and control project progress against the baseline; conduct risk management processes; manage stakeholder expectations; employ project management principles and processes; manage and control change, and close the project.
- Web Frameworks: The student will be able to explain the purpose and benefits of web frameworks, identify popular web frameworks and their ecosystems, set up and configure an essential web framework environment, create and deploy a simple web application using a web framework, utilize built-in components and tools in web frameworks; integrate third-party libraries and services into a web framework application; apply best practices for security and performance optimization in web frameworks.
- Introduction to Java Programming: The student will be able to describe fundamental Java concepts like syntax and data types, write, compile, and execute basic Java programs, implement control structures such as loops and conditionals, define and use classes and objects, manage exceptions and handle errors, utilize Java libraries and frameworks for everyday tasks, and develop and test simple Java applications following best coding practices.
- Introduction to Cloud Computing: The student will be able to explain core cloud computing concepts and benefits, identify different cloud service models (IaaS, PaaS, SaaS), distinguish between public, private, and hybrid cloud deployments, set up and configure services on popular cloud platforms, deploy and manage applications in a cloud environment, implement cloud storage solutions and data management practices, and apply security and compliance best practices in cloud computing.
- Data Science: The student will be able to define key data science concepts and components; perform data collection, cleaning, and preprocessing; explore and visualize data using appropriate tools; apply statistical methods and machine learning algorithms to analyze data, interpret and communicate analysis results effectively, use programming languages like Python or R, and develop and evaluate data-driven models and solutions.
- Introduction to Artificial Intelligence: The student will be able to explain fundamental AI principles and concepts, identify standard AI techniques and their applications, implement basic AI algorithms like search and optimization, develop and train machine learning models using appropriate tools, apply AI methods to solve real-world problems, evaluate the performance and limitations of AI models, and discuss ethical considerations and societal impacts of AI.
- Introduction to Software Engineering: The student will be able to describe the software development lifecycle and its phases, apply software engineering principles and methodologies, perform requirements analysis and specification for projects, design software systems using appropriate modeling techniques, implement software solutions following best practices and standards, test and validate software to ensure quality and reliability, and manage projects while collaborating effectively in development teams.
- Internship in Software Development: The student will be able to apply theoretical knowledge in practical software development projects, collaborate with professionals in real-world work environments, contribute to the design, implementation, and testing of software applications, utilize industry development tools and technologies, develop problem-solving and critical-thinking skills in a professional context, document and communicate project progress and outcomes effectively, and reflect on their internship experience to identify areas for professional growth.
- Agile Project Management: The student will be able to explain the principles and values of Agile methodologies, implement practices like Scrum and Kanban, facilitate Agile ceremonies, manage and prioritize product backlogs, track and measure project progress with Agile metrics, collaborate and communicate effectively within Agile teams, and adapt Agile practices to various project contexts and challenges.