competency in skills and knowledge through assessment tests,
but are not required to complete a specific number of hours.
Software Analyst (Computer Programmer)
WTIA Workforce Institute (APPRENTI)
Work Process Content
On the Job Training

Project Definition
11
- Identify and capture stakeholder requirements using customer interviews and surveys.
- Build multiple use cases to describe each action that a user will take in the new system.
- Understand and contribute to requirement specification documents.
- Understand and contribute to requirement specification documents.
- Interpret functional requirements.
- Participate in team meetings.
- Estimate effort and complexity for assignments.
- Prioritize assigned work.
- Participate in code quality review.
- Write acceptance criteria.
- Demo software functionality using wireframes or mockup prototyping
Software Design
8
- Work with stakeholders to understand requirements.
- Specify and scope hardware and system requirements.
- Identify and mitigate security threats and vulnerabilities that may arise from interactions with other systems, external and legacy code.
- Identify logic changes.
- Identify user interface changes.
- Identify process changes.
- Identify data changes.
- Track assigned work responsibilities across team members.
Development and Implementation
10
- Develop and write software code.
- Complete programming tasks.
- Configure programming environment.
- Maintain existing feature(s).
- Create new feature(s) as directed by senior team members.
- Write efficient queries to produce desired results.
- Implement computational algorithms for workflows and calculations.
- Write code comments and annotations or engage functional programming techniques as appropriate.
- Implement design patterns.
- Create necessary data models.
Software Testing
16
- Work with development team to create test plans.
- Perform unit testing and fix errors or bugs in a test-driven development model.
- Write automated tests.
- Select manual/black box testing strategies.
- Supervise user/customer beta testing and feedback.
- Identify and prioritize (find and fix) flaws, bugs, and design problems.
- Replicate and validate problems.
- Gather related information and data about the problems.
- Select a resolution strategy.
- Modify software programs to improve performance and/or debug.
- Execute security tests.
- Execute unit test functionality.
- Execute integration tests.
- Execute user acceptance tests.
- Test software performance.
- Perform revision, repair, or expansion of existing programs to increase operating efficiency or adapt to new requirements.
Deployment and Maintenance
9
- Maintain version control and code repositories.
- Resolve merge conflicts.
- Create and update technical and user documentation.
- Perform training for end users.
- Package and deploy applications (publish to server).
- Review logs, telemetry, and user feedback reports to identify potential issues or flaws.
- Keep apprised of changes to external systems that may break functionality or compatibility with the software product, such as APIs or data sources.
- Ensure compliance with licensing requirements.
- Ensure distribution platform operation (e.g., website, kiosk, retail distributors).
Perform other duties as assigned
Related Instruction Content
Training Provider(s):
Introduction to Computer Science
60
1. Data types – strings, numbers and boolean logical operators 2. Data structures – arrays and objects 3. Expressions, blocks, branches, and loops 4. Persistence – Local storage, session storage and JSON (JavaScript Object Notation) 5. Code structure – Code organization, common patterns and project scaffolding 6. Object-oriented programming a. Encapsulation b. Static classes c. Inheritance d. Polymorphism
Web Development with HTML and CSS
60
1. HTML (Hypertext Markup Language) a. Semantics, syntax, and structure b. Classes, IDs, attributes c. Forms 2. CSS (Cascading Style Sheets) a. Style – Typography, color, design and animations b. Layout – Box model, grid, fluid/flex and responsive c. Syntax – Selectors, how “cascading” works and pseudo-classes 3. JavaScript a. Fundamentals – Variables, syntax, style, REPL (Read-Eval-Print Loop), data types and data structures b. Control Flow – “for” loops, “if” statements, “if…else” statements and “while” and “do while” c. Functions – Declarations, expressions, parameters & arguments and function scope d. Objects – Object oriented programming, properties, methods and constructors
MVC (Model View Control) Design: Controllers
50
1. Routing – URL (Universal Resource Locator) design and Page.js a. URL design b. Page.js 2. Javabeans, JSP, JSTL 3. Rest a. Noun: Resource representations – .json, .html b. Verb: Method – GET, POST, PUT 4. External APIs 5. Modularity 6. Local data a. JSON – Validation, parse and stringify b. localStorage/ sessionStorage – getters and setters c. WebSQL (Web Structured Query Language) i. Schema – Create Table and Drop Table ii. CRUD – Select, Insert, Update, Delete and clauses iii. Joins & Relations – Normalization and foreign keys 7. Remote data a. AJAX (Asynchronous JavaScript and XML)– jQuery methods and callback management b. Web request-response cycle i. URL structure – Protocol, [Sub]Domain, Path, Anchor and Params ii. Request object – URL, Method and Headers iii. Response object – Status, Headers and Body 8. Functional programming – Map/ reduce/ filter/ forEach, scope, closures and first-class functions
Development & Testing Best Practices
50
1. Agile software development a. User stories b. Pair programming c. Standup meetings d. Retrospectives e. Deployment process – Development vs production environment, environment variables, custom domains and Heroku f. Git & GitHub i. Fork – Upstream sync and pull request ii. Advanced collaboration – Issues, Gitflow (Pull requests, Branch and Merge) iii. Organizations 2. Software best practices a. Object oriented programming b. Debugger/Breakpoints c. Industry perspectives d. Dependency management e. Styleguides and linters f. JavaScript fundamentals 3. Software Testing a. Types – Unit, functional, integration, performance, acceptance and regression b. Tools – Pytest & Python unittest, factories & fixtures and mocks & stubs c. TDD (Test Driven Development)– Outside-in refactors and tests as design tool
Understanding and Using Application Development Tools
40
1. Git a. Version control systems – Distributed VCS (Veritas Cluster Server), Branch, Merge and Diff b. Github – Gitflow, Fork and Pull requests c. Config – Remotes and Default behaviors 2. IDE/Text editor a. Syntax highlighting & linting b. Discoverable shortcuts c. Scope awareness d. Extensibility e. Power editing – Multiline edits, pasteboard history and rapid file switching f. Symbol autocomplete 3. Introduction to Networks a. Clients/servers b. TCP/IP, IP addresses, DNS c. HTTP, TLS methods 4. Operating system a. File management and I/O b. Admin permissions c. Package management d. Local web server e. Task supervision 5. Command line a. Navigation b. Secure connections & private keys c. File content control
Data Structures & Algorithms
40
1. Linear data structures – Linked lists, Stack, Queue 2. Tree data structures – Binary heap, priority queue, binary search tree and trie trees 3. Graphs – Directed, undirected, weighted and Shortest path algos 4. Sorting algorithms – Merge, Insertion, Quicksort and Radix 5. Machine learning & data science algorithms a. Unsupervised learning – k-means b. Supervised learning i. k-nearest neighbor ii. Linear regressions c. Pandas
Professional Software Engineering and Deployment
20
1. Software engineering a. Application architecture i. Modularization & Resource Oriented Architecture ii. Encapsulation of domain logic b. Project management i. Planning & estimating ii. Tools & documentation iii. Licensing 2. Deployment a. Automation i. Continuous Integration ii. Server monitoring & logging b. Configuration management c. Release management d. Security & data integrity i. Hashing and encryption ii. Authorization, access control, privilege escalation e. Platform i. Dedicated ii. Virtualized iii. Abstracted
Java Programming
160
1. Syntax and statements a. Variables, operators, fundamental data types 2. Objects and classes a. Initialization and cleanup b. Access control c. Casting 3. Controlling execution of code a. Inheritance 4. Design considerations a. 12 factor design b. Overloading/overriding c. Exceptions d. Classes e. Controlling application environment f. Collections g. Comments and documentation 5. Interfaces a. User-facing/frontend UI b. Human-computer interaction models c. Remote/backend 6. Java Spring a. Annotations b. Inversion of Control c. Dependency injection d. Beans e. RESTful APIs f. JSON/HTTP methods g. Cloud computing h. Security (authentication, authorization, access control, design patterns) 7. SQL and Java a. Writing queries b. Grouping/sorting c. Table joining, inserts, updates, and deletes d. Collections e. SQL injection/XSS 8. Java Generics 9. Microservices