Occupation Description:
Software Engineers work on complex computer science solutions, develop scalable, distributed software systems, and collaborate on smaller projects that have universal appeal.
Program Description:
Google’s U.S. Apprenticeships are paid work-and-study programs that provide on-the-job training at Google and related technical instruction through Multiverse, Google’s apprenticeship training provider. Upon program completion, apprentices receive a nationally-recognized credential certified by the U.S. Department of Labor. Google’s U.S. apprenticeships range from 12-20 months. They begin with a virtual onboarding experience, followed by an immersive bootcamp to build a foundational understanding of the profession. Apprentices will then join a Google team to train on-the-job, while continuing to engage in track-specific learnings and career workshops throughout the program.
Program Objective:
Apprenticeships contribute towards the development of digital skills by providing opportunities for work and study. They can serve as part of a journey to a meaningful career. During the program, apprentices get exposure to different areas and teams at Google while receiving external training and developing their professional skills on the job.
Learning Outcomes:
- Internship in Information Technology, Software Development: The apprentice will be able to analyze a complex computing problem and apply operating system administration principals and other relevant disciplines to identify solutions; analyze a complex computing problem and apply principles of programming and other relevant disciplines to identify solutions; evaluate the requirements for a specific system configuration and recommend solutions; create the program to meet the objectives; function effectively as a member or leader of a team engaged in activities appropriate to the task; identify and analyze user needs then create, integrate solutions in the computing-based project; demonstrate the application of knowledge and skill sets acquired from the courses and workplace in the assigned job function; demonstrate critical thinking and problem-solving skills by analyzing underlying issue/s and apply to project challenges; recommend ideas to improve work effectiveness and efficiency by analyzing requirements then considering viable options.
- Scripting Languages: The apprentice 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.
- Computer Applications: The apprentice will be able to create, organize, and manage electronic files and folders; create, modify, and maintain a word processing , spreadsheet, database, and presentation documents; use functions, formulas, and charts in documents, spreadsheets, and databases; and utilize applications and terminology effectively.
- Introduction to Databases: The apprentice will be able to 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.
- Introduction to UNIX: The apprentice 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.
- Management Information Systems: The apprentice will be able to communicate using information system terminology; work with human resources to develop requirements requiring systems analysis; interpret maintenance data; categorize different data types; and analyze the data collection process.
- Introduction to Web Design: The apprentice will be able to understand the structure and organization of webpages and websites; design basic web pages using html, css, and a scripting language; describe some ethical and legal issues related to web page design; use a hosting environment to upload and edit web pages; build and edit HTML 5.1 HTML syntax and tags; use a scripting language to handle events and HTML elements, and describe and use of web application development frameworks.
- Introduction to Software Engineering: The apprentice will be able to describe different software development processes; describe and list the software development life cycle which includes software planning, requirements capture, design, build, documentation, testing, deployment, and maintenance; explore relationships between software engineering and other engineering disciplines (example electrical engineering, computer engineering, industrial engineering,......); modify basic software programs and verify functionality of all changes; troubleshoot and debug changes made to an existing software program; adhere to good coding standards and practices; analyze the functionality and performance of software application programs; use traditional software development process and testing tools, such as configuration management, interpreters/compilers and debuggers; summarize both ethical and professional responsibilities of a software engineer; convey technical material through oral presentation and written reports.
- Business Communications: The apprentice will be able to demonstrate presentation skills; prepare effective business messages for culturally diverse audiences; communicate by written, oral, and visual methods.
- Decision Making: The apprentice 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.
- Web Frameworks: The apprentice will be able to identify the industry’s most popular client-side and server-side web frameworks and the programming languages used in each; describe how client-side web framework are used to speed up development time and create cross-platform, accessible, responsive, and dynamic user-interfaces and web sites; describe how server-side web frameworks are used to speed up development time and create dynamic web sites and applications; use a client-side web framework to create a web page/site; use sql and no-sql databases, such as SQLite/MongoDB, in the creation and, in support, of the framework; use a server-side web framework (web application framework) to create a web page/site; demonstrate the use of web frameworks to create cross-platform web sites, e.g. desktops, mobile devices, etc.; utilize an Application Programming Interface (API) to add functionality to a web page; use Node.JS/Python/Ruby scripting languages; and utilize the command line environment in Linux/UNIX.
- Software Development: The apprentice will be able to describe different software development processes; participate in the software development life cycle which includes software planning, requirements capture, design, build, documentation, testing, deployment, and maintenance; understand the importance of capturing software requirements; make engineering design tradeoffs; work in a team to develop software; design and interface software modules; adhere to good coding standards and practices; investigate software quality and software quality assurance; work with version control, configuration management, unit/regression testing, issue tracking, and debugging tools; explore issues of software maintenance, reuse, and extendibility; look up standard software libraries (IEEE, SWBOK, ACM, etc); professional, ethical and social responsibility of a software engineer; evaluate the impact of potential solutions to software engineering problems in a global society, using the knowledge of contemporary issues and emerging software engineering trends, models (example unified modeling language), tools, and techniques; convey technical material through oral presentation and written reports.
- Portfolio Review: The apprentice will be able to display responsible decision-making and personal accountability; develop and employ effective communication techniques; demonstrate ethical and moral practices; develop critical and reflective thinking abilities; demonstrate an understanding of group dynamics and effective teamwork; exhibit knowledge and awareness of diversity and resiliency; identify personal values of self and others; implement a variety of development activities in family care and personal financial management; and develop a commitment to continuing personal reflection and assessment.
- Introduction to Programming: The apprentice 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.
General Topics:
- Bootcamp
- RESTful API apps with user accounts
- MTA Frontend: HTML, CSS & JS, Software Development Lifecycle
- Full-Stack Projects
- Learning Launchpads
- Career Readiness Workshops