├── .gitignore ├── Andelan ├── ASK- Feedback │ └── README.md ├── Distributed Teamwork │ └── Google Hangouts for Distributed Teamwork │ │ └── README.md ├── EPIC Values │ ├── Collaboration │ │ └── README.md │ ├── Excellence │ │ └── README.md │ ├── Integrity │ │ └── README.md │ ├── Passion │ │ └── README.md │ └── README.md ├── Making Good First Impressions │ ├── Communication Coaching and Giving Feedback.md │ └── Managing the Distributed Kickoff Call.md ├── README.md └── Writing Blog Posts │ └── Writing Technical Posts │ └── README.md ├── Bootcamp ├── Curriculum │ ├── 01 - Version Control │ │ └── README.md │ ├── 02 - Agile Methodology │ │ └── README.md │ ├── 03 - Programming Logic │ │ └── README.md │ ├── 04 - Object Oriented Programming │ │ └── README.md │ ├── 05 - Test Driven Development │ │ └── README.md │ ├── 06 - Databases │ │ └── README.md │ ├── 07 - HTTP and Web Services │ │ └── README.md │ ├── 08 - FrontEnd Development │ │ └── README.md │ ├── 09 - Growth Mindset │ │ └── README.md │ ├── 10 - Relationship Building │ │ └── README.md │ ├── 11 - Asks Questions │ │ └── README.md │ ├── 12 - Motivation and Commitment │ │ └── README.md │ ├── 13 - Adaptability │ │ └── README.md │ ├── 14 - Seeks Feedback │ │ └── README.md │ ├── 15 - Speaking to be Understood │ │ └── README.md │ ├── 16 - Writing Professionally │ │ └── README.md │ └── 17 - Git │ │ └── README.md └── README.md ├── D0 ├── README.md └── Technical Capabilities- Pre-Simulations │ ├── 1 - Adaptability │ └── README.md │ ├── 10 - TDD and Debugging │ └── README.md │ ├── 11 - UI:UX Design │ └── README.md │ ├── 12 - Version Control │ └── README.md │ ├── 13 - Web Development │ └── README.md │ ├── 14 - Web Fundamentals │ └── README.md │ ├── 15 - Writing Professionally │ └── README.md │ ├── 16- Open Source │ └── Open Source.md │ ├── 2 - Command Line Scripting │ └── README.md │ ├── 3 - Organizational Functional Awareness │ └── README.md │ ├── 4 - Programming Conventions │ └── README.md │ ├── 5 - Programming Fundamentals │ └── README.md │ ├── 6 - Relationship Building │ └── README.md │ ├── 7 - Self Learning │ └── README.md │ ├── 8 - Software Engineering Process │ └── README.md │ ├── 9 - Speaking to Be Understood │ └── README.md │ └── README.md ├── D1 ├── D1 Android │ ├── 01 - Android Programming Basics │ │ └── README.md │ ├── 02- Android Material Design Concepts │ │ └── README.md │ ├── 03- Developing an Android UI │ │ └── README.md │ ├── 04- Designing User Feedback │ │ └── README.md │ ├── 05- User Interaction through Activities and Intents │ │ └── README.md │ ├── 06- Navigation and Fragments │ │ └── README.md │ ├── 07- Writing Multithreaded Applications │ │ └── README.md │ ├── 08- Testing your Android Application │ │ └── README.md │ ├── 09- Working with Databases │ │ └── README.md │ ├── 10- Persistence and Data Storage │ │ └── README.md │ ├── 11- Services and Content Providers │ │ └── README.md │ ├── 12- Sensors and Location Services │ │ └── README.md │ ├── 13- Network Operations for Android │ │ └── README.md │ ├── 14- Publishing your Android Application │ │ └── README.md │ └── README.md ├── D1 Design │ ├── README.md │ └── Visual Design Fundamentals │ │ └── README.md ├── D1 DevOps Engineer │ ├── Assessment │ │ ├── .gitkeep │ │ ├── 01 - Linux-Unix Basics │ │ │ ├── README.md │ │ │ └── tests │ │ │ │ ├── assessment.bats │ │ │ │ └── test_helper.bash │ │ └── 02 - Networking │ │ │ └── README.md │ ├── Curriculum │ │ ├── 01 - Fundamentals of DevOps │ │ │ └── README.md │ │ ├── 02 - Command Line -UNIX │ │ │ └── README.md │ │ ├── 03- Networking │ │ │ └── README.md │ │ ├── 04 - Configuration- Change Management -amp- Tools │ │ │ └── README.md │ │ ├── 05 - Build Management │ │ │ └── README.md │ │ ├── 06 - Release Engineering and Build Management │ │ │ └── README.md │ │ ├── 07 - Continuous Integration and Continuous Deployment │ │ │ └── README.md │ │ ├── 08 - Virtualization │ │ │ └── README.md │ │ ├── 09 - SaaS- Paas- IaaS │ │ │ └── README.md │ │ ├── 10 - Monitoring - Logging Deployments │ │ │ └── README.md │ │ ├── 11 - Backup - Restore │ │ │ └── README.md │ │ ├── 12 - Securing Deployments │ │ │ └── README.md │ │ ├── 13- System Maintenance │ │ │ └── README.md │ │ └── Key DevOps Tools │ │ │ └── README.md │ └── README.md ├── D1 Developer │ ├── Curriculum │ │ ├── 01 - Active Listening │ │ │ └── README.md │ │ ├── 02 - Adaptability │ │ │ └── README.md │ │ ├── 03 - Asks Questions │ │ │ └── README.md │ │ ├── 04 - Attention to Detail │ │ │ └── README.md │ │ ├── 05 - Creativity │ │ │ └── README.md │ │ ├── 06 - Cultural Awareness │ │ │ └── README.md │ │ ├── 07 - Decision Making │ │ │ └── README.md │ │ ├── 08 - Focus & Concentration │ │ │ └── README.md │ │ ├── 09 - Seeks Feedback │ │ │ └── README.md │ │ ├── 10 - Holistic & Big Picture Thinking │ │ │ └── README.md │ │ ├── 11 - Managing Expectations │ │ │ └── README.md │ │ ├── 12 - Motivation & Commitment │ │ │ └── README.md │ │ ├── 13 - Organizational Functional Awareness │ │ │ └── README.md │ │ ├── 14 - Problem Solving & Critical Thinking │ │ │ └── README.md │ │ ├── 15 - Reading to Understand │ │ │ └── README.md │ │ ├── 16 - Relationship Building │ │ │ └── README.md │ │ ├── 17 - Speaking to Be Understood │ │ │ └── README.md │ │ ├── 18 - Stakeholder Management │ │ │ └── README.md │ │ ├── 19 - Team Dynamics │ │ │ └── README.md │ │ ├── 20 - Writing Professionally │ │ │ └── README.md │ │ ├── 21 - Agile Process │ │ │ └── README.md │ │ ├── 22 - Algorithms │ │ │ └── README.md │ │ ├── 23 - Patterns (MVC) │ │ │ └── README.md │ │ ├── 24 - Data Structures │ │ │ └── README.md │ │ ├── 25 - Test-Driven Development │ │ │ └── README.md │ │ ├── 26 - Discrete Math & Algebra │ │ │ └── README.md │ │ ├── 27 - Order of Operations │ │ │ └── README.md │ │ ├── 28 - Object-Oriented Programming │ │ │ └── README.md │ │ ├── 29 - HTML & CSS │ │ │ └── README.md │ │ ├── 30 - Version Control │ │ │ └── README.md │ │ ├── 31 - 2 & 3 Tier Architecture │ │ │ └── README.md │ │ ├── 32 - Security │ │ │ └── README.md │ │ ├── 33 - Databases │ │ │ └── README.md │ │ ├── 34 - API │ │ │ └── README.md │ │ ├── 35 - Software Development Environments │ │ │ └── README.md │ │ ├── 36 - UI-UX │ │ │ └── README.md │ │ ├── 37 - End-to-End Testing │ │ │ └── README.md │ │ ├── 38 - Debugging │ │ │ └── README.md │ │ ├── 39 - Mobile Development │ │ │ └── README.md │ │ ├── 40 - Estimating │ │ │ └── README.md │ │ ├── 41 - Text Editors │ │ │ └── README.md │ │ ├── 42 - Command Line (Unix) │ │ │ └── README.md │ │ ├── 43 - Git │ │ │ └── README.md │ │ ├── 44 - Spreadsheets │ │ │ └── README.md │ │ ├── 45 - Calendar │ │ │ └── README.md │ │ ├── 46 - Docs │ │ │ └── README.md │ │ ├── 47 - Pivotal Tracker │ │ │ └── README.md │ │ ├── 48 - Slack │ │ │ └── README.md │ │ ├── 49 - Skype (Hangouts) │ │ │ └── README.md │ │ ├── 50 - Client Vision Alignment │ │ │ └── README.md │ │ ├── 51- Running Product Demos │ │ │ └── Running Product Demos.md │ │ ├── 52- Identifying and Admitting Mistakes │ │ │ └── README.md │ │ └── General Resources │ │ │ └── README.md │ └── README.md ├── D1 Java │ ├── Curriculum │ │ ├── 01- Java Environment Basics │ │ │ └── README.md │ │ ├── 02- Java Programming Basics │ │ │ └── README.md │ │ ├── 03- Java as an Object Oriented Language │ │ │ └── README.md │ │ ├── 04- Java Classes and Objects │ │ │ └── README.md │ │ ├── 05- Exceptions in Java │ │ │ └── README.md │ │ ├── 06- Data structures in Java │ │ │ └── README.md │ │ └── 07- Java - Files │ │ │ └── README.md │ └── README.md ├── D1 JavaScript │ ├── Curriculum │ │ ├── 01- Introduction to JavaScript │ │ │ └── README.md │ │ ├── 02- Getting Started with JavaScript │ │ │ └── README.md │ │ ├── 03- Variables - Operators │ │ │ └── README.md │ │ ├── 04- JavaScript Data Types │ │ │ └── README.md │ │ ├── 05- Functions │ │ │ └── README.md │ │ ├── 06- Control Flow │ │ │ └── README.md │ │ ├── 07- Arrays │ │ │ └── README.md │ │ ├── 08- Regular Expressions in JavaScript │ │ │ └── README.md │ │ ├── 09- JavaScript Objects │ │ │ └── README.md │ │ ├── 10- Prototypes │ │ │ └── README.md │ │ ├── 11- Writing Clean JavaScript Code │ │ │ └── README.md │ │ ├── 12- Essential JavaScript Design Patterns │ │ │ └── README.md │ │ ├── 13- The JavaScript DOM │ │ │ └── README.md │ │ ├── 14- Security- Debugging- and Exception Handling │ │ │ └── README.md │ │ ├── 15- Test Driven Development in JavaScript │ │ │ └── README.md │ │ ├── 16- Working with Events and Event Listeners │ │ │ └── README.md │ │ ├── 17- jQuery │ │ │ └── README.md │ │ ├── 18- Introduction to Node JS- Working with Node Modules │ │ │ └── README.md │ │ ├── 19- Working with HTTP Concepts in Node.js │ │ │ └── README.md │ │ ├── 20- Working with Databases │ │ │ └── README.md │ │ ├── 21 - Functional Programming in JavaScript │ │ │ └── README.md │ │ └── README.md │ └── README.md ├── D1 PHP │ ├── D1 Laravel │ │ ├── Curriculum │ │ │ ├── 1 - MVC │ │ │ │ └── README.md │ │ │ ├── 10 - Forms and Helpers │ │ │ │ └── README.md │ │ │ ├── 11 - Views │ │ │ │ └── README.md │ │ │ ├── 12 - Asset Pipeline │ │ │ │ └── README.md │ │ │ ├── 13 - Events │ │ │ │ └── README.md │ │ │ ├── 14 - Errors & Logging │ │ │ │ └── README.md │ │ │ ├── 15- Patterns - Repository Pattern │ │ │ │ └── README.md │ │ │ ├── 16- Mail │ │ │ │ └── README.md │ │ │ ├── 17- Queues │ │ │ │ └── README.md │ │ │ ├── 2 - Generators │ │ │ │ └── README.md │ │ │ ├── 3 - Authentication │ │ │ │ └── README.md │ │ │ ├── 4 - Routing & Middleware │ │ │ │ └── README.md │ │ │ ├── 5 - Artisan Commands │ │ │ │ └── README.md │ │ │ ├── 6 - Controllers │ │ │ │ └── README.md │ │ │ ├── 7 - Sessions and Cookies │ │ │ │ └── README.md │ │ │ ├── 8 - Migrations │ │ │ │ └── README.md │ │ │ └── 9 - Eloquent and Query Builder │ │ │ │ └── README.md │ │ └── README.md │ ├── D1 PHP │ │ ├── Curriculum │ │ │ ├── Module 1 - Language Basics │ │ │ │ └── README.md │ │ │ ├── Module 10 - Security, Debugging and Exception Handling │ │ │ │ └── README.md │ │ │ ├── Module 11 - File Handling │ │ │ │ └── README.md │ │ │ ├── Module 2 - Data Structures │ │ │ │ └── README.md │ │ │ ├── Module 3 - Test Driven Development Using PHPUnit and PHPSpec │ │ │ │ └── README.md │ │ │ ├── Module 4 - Callbacks and Closures │ │ │ │ └── README.md │ │ │ ├── Module 5 - Object Oriented Programming │ │ │ │ └── README.md │ │ │ ├── Module 6 - Namespaces,Code Organisation and Dependency Injection │ │ │ │ └── README.md │ │ │ ├── Module 7 - Working with Databases │ │ │ │ └── README.md │ │ │ ├── Module 8 - Introduction to HTTP Concepts, Forms, Sessions and Web Services │ │ │ │ └── README.md │ │ │ └── Module 9 - Introduction to MVC Frameworks in PHP │ │ │ │ └── README.md │ │ └── README.md │ ├── Output Oriented D1 PHP:Laravel │ │ ├── Output 01- Set up your Environment and Run your first PHP code │ │ │ └── README.md │ │ ├── Output 02- Build a To Do List App │ │ │ └── README.md │ │ ├── Output 03- Build an Andela Dictionary app (with Tests) │ │ │ └── README.md │ │ ├── Output 04- Build an ORM with CRUD database operations │ │ │ └── README.md │ │ ├── Output 05- Build a RestFul API using Slim │ │ │ └── README.md │ │ ├── Output 06- Refactor an Application to add Security and Error Handling │ │ │ └── README.md │ │ ├── Output 07- Debug an Appication │ │ │ └── README.md │ │ ├── Output 08- Add Laravel Framework and Configure Authentication │ │ │ └── README.md │ │ ├── Output 09- Build an API for your Laravel App using Middleware and Routing │ │ │ └── README.md │ │ ├── Output 10- Build a Laravel Petsitting application with Migrations and Queries │ │ │ └── README.md │ │ ├── Output 11- Refactor your Application with Asset Pipeline │ │ │ └── README.md │ │ ├── Output 12- Add Email Notifications to your Application │ │ │ └── README.md │ │ └── Output 13- Add Errors and Logging to your Application │ │ │ └── README.md │ └── README.md ├── D1 Python │ ├── Curriculum │ │ ├── 01 - HTTP and Web Services │ │ │ └── README.md │ │ ├── 02 - Token-Based Authentication │ │ │ └── README.md │ │ ├── 03 - API Design using Flask │ │ │ └── README.md │ │ ├── 04 - Django MVT Basics │ │ │ └── README.md │ │ ├── 05 - Django Models │ │ │ └── README.md │ │ ├── 06 - Django Views │ │ │ └── README.md │ │ ├── 07 - Django Templates │ │ │ └── README.md │ │ ├── 08 - Testing in Django │ │ │ └── README.md │ │ └── 09 - Django REST Framework │ │ │ └── README.md │ └── README.md ├── D1 Ruby │ ├── D1 Rails │ │ ├── Curriculum │ │ │ ├── 01 - Rails MVC │ │ │ │ └── README.md │ │ │ ├── 02 - Generators │ │ │ │ └── README.md │ │ │ ├── 03 - Rails Environment and Environment Variables │ │ │ │ └── README.md │ │ │ ├── 04 - Controllers │ │ │ │ └── README.md │ │ │ ├── 05- Views │ │ │ │ └── README.md │ │ │ ├── 06 - Routing │ │ │ │ └── README.md │ │ │ ├── 07 - APIs │ │ │ │ └── README.md │ │ │ ├── 08- Asset Pipeline │ │ │ │ └── README.md │ │ │ ├── 09 - Forms and Helpers │ │ │ │ └── README.md │ │ │ ├── 10 - Rake Tasks │ │ │ │ └── README.md │ │ │ ├── 11 - Migrations │ │ │ │ └── README.md │ │ │ ├── 12 - ActiveRecord │ │ │ │ └── README.md │ │ │ ├── 13 - Sessions - Cookies │ │ │ │ └── README.md │ │ │ ├── 14 - Callbacks - Events │ │ │ │ └── README.md │ │ │ ├── 15- Authentication and Authorization │ │ │ │ └── README.md │ │ │ ├── 16- Testing Rails App │ │ │ │ └── README.md │ │ │ ├── 17- Optimizing for Performance │ │ │ │ └── README.md │ │ │ └── 18- Security │ │ │ │ └── README.md │ │ └── README.md │ ├── D1 Ruby │ │ ├── Curriculum │ │ │ ├── 01- The Ruby Way │ │ │ │ └── README.md │ │ │ ├── 02- Setting Up - Diving In │ │ │ │ └── README.md │ │ │ ├── 03- Using Documentation │ │ │ │ └── README.md │ │ │ ├── 04- Ruby as Object Oriented Programming │ │ │ │ └── README.md │ │ │ ├── 05- Ruby Data Structures - Enumerable Method │ │ │ │ └── README.md │ │ │ ├── 06- Testing in Ruby │ │ │ │ └── README.md │ │ │ ├── 07- Ruby Code Organization- Modules- and Namespacing │ │ │ │ └── README.md │ │ │ ├── 08- Using a Library -Gems │ │ │ │ └── README.md │ │ │ ├── 09- Creating your own Ruby Gem │ │ │ │ └── README.md │ │ │ └── 10- Making Web Applications Using Sinatra │ │ │ │ └── README.md │ │ └── README.md │ └── README.md ├── D1 Skill Glossary │ └── README.md ├── D1 Swift-iOS │ ├── Curriculum │ │ ├── 01 - Language Basics │ │ │ └── README.md │ │ ├── 02 - Functions │ │ │ └── README.md │ │ ├── 03 - Data Types │ │ │ └── README.md │ │ ├── 04 - Object Oriented Programming │ │ │ └── README.md │ │ ├── 05 - Error Handling │ │ │ └── README.md │ │ ├── 06 - Testing │ │ │ └── README.md │ │ ├── 07 - Multithreading │ │ │ └── README.md │ │ ├── 08 - Persisting Data │ │ │ └── README.md │ │ ├── 09 - MVC Pattern in iOS │ │ │ └── README.md │ │ ├── 10 - Storyboards Scenes and Segues │ │ │ └── README.md │ │ ├── 11 - View Controllers │ │ │ └── README.md │ │ ├── 12 - Views and Contraints │ │ │ └── README.md │ │ ├── 13 - View Controller Lifecycle │ │ │ └── README.md │ │ ├── 14 - Frameworks and Package Managers │ │ │ └── README.md │ │ ├── 15 - Application Distribution │ │ │ └── README.md │ │ └── README.md │ └── README.md ├── D1 Test Engineer │ ├── Curriculum │ │ ├── MidPiont More Practice │ │ │ └── README.md │ │ ├── Part 1- Test Firefox Products │ │ │ ├── Output 01- Test the Firefox Nightly Product │ │ │ │ └── README.md │ │ │ ├── Output 02- Run your Tests │ │ │ │ └── README.md │ │ │ ├── Output 03- Automate your Tests │ │ │ │ └── README.md │ │ │ ├── Output 04- File your Bugs │ │ │ │ └── README.md │ │ │ ├── Output 05- Debug │ │ │ │ └── README.md │ │ │ └── Output 06- Reflect on your Testing │ │ │ │ └── README.md │ │ ├── Part 2- Test an Andela Product │ │ │ ├── Output 01- Write a Test Plan and Test Scenarios │ │ │ │ └── README.md │ │ │ ├── Output 02- Use your Test Plan to Test a Feature │ │ │ │ └── README.md │ │ │ ├── Output 02b-- Reflect │ │ │ │ └── README.md │ │ │ ├── Output 03- Write an Integrations Test │ │ │ │ └── README.md │ │ │ ├── Output 03b- Refactor │ │ │ │ └── README.md │ │ │ ├── Output 04- Run a Performance Test │ │ │ │ └── README.md │ │ │ ├── Output 05- Debug your Code │ │ │ │ └── README.md │ │ │ ├── Output 05b- Refactor │ │ │ │ └── README.md │ │ │ └── Output 06- Conduct a UI-UX Test with Users │ │ │ │ └── README.md │ │ └── README.md │ ├── README.md │ └── Skill Glossary │ │ ├── 1 - Product Research │ │ └── README.MD │ │ ├── 2 - Test Scenarios │ │ └── README.md │ │ ├── 3 - Product Testing │ │ └── README.md │ │ ├── 4 - Documenting Test Results │ │ └── README.md │ │ ├── 5 - Prioritizing Defects │ │ └── README.md │ │ ├── 6- Debugging │ │ └── README.md │ │ ├── 7- Performance Optimization │ │ └── README.md │ │ ├── API │ │ └── README.md │ │ ├── Active Listening │ │ └── README.md │ │ ├── Adaptability │ │ └── README.md │ │ ├── Agile Process │ │ └── README.md │ │ ├── Agile Testing Quadrants │ │ └── README.md │ │ ├── Algorithms │ │ └── README.md │ │ ├── Attention to Detail │ │ └── README.md │ │ ├── Black Box Testing │ │ └── README.md │ │ ├── Bug Tracking Tools │ │ └── README.md │ │ ├── Calendar │ │ └── README.md │ │ ├── Client Vision Alignment │ │ └── README.md │ │ ├── Command Line -Unix │ │ └── README.md │ │ ├── Creativity │ │ └── README.md │ │ ├── Cultural Awareness │ │ └── README.md │ │ ├── Data Structures │ │ └── README.md │ │ ├── Databases │ │ └── README.md │ │ ├── Debugging │ │ └── README.md │ │ ├── Decision Making │ │ └── README.md │ │ ├── DevOps │ │ └── README.md │ │ ├── Discrete Math and Algebra │ │ └── README.md │ │ ├── Docs │ │ └── README.md │ │ ├── Estimating │ │ └── README.md │ │ ├── Expectations Management │ │ └── README.md │ │ ├── Focus and Concentration │ │ └── README.md │ │ ├── Functional Testing Tools │ │ └── README.md │ │ ├── Functional Testing │ │ └── README.md │ │ ├── Git │ │ └── README.md │ │ ├── HTML and CSS │ │ └── README.md │ │ ├── Holistic and Big Picture Thinking │ │ └── README.md │ │ ├── Load Testing Tools │ │ └── README.md │ │ ├── Mobile Development │ │ └── README.md │ │ ├── Motivation and Commitment │ │ └── README.md │ │ ├── Non-Functional Testing │ │ └── README.md │ │ ├── Object Oriented Programming │ │ └── README.md │ │ ├── Order of Operations │ │ └── README.md │ │ ├── Patterns and MVC │ │ └── README.md │ │ ├── Performance Optimization │ │ └── README.md │ │ ├── Problem Solving and Critical Thinking │ │ └── README.md │ │ ├── Project Management Tool │ │ └── README.md │ │ ├── Proper use of Environments │ │ └── README.md │ │ ├── README.MD │ │ ├── Reading to Understand │ │ └── README.md │ │ ├── Regression Testing and Re-Testing │ │ └── README.md │ │ ├── Relationship Building │ │ └── README.md │ │ ├── Requirements Analysis │ │ └── README.md │ │ ├── Scalability Design │ │ └── README.md │ │ ├── Security │ │ └── README.md │ │ ├── Seeks and Requests Feedback │ │ └── README.md │ │ ├── Skype and Hangouts │ │ └── README.md │ │ ├── Slack │ │ └── README.md │ │ ├── Speaking to be Understood │ │ └── README.md │ │ ├── Spreadsheets │ │ └── README.md │ │ ├── Stakeholder Management │ │ └── README.md │ │ ├── Team Dynamics │ │ └── README.md │ │ ├── Test Automation │ │ └── README.md │ │ ├── Test Driven Development │ │ └── README.md │ │ ├── Test Management Tools │ │ └── README.md │ │ ├── Test Planning │ │ └── README.md │ │ ├── Test Scenarios- Test Cases- and Test Scripts │ │ └── README.md │ │ ├── Testing End-to-End │ │ └── README.md │ │ ├── Text Editors │ │ └── README.md │ │ ├── Tier 2 and 3 Architecture │ │ └── README.md │ │ ├── UI UX Awareness and Design │ │ └── README.md │ │ ├── Unit Testing │ │ └── README.md │ │ ├── Version Control │ │ └── README.md │ │ ├── White Box Testing │ │ └── README.md │ │ ├── Willingness to Ask Questions │ │ └── README.md │ │ └── Writing Professionally │ │ └── README.md └── README.md ├── D2 ├── D2 DevOps │ ├── 0. D2 DevOps Role Description │ │ └── README.md │ ├── 00. Case Studies and Real World Practice │ │ └── README.md │ ├── 01. Proper Use of Environments │ │ └── README.md │ ├── 01a. Work - Learning Check │ │ └── README.md │ ├── 02. Continuous Integration and Deployment │ │ └── README.md │ ├── 03. Testing │ │ └── README.md │ ├── 03a. Work - Learning Check │ │ └── README.md │ ├── 04. Release Engineering │ │ └── README.md │ ├── 05. Documentation │ │ └── README.md │ ├── 05a. Work - Learning Check │ │ └── README.md │ ├── 06. Configuration and Change Management │ │ └── README.md │ ├── 07. Version Control -Git │ │ └── README.md │ ├── 07a. Work - Learning Check │ │ └── README.md │ ├── 08. Command Line -Unix │ │ └── README.md │ ├── 09. Object Oriented Programming │ │ └── README.md │ ├── 10. Data Structures and Algorithms │ │ └── README.md │ ├── 11. Patterns- MVC │ │ └── README.md │ ├── 11a. Work - Learning Check │ │ └── README.md │ ├── 12. Networking │ │ └── README.md │ ├── 13. Securing Deployments │ │ └── README.md │ ├── 14. System Maintenance │ │ └── README.md │ ├── 15. Monitoring and Logging │ │ └── README.md │ ├── 16. Backup and Restore │ │ └── README.md │ ├── 16a. Work - Learning Check │ │ └── README.md │ ├── 17. Databases │ │ └── README.md │ ├── 18. APIs │ │ └── README.md │ ├── 18a. Work - Learning Check │ │ └── README.md │ ├── 19. Scalability Design │ │ └── README.md │ ├── 19a. Work - Learning Check │ │ └── README.md │ ├── 20. Performance Optimization │ │ └── README.md │ ├── 21. Automation │ │ └── README.md │ ├── 21a. Work - Learning Check │ │ └── README.md │ ├── 22. Self-Motivation and Proactivity │ │ └── README.md │ ├── 23. Adaptability │ │ └── README.md │ ├── 23a. Work - Learning Check │ │ └── README.md │ ├── 24. Leadership │ │ └── README.md │ ├── 25. Organizational Functional Awareness │ │ └── README.md │ ├── 26. Stakeholder Management │ │ └── README.md │ ├── 26a. Work - Learning Check │ │ └── README.md │ ├── 27. Requirements Analysis │ │ └── README.md │ ├── 28. Expectations Management │ │ └── README.md │ ├── 28a. Work - Learning Check │ │ └── README.md │ ├── 29. Mentorship │ │ └── README.md │ └── README.md ├── D2 Developer │ ├── Assessment │ │ └── README.md │ ├── Curriculum │ │ ├── 01 - Stakeholder Management │ │ │ └── README.md │ │ ├── 02 - Expectations Management │ │ │ └── README.md │ │ ├── 03 - Adaptability │ │ │ └── README.md │ │ ├── 04 - Seeks & Requests Feedback │ │ │ └── README.md │ │ ├── 05 - Leadership │ │ │ └── README.md │ │ ├── 06 - Mentorship │ │ │ └── README.md │ │ ├── 07 - Organizational Function Awareness │ │ │ └── README.md │ │ ├── 08 - Requirements Analysis │ │ │ └── README.md │ │ ├── 09 - Algorithms │ │ │ └── README.md │ │ ├── 10 - Data Structures │ │ │ └── README.md │ │ ├── 11 - Discrete Math & Algebra │ │ │ └── README.md │ │ ├── 12 - Object Oriented Programming │ │ │ └── README.md │ │ ├── 13 - Version Control │ │ │ └── README.md │ │ ├── 14 - Scalability Design │ │ │ └── README.md │ │ ├── 15 - Security │ │ │ └── README.md │ │ ├── 16 - Databases │ │ │ └── README.md │ │ ├── 17 - API │ │ │ └── README.md │ │ ├── 18 - Proper Use of Environments │ │ │ └── README.md │ │ ├── 19 - Systems Design │ │ │ └── README.md │ │ ├── 20 - Performance Optimization │ │ │ └── README.md │ │ ├── 21 - DevOps │ │ │ └── README.md │ │ ├── 22 - Text Editors │ │ │ └── README.md │ │ ├── 23 - Command Line (Unix) │ │ │ └── README.md │ │ ├── 24 - GIT │ │ │ └── README.md │ │ └── 25 - Functional Programming │ │ │ └── README.md │ └── README.md ├── D2 JavaScript │ └── Curriculum │ │ ├── 01- ES6 │ │ └── README.md │ │ ├── 02a- AngularJS 1 -Optional Resource │ │ └── README.md │ │ ├── 02b- Intro to AngularJS 2.0 │ │ └── README.md │ │ ├── 03- Components- Pipes- and Directives │ │ └── README.md │ │ ├── 04- Code Organization through Services and Dependency Injection │ │ └── README.md │ │ ├── 05- Routing and API Consumption │ │ └── README.md │ │ ├── 06- Callbacks- Promises- and Async │ │ └── README.md │ │ ├── 07- Event Loop │ │ └── README.md │ │ ├── 08- Deeper into Functions │ │ └── README.md │ │ ├── 09- Event Handling and -this- Keyword │ │ └── README.md │ │ ├── 10- Flux and Immutability │ │ └── README.md │ │ ├── 11- Intro to React │ │ └── README.md │ │ ├── 12- Redux │ │ └── README.md │ │ ├── 13- Automation and Workflow using Task Runners │ │ └── README.md │ │ ├── 14- Transpiling │ │ └── README.md │ │ ├── 15- Performance Optimization │ │ └── README.md │ │ ├── 16- Architecting an Application- From Functional to OOP │ │ └── README.md │ │ └── README.md ├── D2 PHP │ ├── Curriculum │ │ └── 01. PHP - Advanced MySQL │ │ │ └── README.md │ └── README.md ├── D2 Python │ ├── Curriculum │ │ ├── 01. GUI Programming (with Tkinter) │ │ │ └── README.md │ │ ├── 02. Event Driven Programming │ │ │ └── README.md │ │ ├── 03. Asynchronous Programming │ │ │ └── README.md │ │ ├── 04. Metaclasses │ │ │ └── README.md │ │ ├── 05. Multithreading │ │ │ └── README.md │ │ ├── 06. Regular Expressions │ │ │ └── README.md │ │ ├── 07. Networking │ │ │ └── README.md │ │ ├── 08. Performance and Optimization │ │ │ └── README.md │ │ └── 09. Secure Web Development │ │ │ └── README.md │ └── README.md ├── D2 Ruby │ ├── Curriculum │ │ ├── 01. Idiomatic Ruby & Refactorings │ │ │ └── README.md │ │ ├── 02. ORM Frameworks │ │ │ └── README.md │ │ ├── 03. GUI Programming (Tk Guide) │ │ │ └── README.md │ │ ├── 04. Metaprogramming │ │ │ └── README.md │ │ ├── 05. Multithreading │ │ │ └── README.md │ │ ├── 06. Regular Expressions │ │ │ └── README.md │ │ ├── 07. Socket Programming │ │ │ └── README.md │ │ ├── 08. Performance Optimization │ │ │ └── README.md │ │ ├── 09. Web Application Security │ │ │ └── README.md │ │ └── 10. Ruby Associated Tools │ │ │ └── README.md │ └── README.md ├── D2 Test Engineer │ └── README.md ├── D2 iOS │ ├── 01- iOS Application Design Patterns │ │ └── README.md │ ├── 02- Networking - Working with APIs │ │ └── README.md │ ├── 03- Multithreading and Asynchronous Programming in iOS │ │ └── README.md │ ├── 04- iOS Memory Management │ │ └── README.md │ ├── 05- iOS Persistence and Core Data │ │ └── README.md │ ├── 06- Protocol-Oriented Programming │ │ └── README.md │ ├── 07- Reactive Programming in iOS │ │ └── README.md │ ├── 08- Animation │ │ └── README.md │ ├── 09- Testing - Debugging │ │ └── README.md │ ├── 10- Refactoring your Code │ │ └── README.md │ ├── 11- Security │ │ └── README.md │ ├── 12- UI Design- Intermediate │ │ └── README.md │ ├── 13- REVIEW- D2 Developer Team - Professional Skills │ │ └── README.md │ └── README.md ├── Python - Data Analysis │ └── Curriculum │ │ └── README.md └── README.md ├── D3 ├── D3 Developer │ ├── Output 01- Advanced Data Structures │ │ └── README.md │ ├── Output 02 - Algorithms │ │ └── README.md │ ├── Output 03- Systems │ │ └── README.md │ ├── Output 04- Architecture │ │ └── README.md │ ├── Output 05- Build Automation and Version Control │ │ └── README.md │ ├── Output 06- Code Organization- Structure and Design │ │ └── README.md │ ├── Output 07- Testing - Defensive Coding │ │ └── README.md │ ├── Output 08- Advanced APIs │ │ └── README.md │ ├── Output 09- Advanced Databases │ │ └── README.md │ ├── Output 10- Agile Process │ │ └── README.md │ ├── Output 11- Relationship Building │ │ └── README.md │ ├── Output 12- Stakeholder Management │ │ └── README.md │ ├── Output 13- Expectations Management │ │ └── README.md │ ├── Output 14- Team Dynamics │ │ └── README.md │ ├── Output 15- Attention to Detail │ │ └── README.md │ ├── Output 16- Adaptability │ │ └── README.md │ ├── Output 17- Decision Making │ │ └── README.md │ ├── Output 18- Problem Solving- Critical Thinking │ │ └── README.md │ ├── Output 19- Writing Professionaly │ │ └── README.md │ ├── Output 20- Holistic-Big Picture Thinking │ │ └── README.md │ ├── Output 21- Leadership │ │ └── README.md │ ├── Output 22- Mentorship │ │ └── README.md │ ├── Output 23- Maintaining and Sharing Knowledge │ │ └── README.md │ ├── Output 24- UI-UX Awareness - Design │ │ └── README.md │ └── README.md ├── JavaScript D3 │ ├── Curriculum │ │ ├── Output 01- Build an Application with Angular and Node │ │ │ └── README.md │ │ ├── Output 02- Refactor │ │ │ └── README.md │ │ ├── Output 03- Build an Application with React │ │ │ └── README.md │ │ ├── Output 04- Add a Chat Functionality to an App │ │ │ └── README.md │ │ ├── Output 05- Reflect on your Applications with a Blog │ │ │ └── README.md │ │ ├── Output 06- Build an App of your Choice │ │ │ └── README.md │ │ └── README.md │ └── README.md ├── README.md └── Technical Team Lead │ ├── Curriculum │ ├── 01 - Relationship Building │ │ └── README.md │ ├── 02 - Stakeholder Management │ │ └── README.md │ ├── 03 - Expectations Management │ │ └── README.md │ ├── 04 - Team Dynamics │ │ └── README.md │ ├── 05 - Attention to Detail │ │ └── README.md │ ├── 06 - Focus & Concentration │ │ └── README.md │ ├── 07 - Motivation & Commitment │ │ └── README.md │ ├── 08 - Adaptability │ │ └── README.md │ ├── 09 - Decision Making │ │ └── README.md │ ├── 10 - Problem Solving & Critical Thinking │ │ └── README.md │ ├── 11 - Writing Professionally │ │ └── README.md │ ├── 12 - Holistic & Big Picture Thinking │ │ └── README.md │ ├── 13 - Leadership │ │ └── README.md │ ├── 14 - Mentorship │ │ └── README.md │ ├── 15 - Management │ │ └── README.md │ ├── 16 - Agile Process │ │ └── README.md │ ├── 17 - Debugging │ │ └── README.md │ ├── 18 - Estimating │ │ └── README.md │ ├── 19 - Spreadsheets │ │ └── README.md │ └── 20 - Pivotal Tracker │ │ └── README.md │ └── README.md ├── D4+ ├── D4 Andelan Advancement Process │ ├── Other D4 Requirements │ │ └── README.md │ ├── Passion │ │ ├── Passion Output Optional- Showcase your Growth Path Work │ │ │ └── README.md │ │ ├── Passion Output- Showcase your Growth Path Selection │ │ │ └── README.md │ │ └── README.md │ ├── Potential │ │ ├── Case Study Examples- Product Manager │ │ │ └── README.md │ │ ├── Case Study Examples- Project Manager │ │ │ └── README.md │ │ ├── Case Study Examples- Software Architect │ │ │ └── README.md │ │ └── README.md │ ├── Product │ │ ├── Optional Output- Additional Non-Tech Product │ │ │ └── README.md │ │ ├── Optional Output- Additional Tech Product │ │ │ └── README.md │ │ ├── Output 1- Tech Product 1 │ │ │ └── README.md │ │ ├── Output 2- Tech Product 2 │ │ │ └── README.md │ │ ├── Output 3- Tech Product 3 │ │ │ └── README.md │ │ └── README.md │ └── README.md ├── Data Science │ ├── Optional Questions and Project Ideas │ │ └── README.md │ ├── Output 01- Define your Question │ │ └── README.md │ ├── Output 02- Gather your Data │ │ └── README.md │ ├── Output 03- Clean your Data │ │ └── README.md │ ├── Output 04- Investigate your Data Set │ │ └── README.md │ ├── Output 05- Model and Summarize your Data │ │ └── README.md │ ├── Output 06- Create a Data Visualization │ │ └── README.md │ ├── Output 07- Write a Model │ │ └── README.md │ ├── Output 08- Write a Forecast │ │ └── README.md │ ├── Output 09- Tell your Story │ │ └── README.md │ ├── Output 10- Showcase your Work │ │ └── README.md │ └── README.md ├── Entrepreneurship │ ├── README.md │ └── Self - Mindset │ │ ├── 01- Create your Self-Assessment │ │ └── README.md │ │ ├── 02- Build your Domain Expertise │ │ └── README.md │ │ ├── 03- Build your Confidence │ │ └── README.md │ │ ├── 04- Increase your Focus │ │ └── README.md │ │ ├── 05- Care for Yourself │ │ └── README.md │ │ ├── Qualities of Great Entrepreneurs │ │ └── README.md │ │ └── README.md ├── Fellow Project Showcase │ └── README.md ├── Product Manager │ ├── Product Manager Learning Outcomes │ │ ├── 0A. What is a Product Manager │ │ │ └── README.md │ │ ├── 1A. Business Goals and Metrics │ │ │ └── README.md │ │ ├── 1B. Getting to Know the Products at your Business │ │ │ └── README.md │ │ ├── 1C. Getting to know your Business Stakeholders │ │ │ └── README.md │ │ ├── 1D. Getting to Know your Technical Stakeholders │ │ │ └── README.md │ │ ├── 2A. Conducting and Analyzing Market Research │ │ │ └── README.md │ │ ├── 3A. Running a Competitive Analysis │ │ │ └── README.md │ │ ├── 3B. Developing End User Empathy │ │ │ └── README.md │ │ ├── 3C. Running a Product Design Sprint │ │ │ └── README.md │ │ ├── 3D. Creating User Personas │ │ │ └── README.md │ │ ├── 4A. Developing a Product Roadmap │ │ │ └── README.md │ │ ├── 5A. Running Daily Standups │ │ │ └── README.md │ │ ├── 5B. Running Product Demos │ │ │ └── README.md │ │ ├── 5C. Running Retros │ │ │ └── README.md │ │ ├── 5D. Intelligently Escalating Information │ │ │ └── README.md │ │ └── README.md │ ├── README.md │ └── TWO's- Work Output Library │ │ ├── More Practice │ │ └── README.md │ │ ├── Output 01- Get Set Up with your Team │ │ └── README.md │ │ ├── Output 02- Conduct Market Research │ │ └── README.md │ │ ├── Output 03- Create your User Personas │ │ └── README.md │ │ ├── Output 04- Write your Product Requirement Document │ │ └── README.md │ │ ├── Output 05- Build your Product Roadmap │ │ └── README.md │ │ ├── Output 06- Run a Sprint Planning Session │ │ └── README.md │ │ ├── Output 07- Run a Standup │ │ └── README.md │ │ ├── Output 08- Run a Product Demo │ │ └── README.md │ │ ├── Output 09- Run a Retro │ │ └── README.md │ │ ├── Output 10- Test with Users and Refactor │ │ └── README.md │ │ ├── Output 11- Write your Technical Requirements Document │ │ └── README.md │ │ ├── Output 12- Run a Product Analysis Meeting - Design Sprint │ │ └── README.md │ │ ├── Output 13- Use your Product │ │ └── README.md │ │ └── Output 14- Map your Business Goals and Ecosystem │ │ └── README.md ├── Project Manager │ ├── Case Study Questions │ │ └── README.md │ ├── Communicating your Past Work │ │ └── README.md │ ├── Prepare for your Project Manager Interview │ │ └── README.md │ ├── README.md │ └── Required Skills │ │ └── README.md ├── README.md └── Software Architect │ ├── More Resources │ ├── More Practice Outputs │ │ ├── Output 01- Get to Know your Business │ │ │ └── README.md │ │ ├── Output 02- Write a Status Assessment │ │ │ └── README.md │ │ ├── Output 03- Re-Architect a Product │ │ │ └── README.md │ │ ├── Output 04- Attend an Andela Architecture Review │ │ │ └── README.md │ │ ├── Output 05- Architect a New Solution from Requirement Documents -UML │ │ │ └── README.md │ │ ├── Output 06- Create an Analysis Model -using Statecharts │ │ │ └── README.md │ │ ├── Output 07- Document your Solution │ │ │ └── README.md │ │ ├── Output 08- Pitch your Solution │ │ │ └── README.md │ │ ├── Output 09- Lead a Project with your Dev Team │ │ │ └── README.md │ │ └── README.md │ ├── Required Skills │ │ ├── Business Domain Knowledge │ │ │ └── README.md │ │ ├── Leadership and Communication Skills │ │ │ └── README.md │ │ ├── Methodology and Strategy │ │ │ └── README.md │ │ ├── README.md │ │ ├── Technical Knowledge │ │ │ └── README.md │ │ └── You May Encounter... │ │ │ └── README.md │ ├── Resources- Continued Learning │ │ └── README.md │ ├── Resources- Getting Started │ │ └── README.md │ └── What is a Software Architect │ │ └── README.md │ └── README.md ├── D5 ├── Enterprise Architect │ ├── README.md │ └── Required Skills │ │ └── README.md ├── Program Manager │ └── Required Skills │ │ └── README.md └── README.md ├── Facilitator-Guide ├── Applying Learning Architecture │ └── README.md ├── Coaching Fellows │ └── README.md ├── Confirming Learning Outcomes │ └── README.md ├── Defining Behaviors │ └── README.md ├── Defining Beliefs │ └── README.md ├── Defining Knowledge Units │ └── README.md ├── Defining Skills and Outputs │ └── README.md ├── Facilitating Soft Skills │ └── README.md ├── Managing Apprenticeships │ └── README.md ├── Program Design │ ├── Building Learning Tools │ │ └── README.md │ ├── Conducting Valid Surveys │ │ └── Conducting Valid Surveys.md │ ├── Eliciting and Processing Program Feedback │ │ └── README.md │ ├── Extracting OKBBs from Experts │ │ └── README.md │ ├── README.md │ ├── Running Program Tests │ │ └── README.md │ └── Setting and Reporting on Program Goals │ │ └── README.md ├── README.md └── Tracking Fellow Progress │ └── README.md ├── Homestudy ├── Curriculum │ ├── 01 - Familiarity and Comfort with Computer Science │ │ └── README.md │ ├── 02 - Programming Fundamentals │ │ └── README.md │ ├── 03 - Python Programming │ │ └── README.md │ ├── 04 - Object Oriented Programming │ │ └── README.md │ ├── 05 - Data Structures │ │ └── README.md │ ├── 06 - Algorithms │ │ └── README.md │ ├── 07 - Recursion │ │ └── README.md │ ├── 08 - Sorting and Searching │ │ └── README.md │ ├── 09 - Software Engineering │ │ └── README.md │ ├── 10 - The Internet │ │ └── README.md │ └── 11 - Web Programming │ │ └── README.md └── README.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.log 3 | .idea 4 | -------------------------------------------------------------------------------- /Andelan/EPIC Values/README.md: -------------------------------------------------------------------------------- 1 | # Guide to This Learning Path 2 | 3 | At Andela, we are a community of passionate learners and innovators who live our values and use them to guide our actions. We want to empower leaders who will carry these values forward into the world, and influence others to believe in and practice them. 4 | 5 | To do so, every one of us must know, understand, and embody our communal values. These EPIC OKBBs are a stepping stone into building a curriculum which guides people to grow into new life approaches, ways of being, and identities that help to unlock their potential, accelerate their transformation, and ultimately make all of us #limitless. 6 | 7 | Just as our values are a community artifact, built by the collective brilliance and thoughtfulness of each and every Andelan, so are these OKBBs. We encourage every Andelan to add, make suggestions, and ask questions, as we create these learnings together. 8 | -------------------------------------------------------------------------------- /Andelan/README.md: -------------------------------------------------------------------------------- 1 | # Andelan 2 | -------------------------------------------------------------------------------- /Bootcamp/Curriculum/13 - Adaptability/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 13 - Adaptability 2 | 3 | **Skill Description** 4 | ---------- 5 | Aspiring Andelans understand that they will encounter changes in their work environment and are able to perform at a high level in the face of change. 6 | 7 | 8 | **Output** 9 | ---------- 10 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 11 | 12 | 1. Blog post reflecting on a change-focused improv exercise and Bootcamp events that posed great changes. 13 | 14 | 15 | **Objectives** 16 | ---------- 17 | 18 | ## **Knowledge** 19 | 20 | 21 | | Knowledge Unit | Studied | Applied | 22 | |:-------------|:------------------:|:--------:| 23 | | I can describe the following from memory: | | | 24 | | * The concept of change | [ ] | [ ] | 25 | | * The causes, cycles, effects of change | [ ] | [ ] | 26 | | * How to manage and embrace change | [ ] | [ ] | 27 | 28 | 29 | ---------- 30 | 31 | 32 | ## **Behaviors** 33 | 34 | 35 | | Observable Behavior | Practiced | Observed | 36 | |:-------------|:------------------:|:--------:| 37 | | **Context:** When confronted by change **Action:** I take steps to understand what changed and how best to respond to the change | [ ] | [ ] | 38 | | **Context:** When confronted by change **Action:** I communicate that I see the value of the change | [ ] | [ ] | 39 | | **Context:** When working in a changing environment **Action:** I ensure to stay calm and focused on the overall goals of the project, company or organization | [ ] | [ ] | 40 | 41 | ---------- 42 | 43 | 44 | ## **Beliefs** 45 | 46 | 47 | | Embodied Belief | Felt | Demonstrated | 48 | |:-------------|:------------------:|:--------:| 49 | | I can adapt to my changing environment | [ ] | [ ] | 50 | | Change is inevitable, so I harness it to develop myself and help others grow | [ ] | [ ] | 51 | -------------------------------------------------------------------------------- /Bootcamp/README.md: -------------------------------------------------------------------------------- 1 | Bootcamp -------------------------------------------------------------------------------- /D0/README.md: -------------------------------------------------------------------------------- 1 | # Homestudy Curriculum 2 | 3 | Check out Andela's [newly revamped Homestudy Curriculum Here!](http://github.andela.com/homestudy/) 4 | 5 | ![screen shot 2017-06-07 at 5 02 45 pm](https://user-images.githubusercontent.com/5239538/26901266-2ce58a9a-4ba3-11e7-9f06-5d75466c4591.png) 6 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/1 - Adaptability/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 1 - Adaptability 2 | 3 | ## Skill Description 4 | Willing to get out of comfort zone, learn and adapt to new culture 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Warmups 9 | - Bootcamp Collaboration 10 | - Bootcamp Project Presentation 11 | 12 | ## Objectives 13 | 14 | ### Knowledge 15 | 16 | | Knowledge Unit | Studied | Memorized | 17 | |:---|:---:|:---:| 18 | | | | | 19 | 20 | --- 21 | 22 | ### Behaviors 23 | 24 | | Observable Behavior | Observed | Mastered | 25 | |:---|:---:|:---:| 26 | | | | | 27 | 28 | --- 29 | 30 | ### Beliefs 31 | 32 | | Embodied Belief | Felt | Demonstrated | 33 | |:---|:---:|:---:| 34 | | | | | 35 | 36 | --- 37 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/10 - TDD and Debugging/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 10 - TDD and Debugging 2 | 3 | ## Skill Description 4 | Apply basic conventions to Write Tests and Debug Code 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Debug and Testing training and exercises (Bootcamp Week 1) 9 | - COMPULSORY: 10 test cases for a Factorial/ Fibonacci/ FizzBuzz function. 10 | - COMPULSORY: Debug bootcamp project 11 | - OPTIONAL: 20 test cases for a mid level/advanced code kata. 12 | 13 | ## Objectives 14 | 15 | ### Knowledge 16 | 17 | | Knowledge Unit | Studied | Memorized | 18 | |:---|:---:|:---:| 19 | | | | | 20 | 21 | --- 22 | 23 | ### Behaviors 24 | 25 | | Observable Behavior | Observed | Mastered | 26 | |:---|:---:|:---:| 27 | | | | | 28 | 29 | --- 30 | 31 | ### Beliefs 32 | 33 | | Embodied Belief | Felt | Demonstrated | 34 | |:---|:---:|:---:| 35 | | | | | 36 | 37 | --- 38 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/11 - UI:UX Design/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 11 - UI/UX Design 2 | 3 | ## Skill Description 4 | Design and style user-friendly web pages using html and css 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp project 9 | - Post-bootcamp project (LOS) 10 | - Andela 21 project(recommend a UI project) 11 | 12 | ## Objectives 13 | 14 | ### Knowledge 15 | 16 | | Knowledge Unit | Studied | Memorized | 17 | |:---|:---:|:---:| 18 | | | | | 19 | 20 | --- 21 | 22 | ### Behaviors 23 | 24 | | Observable Behavior | Observed | Mastered | 25 | |:---|:---:|:---:| 26 | | | | | 27 | 28 | --- 29 | 30 | ### Beliefs 31 | 32 | | Embodied Belief | Felt | Demonstrated | 33 | |:---|:---:|:---:| 34 | | | | | 35 | 36 | --- 37 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/12 - Version Control/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 12 - Version Control 2 | 3 | ## Skill Description 4 | Effectively version a simple application using git and github 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Git training and exercises (Bootcamp Week 1) 9 | - A personal repo with commits 10 | - A shared repo with commits, conflicts and at least one merge 11 | - Bootcamp Project 12 | - Project hosted on shared repo 13 | 14 | ## Objectives 15 | 16 | ### Knowledge 17 | 18 | | Knowledge Unit | Studied | Memorized | 19 | |:---|:---:|:---:| 20 | | | | | 21 | 22 | --- 23 | 24 | ### Behaviors 25 | 26 | | Observable Behavior | Observed | Mastered | 27 | |:---|:---:|:---:| 28 | | | | | 29 | 30 | --- 31 | 32 | ### Beliefs 33 | 34 | | Embodied Belief | Felt | Demonstrated | 35 | |:---|:---:|:---:| 36 | | | | | 37 | 38 | --- 39 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/13 - Web Development/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 13 - Web Development 2 | 3 | ## Skill Description 4 | Build interactive front end web applications using JavaScript/python 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | 9 | - Bootcamp project 10 | - Post-bootcamp project (LOS) 11 | - Andela 21 project(recommend an interactive project) 12 | 13 | ## Objectives 14 | 15 | ### Knowledge 16 | 17 | | Knowledge Unit | Studied | Memorized | 18 | |:---|:---:|:---:| 19 | | | | | 20 | 21 | --- 22 | 23 | ### Behaviors 24 | 25 | | Observable Behavior | Observed | Mastered | 26 | |:---|:---:|:---:| 27 | | | | | 28 | 29 | --- 30 | 31 | ### Beliefs 32 | 33 | | Embodied Belief | Felt | Demonstrated | 34 | |:---|:---:|:---:| 35 | | | | | 36 | 37 | --- 38 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/14 - Web Fundamentals/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 14 - Web Fundamentals 2 | 3 | ## Skill Description 4 | Knowledge of web fundamentals including how the web works, web development terminologies, the role of web developers and tools available to them 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Interview 9 | - Proctor test 10 | - A medium blogpost on why they want to become a software developer 11 | 12 | ## Objectives 13 | 14 | ### Knowledge 15 | 16 | | Knowledge Unit | Studied | Memorized | 17 | |:---|:---:|:---:| 18 | | | | | 19 | 20 | --- 21 | 22 | ### Behaviors 23 | 24 | | Observable Behavior | Observed | Mastered | 25 | |:---|:---:|:---:| 26 | | | | | 27 | 28 | --- 29 | 30 | ### Beliefs 31 | 32 | | Embodied Belief | Felt | Demonstrated | 33 | |:---|:---:|:---:| 34 | | | | | 35 | 36 | --- -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/15 - Writing Professionally/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 15 - Writing Professionally 2 | 3 | ## Skill Description 4 | Use office/online tools for basic professional writing 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Interview 9 | - Curriculum Vitae/Resume 10 | - Cover Letter 11 | - Soft Skills Exercise 12 | - A series of blog posts on medium(reflections on each bootcamp day activities) 13 | 14 | ## Objectives 15 | 16 | ### Knowledge 17 | 18 | | Knowledge Unit | Studied | Memorized | 19 | |:---|:---:|:---:| 20 | | | | | 21 | 22 | --- 23 | 24 | ### Behaviors 25 | 26 | | Observable Behavior | Observed | Mastered | 27 | |:---|:---:|:---:| 28 | | | | | 29 | 30 | --- 31 | 32 | ### Beliefs 33 | 34 | | Embodied Belief | Felt | Demonstrated | 35 | |:---|:---:|:---:| 36 | | | | | 37 | 38 | --- 39 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/2 - Command Line Scripting/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 2 - Command Line Scripting 2 | 3 | ## Skill Description 4 | Basic command line/shell scripting language commands 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Git training and exercises (Bootcamp Week 1) 9 | - Bootcamp Project deploying to Heroku (Bootcamp Week 2) 10 | 11 | ## Objectives 12 | 13 | ### Knowledge 14 | 15 | | Knowledge Unit | Studied | Memorized | 16 | |:---|:---:|:---:| 17 | | | | | 18 | 19 | --- 20 | 21 | ### Behaviors 22 | 23 | | Observable Behavior | Observed | Mastered | 24 | |:---|:---:|:---:| 25 | | | | | 26 | 27 | --- 28 | 29 | ### Beliefs 30 | 31 | | Embodied Belief | Felt | Demonstrated | 32 | |:---|:---:|:---:| 33 | | | | | 34 | 35 | --- 36 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/3 - Organizational Functional Awareness/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 3 - Organizational Functional Awareness 2 | 3 | ## Skill Description 4 | Basic understanding of the fellowship and its expectations 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Interview 9 | 10 | ## Objectives 11 | 12 | ### Knowledge 13 | 14 | | Knowledge Unit | Studied | Memorized | 15 | |:---|:---:|:---:| 16 | | | | | 17 | 18 | --- 19 | 20 | ### Behaviors 21 | 22 | | Observable Behavior | Observed | Mastered | 23 | |:---|:---:|:---:| 24 | | | | | 25 | 26 | --- 27 | 28 | ### Beliefs 29 | 30 | | Embodied Belief | Felt | Demonstrated | 31 | |:---|:---:|:---:| 32 | | | | | 33 | 34 | --- 35 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/4 - Programming Conventions/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 4 - Programming Conventions 2 | 3 | ## Skill Description 4 | Write clean, conventional and readable code in javascript/python 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Hackerrank code katas 9 | - Proctor test 10 | - Andelabs exercises 11 | - Bootcamp project 12 | 13 | ## Objectives 14 | 15 | ### Knowledge 16 | 17 | | Knowledge Unit | Studied | Memorized | 18 | |:---|:---:|:---:| 19 | | | | | 20 | 21 | --- 22 | 23 | ### Behaviors 24 | 25 | | Observable Behavior | Observed | Mastered | 26 | |:---|:---:|:---:| 27 | | | | | 28 | 29 | --- 30 | 31 | ### Beliefs 32 | 33 | | Embodied Belief | Felt | Demonstrated | 34 | |:---|:---:|:---:| 35 | | | | | 36 | 37 | --- 38 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/5 - Programming Fundamentals/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 5 - Programming Fundamentals 2 | 3 | ## Skill Description 4 | Knowledge of programming fundamentals including programming Logic, object oriented programming, databases, data Structures and Algorithms and stack-specific proficiency 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Interview 9 | - Hackerrank code katas 10 | - Proctor test 11 | - Andelabs exercises 12 | - Bootcamp project 13 | 14 | ## Objectives 15 | 16 | ### Knowledge 17 | 18 | | Knowledge Unit | Studied | Memorized | 19 | |:---|:---:|:---:| 20 | | | | | 21 | 22 | --- 23 | 24 | ### Behaviors 25 | 26 | | Observable Behavior | Observed | Mastered | 27 | |:---|:---:|:---:| 28 | | | | | 29 | 30 | --- 31 | 32 | ### Beliefs 33 | 34 | | Embodied Belief | Felt | Demonstrated | 35 | |:---|:---:|:---:| 36 | | | | | 37 | 38 | --- -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/6 - Relationship Building/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 6 - Relationship Building 2 | 3 | ## Skill Description 4 | Build and leverage rapport with fellows, staffs and peers to learn from and teach others 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Training (Week 1) 9 | - Recorded observation 10 | - Bootcamp Project (Week 2) 11 | - Post bootcamp project presentation interview. 12 | 13 | ## Objectives 14 | 15 | ### Knowledge 16 | 17 | | Knowledge Unit | Studied | Memorized | 18 | |:---|:---:|:---:| 19 | | | | | 20 | 21 | --- 22 | 23 | ### Behaviors 24 | 25 | | Observable Behavior | Observed | Mastered | 26 | |:---|:---:|:---:| 27 | | | | | 28 | 29 | --- 30 | 31 | ### Beliefs 32 | 33 | | Embodied Belief | Felt | Demonstrated | 34 | |:---|:---:|:---:| 35 | | | | | 36 | 37 | --- 38 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/7 - Self Learning/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 7 - Self Learning 2 | 3 | ## Skill Description 4 | Independently drive self-learning process in both Technical and Soft Skills 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Homestudy Completion 9 | - Hackerrank code katas 10 | - Bootcamp Interview(questions: How do you learn, how have you been developing yourself before today, if you are not chosen, how would go about developing yourself so that you will be better prepared in the next round of application) 11 | - Andelabs exercises 12 | - Bootcamp project 13 | 14 | ## Objectives 15 | 16 | ### Knowledge 17 | 18 | | Knowledge Unit | Studied | Memorized | 19 | |:---|:---:|:---:| 20 | | | | | 21 | 22 | --- 23 | 24 | ### Behaviors 25 | 26 | | Observable Behavior | Observed | Mastered | 27 | |:---|:---:|:---:| 28 | | | | | 29 | 30 | --- 31 | 32 | ### Beliefs 33 | 34 | | Embodied Belief | Felt | Demonstrated | 35 | |:---|:---:|:---:| 36 | | | | | 37 | 38 | --- 39 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/8 - Software Engineering Process/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 8 - Software Engineering Process 2 | 3 | ## Skill Description 4 | Apply software engineering process to solve problems including the agile methodology and the four step problem solving approach 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Homestudy/Bootcamp Exercise (Project plan for a 30 min project) 9 | - Bootcamp Project (Project plan on Trello) 10 | - Post-bootcamp & Andela 21 (Project plan using pivotal tracker) 11 | 12 | ## Objectives 13 | 14 | ### Knowledge 15 | 16 | | Knowledge Unit | Studied | Memorized | 17 | |:---|:---:|:---:| 18 | | | | | 19 | 20 | --- 21 | 22 | ### Behaviors 23 | 24 | | Observable Behavior | Observed | Mastered | 25 | |:---|:---:|:---:| 26 | | | | | 27 | 28 | --- 29 | 30 | ### Beliefs 31 | 32 | | Embodied Belief | Felt | Demonstrated | 33 | |:---|:---:|:---:| 34 | | | | | 35 | 36 | --- -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/9 - Speaking to Be Understood/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 9 - Speaking to Be Understood 2 | 3 | ## Skill Description 4 | Converse confidently on technical topics effectively expressing themselves in a way that others can understand 5 | 6 | ## Output 7 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 8 | - Bootcamp Interview 9 | - Bootcamp project presentation 10 | 11 | ## Objectives 12 | 13 | ### Knowledge 14 | 15 | | Knowledge Unit | Studied | Memorized | 16 | |:---|:---:|:---:| 17 | | | | | 18 | 19 | --- 20 | 21 | ### Behaviors 22 | 23 | | Observable Behavior | Observed | Mastered | 24 | |:---|:---:|:---:| 25 | | | | | 26 | 27 | --- 28 | 29 | ### Beliefs 30 | 31 | | Embodied Belief | Felt | Demonstrated | 32 | |:---|:---:|:---:| 33 | | | | | 34 | 35 | --- 36 | -------------------------------------------------------------------------------- /D0/Technical Capabilities- Pre-Simulations/README.md: -------------------------------------------------------------------------------- 1 | # Pre-Fellowship 2 | 3 | **Skill Description** 4 | ---------- 5 | Fellows at this stage has completed bootcamp, has been extended offers but has not yet started month one. It includes the following Learning Outcomes: 6 | 7 | 1. Builds front end web applications using JavaScript 8 | 2. Designs simple interfaces using html and css 9 | 3. Writes test for javascript code 10 | 11 | **Output - Neighborhood Map** 12 | ---------- 13 | You will develop a single-page application featuring: 14 | 15 | - a map of your neighborhood or a neighborhood you would like to visit 16 | - map markers to identify popular locations or places you’d like to visit 17 | - location search feature to easily discover places 18 | - list view to support simple browsing of all locations 19 | - additional information about each location or place using third-party APIs 20 | -------------------------------------------------------------------------------- /D1/D1 Android/README.md: -------------------------------------------------------------------------------- 1 | # Java for Android Programming Learning Outcomes 2 | 3 | Overview 4 | -------- 5 | These learning outcomes contains content required to have a full grasp of the development of Android applications. By achieving coverage of the outcomes, you will possess the skill of an entry level Android Developer that is comfortable using Java to build real world android applications. 6 | 7 | 1. Android Programming Basics 8 | 2. Android Material Design Concepts 9 | 3. Developing Android UI 10 | 4. Designing User Feedback 11 | 5. User Interaction through Activities and Intents 12 | 6. Navigation & Fragments 13 | 7. Writing Multithreaded applications 14 | 8. Testing (Java/Android) 15 | 9. Working with Databases 16 | 10. Persistence/Data Storage 17 | 11. Services & Content Providers 18 | 12. Sensors & Location 19 | 13. Network Operations 20 | 14. Publishing an Android App 21 | 22 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 23 | -------------------------------------------------------------------------------- /D1/D1 Design/README.md: -------------------------------------------------------------------------------- 1 | Design -------------------------------------------------------------------------------- /D1/D1 DevOps Engineer/Assessment/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sslgeorge/learning_map/22ae9f3ac3c16ebe53b3aec7318f976789c96416/D1/D1 DevOps Engineer/Assessment/.gitkeep -------------------------------------------------------------------------------- /D1/D1 DevOps Engineer/Assessment/01 - Linux-Unix Basics/README.md: -------------------------------------------------------------------------------- 1 | # Assessment 01 - Linux/Unix Basics 2 | 3 | This contains a list of tests to assess a fellows knowledge of the **Linux/Unix Basics** Learning Outcome 4 | 5 | ## Instructions 6 | 7 | 1. Install `vagrant` on local machine if not present 8 | 2. Setup a ubuntu vagrant box 9 | 3. Mount the tests directory onto your vagrant box 10 | 4. Ssh into the vagrant box 11 | 5. Install `bats` **(Bash Automated Testing System)** 12 | 13 | ``` 14 | git clone https://github.com/sstephenson/bats.git 15 | cd bats 16 | ./install.sh /usr/local 17 | ``` 18 | 6. `cd` into the tests directory 19 | 7. Find all `` strings and replace with the proper commands 20 | 8. Run `bats assessment.bats` to run the tests to verify your commands 21 | 22 | -------------------------------------------------------------------------------- /D1/D1 DevOps Engineer/Assessment/01 - Linux-Unix Basics/tests/test_helper.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | do_stub() { 4 | for F in $(compgen -A function | grep -e ^@stub:); do 5 | NAME=${F#@stub:} 6 | TMP=/tmp/stub-$RANDOM 7 | 8 | echo '#!/bin/bash' > $TMP 9 | echo 'set -e' >> $TMP 10 | 11 | type $F | sed "1,3d;$ d;s/^ *//g" >> $TMP 12 | chmod +x $TMP 13 | 14 | cp $TMP /usr/local/sbin/$NAME 15 | 16 | rm -f $TMP 17 | done 18 | } 19 | 20 | undo_stub() { 21 | for F in $(compgen -A function | grep -e ^@stub:); do 22 | NAME=${F#@stub:} 23 | 24 | rm /usr/local/sbin/$NAME 25 | done 26 | } 27 | 28 | run_command() { 29 | pushd $tmp_dir 30 | do_stub 31 | 32 | run "$@" 33 | 34 | undo_stub 35 | 36 | echo "Output:" 37 | echo $output 38 | popd 39 | } 40 | 41 | create_tmp_dir() { 42 | export tmp_dir=$(mktemp -d -t test.XXXX) 43 | } 44 | 45 | delete_tmp_dir() { 46 | rm -rf $tmp_dir 47 | } 48 | 49 | create_files_and_directories() { 50 | pushd $tmp_dir 51 | mkdir -p foo/file-{1,3}.txt 52 | touch foo/file-{2,4}.txt 53 | 54 | mkdir -p bar/file-{2,4}.txt 55 | touch bar/file-{1,3}.txt 56 | 57 | echo "other pattern" > foo/file-2.txt 58 | echo "pattern" > foo/file-4.txt 59 | echo "pattern" > bar/file-1.txt 60 | echo "pattern" > bar/file-3.txt 61 | popd 62 | } 63 | 64 | create_virtual_block_device() { 65 | if sudo losetup -a | grep 'loop0'; then 66 | cleanup_virtual_block_device 67 | fi 68 | 69 | sudo truncate -s 2G /mnt/blockdevice 70 | sudo losetup /dev/loop0 /mnt/blockdevice 71 | } 72 | 73 | cleanup_virtual_block_device() { 74 | if sudo losetup -a | grep 'loop0'; then 75 | if sudo mount | grep '/dev/loop0'; then 76 | sudo umount /dev/loop0 77 | fi 78 | 79 | sudo losetup -d /dev/loop0 80 | sudo rm -rf /mnt/blockdevice 81 | fi 82 | } 83 | -------------------------------------------------------------------------------- /D1/D1 DevOps Engineer/Assessment/02 - Networking/README.md: -------------------------------------------------------------------------------- 1 | # Assessment 02 - Networking 2 | 3 | This contains a list of questions to assess a fellows knowledge of the **Networking** Learning Outcome 4 | 5 | ## Questions 6 | 7 | 1. Display network interfaces 8 | 9 | ``` 10 | command goes here 11 | ``` 12 | 13 | 2. Display network routing table 14 | 15 | ``` 16 | command goes here 17 | ``` 18 | 19 | 3. Disable **ICMP** ping requests to your local machine 20 | 21 | ``` 22 | command goes here 23 | ``` 24 | 25 | 4. Use a subnet mask to allocate IP addresses on a network 26 | 27 | Given the ip range **10.0.10.0/24** 28 | 29 | ``` 30 | minimum_ip_address="" 31 | maximum_ip_address="" 32 | ``` 33 | 34 | Given the ip range **10.0.10.0/30** 35 | 36 | ``` 37 | minimum_ip_address="" 38 | maximum_ip_address="" 39 | ``` 40 | 41 | 5. Use `ssh` to forward port **2444** on remote machine **10.0.0.1** to local port **6333** 42 | 43 | ``` 44 | command goes here 45 | ``` 46 | 47 | 6. Using `ssh` with authentication agent forwarded, connect to remote machine **10.0.0.1** 48 | 49 | ``` 50 | command goes here 51 | ``` 52 | 53 | 7. Using `ssh`, connect to remote machine **10.0.0.1** with the private key `private.key.pem` 54 | 55 | ``` 56 | command goes here 57 | ``` 58 | 59 | 8. Using `scp`, copy file `/home/user/file.txt` on remote machine **10.0.0.1** to your local machine 60 | 61 | ``` 62 | command goes here 63 | ``` 64 | 65 | 9. Using `scp`, copy local file at `/home/user/file.txt` to remote machine **10.0.0.1** 66 | 67 | ``` 68 | command goes here 69 | ``` 70 | 71 | 10. List all open ports on a system 72 | 73 | ``` 74 | command goes here 75 | ``` 76 | 77 | 11. Block ip address from accessing all ports on your local machine using iptables 78 | 79 | ``` 80 | command goes here 81 | ``` 82 | 83 | 12. List differences between IPV4 & IPV6 addresses 84 | 85 | -------------------------------------------------------------------------------- /D1/D1 DevOps Engineer/README.md: -------------------------------------------------------------------------------- 1 | # Entry-Level DevOps Engineer 2 | 3 | The Entry-Level DevOps Engineer is a role that includes the following Learning Outcomes: 4 | 5 | 1. Fundamentals of DevOps- “What is a DevOps Engineer” 6 | 2. Command Line (UNIX) & Automating with Bash 7 | 3. Networking 8 | 4. Configuration/Change Management & Tools 9 | 5. Build Management 10 | 6. Release Engineering & Release Management 11 | 7. Continuous Integration & Continuous Deployment 12 | 8. Virtualization 13 | 9. SaaS, PaaS, & IaaS 14 | 10. Monitoring & Logging 15 | 11. Backup & Restore 16 | 12. Securing Deployments 17 | 13. System Maintenance 18 | 19 | ![screen shot 2017-06-22 at 8 19 19 am](https://user-images.githubusercontent.com/5239538/27559849-09f3a3a4-5a90-11e7-9a8a-196cf6fa4e78.png) 20 | 21 | 22 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 23 | -------------------------------------------------------------------------------- /D1/D1 Developer/Curriculum/27 - Order of Operations/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 27 - Order of Operations 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow understands the order of operations for Mathematics and how order of operations vary across programming languages. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, I should be able to have the following: 10 | 11 | 1. Discussion with a Staff Member describing mathematical order of operations and how they vary across programming languages 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | Order of operations in Mathematics | [ ] | [ ] | 23 | | How order of operations vary across programming languages | [ ] | [ ] | 24 | | How understanding order of operations can prevent bugs in systems | [ ] | [ ] | 25 | 26 | 27 | 28 | ---------- 29 | 30 | 31 | ## **Behaviors** 32 | 33 | | Observable Behavior | Practiced | Observed | 34 | |:-------------|:------------------:|:--------:| 35 | | **Context:** When I write programs that use mathematical operations **Action:** I ensure that my mathematical expressions follow the right order required by the desired result | [ ] | [ ] | 36 | 37 | 38 | ---------- 39 | 40 | 41 | ## **Beliefs** 42 | 43 | 44 | | Embodied Belief | Felt | Demonstrated | 45 | |:-------------|:------------------:|:--------:| 46 | | Understanding order of operations in programming is an essential tool in my code writing and debugging toolboxes | [ ] | [ ] | 47 | 48 | 49 | ### Resources 50 | 51 | - [_Intro to Order of Operations_](https://www.khanacademy.org/math/pre-algebra/pre-algebra-arith-prop/pre-algebra-order-of-operations/v/introduction-to-order-of-operations)- Khan Academy 52 | -------------------------------------------------------------------------------- /D1/D1 Developer/Curriculum/41 - Text Editors/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 41 - Text Editors 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow understands the basics of how to edit a file, find and replace text, undo changes, and save the file with a new filename. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, I should be able to create the following: 10 | 11 | 1. A file that I have edited and saved with a new name using a text editor 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | How to open new files for editing in my text editor | [ ] | [ ] | 23 | | How to find and replace text in my text editor | [ ] | [ ] | 24 | | Common shortcut functions in my text editor | [ ] | [ ] 25 | 26 | 27 | ---------- 28 | 29 | 30 | ## **Behaviors** 31 | 32 | | Observable Behavior | Practiced | Observed | 33 | |:-------------|:------------------:|:--------:| 34 | | **Context:** When I need to make the same edits at multiple points in file **Action:** I use the find and replace functionality of my text editor | [ ] | [ ] | 35 | | **Context:** When I need to revert to a previous edit when working on a file **Action:** I use the undo functionality of my text editor | [ ] | [ ] | 36 | | | | | 37 | 38 | 39 | 40 | ---------- 41 | 42 | 43 | ## **Beliefs** 44 | 45 | 46 | | Embodied Belief | Felt | Demonstrated | 47 | |:-------------|:------------------:|:--------:| 48 | | Mastering the functionalities of my text editor increases my productivity | [ ] | [ ] | 49 | 50 | 51 | ### Resources 52 | 53 | - [Visual Code Treasures](https://medium.com/@0x1AD2/visual-studio-code-treasures-1accae07c60a) - Contributed by Bolaji Olajide 54 | - [How I learned to love Vim](https://goo.gl/RtYg9k) - Contributed by Bolaji Olajide 55 | -------------------------------------------------------------------------------- /D1/D1 Developer/README.md: -------------------------------------------------------------------------------- 1 | # Entry-Level Developer 2 | 3 | The Entry-Level Developer is the first role in the Andela Fellowship. It includes the following Learning Outcomes: 4 | 5 | 6 | 1. Active Listening 7 | 2. Adaptability 8 | 3. Attention to Detail 9 | 4. Creativity 10 | 5. Cultural Awareness 11 | 6. Decision Making 12 | 7. Focus & Concentration 13 | 8. Holistic / Big Picture Thinking 14 | 9. Managing Expectations 15 | 10. Motivation & Commitment 16 | 11. Organizational Functional Awareness 17 | 12. Problem Solving & Critical Thinking 18 | 13. Reading to Understand 19 | 14. Relationship Building 20 | 15. Seeks & Requests Feedback 21 | 16. Speaking to Be Understood 22 | 17. Stakeholder Management 23 | 18. Team Dynamics 24 | 19. Willingness to Ask Questions 25 | 20. Writing Professionally 26 | 21. Agile Process 27 | 22. Algorithms 28 | 23. Patterns & MVC 29 | 24. Data Structures 30 | 25. Test-Driven Development 31 | 26. Discrete Math & Algebra 32 | 27. Order of Operations 33 | 28. Object Oriented Programming 34 | 29. HTML / CSS 35 | 30. Version Control 36 | 31. 2 & 3 Tier Architecture 37 | 32. Security 38 | 33. Databases 39 | 34. API 40 | 35. Proper Use of Environments 41 | 36. UI/UX Awareness / Design 42 | 37. End-to-End Testing 43 | 38. Debugging 44 | 39. Mobile Development 45 | 40. Estimating 46 | 41. Text Editors 47 | 42. Command Line (Unix) 48 | 43. Git 49 | 44. Spreadsheets 50 | 45. Calendar 51 | 46. Docs 52 | 47. Pivotal Tracker 53 | 48. Slack 54 | 49. Skype / Hangouts 55 | 56 | --- 57 | 58 | ### Resources 59 | - [Here's a great work == learning resource that lets you rebuild all your favorite classic games and apps... and add to them, too!](https://glitch.com/) 60 | 61 | 62 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 63 | -------------------------------------------------------------------------------- /D1/D1 Java/README.md: -------------------------------------------------------------------------------- 1 | # Entry Level Java Developer 2 | 3 | Java is a programming language that is used by many enterprises for Server Apps and Web Apps, particularly in the fields of Financial Tech and ECommerce. 4 | 5 | An entry level Java Developer can make meaningful contributions to projects under direction from a more senior developer. They are able to take initiative on simple tasks in a Java environment, and are constantly hungry to learn more. 6 | 7 | This track is also a good pre-requisite for beginning an Android Development track. 8 | 9 | ## Skills 10 | 1. Java Environment Basics 11 | 2. Java Programming Basics 12 | 3. Java as an Object Oriented Language 13 | 4. Java Classes and Objects 14 | 5. Exceptions in Java 15 | 6. Data Structures in Java 16 | 7. Java- Files and I/O 17 | 18 | 19 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 20 | -------------------------------------------------------------------------------- /D1/D1 JavaScript/Curriculum/README.md: -------------------------------------------------------------------------------- 1 | The JavaScript D1 Track covers both back and front end, and includes the following skills: 2 | 3 | 01. Intro to JavaScript 4 | 02. Getting Started with JavaScript 5 | 03. Variables & Operators 6 | 04. JavaScript Data Types 7 | 05. Functions 8 | 06. Control Flow 9 | 07. Arrays 10 | 08. Regular Expressions in JavaScript 11 | 09. JavaScript Objects 12 | 10. Prototypes 13 | 11. Writing Clean JavaScript Code 14 | 12. Essential JavaScript Design Patterns 15 | 13. The JavaScript DOM 16 | 14. Security, Debugging, and Exception Handling 17 | 15. Test Driven Development in JavaScript 18 | 16. Working with Events and Event Listeners 19 | 17. jQuery 20 | 18. Introduction to Node.JS: Working with Node Modules 21 | 19. Working with HTTP Concepts in Node.js 22 | 20. Working with Databases 23 | 21. Functional Programming in JavaScript 24 | -------------------------------------------------------------------------------- /D1/D1 JavaScript/README.md: -------------------------------------------------------------------------------- 1 | # D1 JavaScript 2 | 3 | Here are a few key resources to support you in your learning. 4 | - ["Our 500+ engineers all use this front end development guide"](https://medium.freecodecamp.com/grabs-front-end-guide-for-large-teams-484d4033cc41) 5 | - ["State of JavaScript Frameworks"](https://www.npmjs.com/npm/state-of-javascript-frameworks-2017-part-1) 6 | 7 | 8 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 9 | -------------------------------------------------------------------------------- /D1/D1 PHP/D1 Laravel/Curriculum/12 - Asset Pipeline/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 12 - Asset Pipeline 2 | 3 | ## Skill Description 4 | ---------- 5 | A person with this skill can use Asset pipeline as a tool to process Javascript files and stylesheets, and prepare them for use by the browser. 6 | 7 | ## Outputs 8 | ---------- 9 | Create an application that makes use of Laravel Elixir to manage all your application assets (Javascript, css, images, etc.). 10 | 11 | ---------- 12 | ## Knowledge 13 | 14 | 15 | | Knowledge Unit | Studied | Applied | 16 | |:-------------|:------------------:|:--------:| 17 | | The definition of the "Asset Pipeline" | [ ] | [ ] | 18 | | The definition of "Cache Busting" | [ ] | [ ] | 19 | | How to configure Elixir to work with less, sass, and JavaScript files | [ ] | [ ] | 20 | | How and why to precompile assets | [ ] | [ ] | 21 | | How an Assets Pipeline operates in development and production mode | [ ] | [ ] | 22 | 23 | 24 | 25 | ---------- 26 | 27 | 28 | ## Behaviors 29 | 30 | 31 | | Observable Behavior | Practiced | Observed | 32 | |:-------------|:------------------:|:--------:| 33 | | **Context:** When my application is in production mode **Action:** I precompile all assets. | [ ] | [ ] | 34 | | **Context:** When I want to run Laravel Elixir **Action:** I use Gulp. | [ ] | [ ] | 35 | | **Context:** When adding CSS/JavaScript files to my views **Action:** I use the provided assets helper methods. | [ ] | [ ] | 36 | 37 | 38 | ---------- 39 | 40 | 41 | ## Beliefs 42 | 43 | 44 | | Embodied Belief | Felt | Demonstrated | 45 | |:-------------|:------------------:|:--------:| 46 | | Application assets are critical to the function of every Laravel application. | [ ] | [ ] | 47 | -------------------------------------------------------------------------------- /D1/D1 PHP/D1 Laravel/Curriculum/17- Queues/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 17- Queues 2 | 3 | ## Skill Description 4 | ---------- 5 | A person with this skill can use Laravel's powerful queuing system for the handling of delayed jobs (e.g sending of emails) and long running tasks. 6 | 7 | ## Outputs 8 | ---------- 9 | Configure a queue to delay the sending of email in an application you previously built. 10 | 11 | 12 | ---------- 13 | ## Knowledge 14 | 15 | 16 | | Knowledge Unit | Studied | Applied | 17 | |:-------------|:------------------:|:--------:| 18 | | How to set up a queue | [ ] | [ ] | 19 | | When to make use of queues | [ ] | [ ] | 20 | | How to set up drivers for the queue | [ ] | [ ] | 21 | | How to create a job for a queue | [ ] | [ ] | 22 | | How to dispatch a job onto a queue | [ ] | [ ] | 23 | | How to run a queue worker | [ ] | [ ] | 24 | | How to use queues in conjunction with email | [ ] | [ ] | 25 | 26 | 27 | ---------- 28 | 29 | 30 | ## Behaviors 31 | 32 | 33 | | Observable Behavior | Practiced | Observed | 34 | |:-------------|:------------------:|:--------:| 35 | | **Context:** When building an application that has long processes running in the background **Action:** I set up a full queue. | [ ] | [ ] | 36 | | **Context:** When I want to delay an action in my app **Action:** I dispatch a job to a queue. | [ ] | [ ] | 37 | | **Context:** When I am done building an application **Action:** I run a queue worker. | [ ] | [ ] | 38 | 39 | 40 | ---------- 41 | 42 | 43 | ## Beliefs 44 | 45 | 46 | | Embodied Belief | Felt | Demonstrated | 47 | |:-------------|:------------------:|:--------:| 48 | | Queues are a great way to defer long running tasks. | [ ] | [ ] | 49 | | Queues help improve the application processing time and it improves application performance. | [ ] | [ ] | 50 | -------------------------------------------------------------------------------- /D1/D1 PHP/D1 Laravel/README.md: -------------------------------------------------------------------------------- 1 | Q1 2017 D1 Laravel Curriculum 2 | -------------------------------------------------------------------------------- /D1/D1 PHP/D1 PHP/Curriculum/Module 11 - File Handling/README.md: -------------------------------------------------------------------------------- 1 | # Module 11: File Handling 2 | 3 | ## Skill Description 4 | A person with this skill can make effective use of File Handling in a PHP app. 5 | 6 | ## Outputs 7 | ---------- 8 | Create a simple File Manager in PHP that allows the user to create, read, update, and delete files, as well as navigate through the files they add. 9 | 10 | ---------- 11 | ## Knowledge 12 | 13 | 14 | | Knowledge Unit | Studied | Applied | 15 | |:-------------|:------------------:|:--------:| 16 | | How to perform basic file operations in PHP| [ ] | [ ] | 17 | | How to perform basic directory operations using PHP| [ ] | [ ] | 18 | | How to perform advanced directory operations using PHP (eg. DirectoryIterator, SPL Iterator classes)| [ ] | [ ] | 19 | 20 | 21 | ---------- 22 | 23 | 24 | ## Behaviors 25 | 26 | | Observable Behavior | Practiced | Observed | 27 | |:-------------|:------------------:|:--------:| 28 | | **Context:** When building a file-handling application with PHP **Action:** I use inbuilt functions such as file_get_contents to read contents from a file.| [ ] | [ ] | 29 | | **Context:** When interacting with directories within my PHP program **Action:** I use DirectoryIterator and RecursiveDirectoryIterator classes.| [ ] | [ ] | 30 | 31 | ---------- 32 | 33 | 34 | ## Beliefs 35 | 36 | 37 | | Embodied Belief | Felt | Demonstrated | 38 | |:-------------|:------------------:|:--------:| 39 | | The DirectoryIterator class provides a simple interface for viewing the contents of filesystem directories. | [ ] | [ ] | 40 | | Compared to the inbuilt file functions, the iterator Class provides better and more fluent methods for file and directory operations. | [ ] | [ ] | 41 | -------------------------------------------------------------------------------- /D1/D1 PHP/D1 PHP/README.md: -------------------------------------------------------------------------------- 1 | Q1 2017 D1 PHP Curriculum 2 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 05- Build a RestFul API using Slim/README.md: -------------------------------------------------------------------------------- 1 | # Output 05- Build a RESTful API using Slim 2 | 3 | - **The Product:** Build a RestFul API using Slim. If you need an example to get you started, [check this out.](https://docs.google.com/document/d/1J39GPJ5Md5hrCITVYbkDydo5sFPSPtFFhxHH7wgZ1tI)
4 | - **The Process:** Use it for an application that allows users to create, update, and delete (one you've created in a previous output, or any other PHP application you may have worked on).
5 | - **The Follow-Through:** Re-write the API using two different PHP frameworks and explain which one you would choose if you were to deploy the API. 6 | ---- 7 | ## Related Skills 8 | - [Introduction to HTTP Concepts, Forms, Sessions and Web Services](https://github.com/andela/learningmap/blob/master/Phase-C/PHP-Learning-Outcomes/Curriculum/Module%208%20-%20Introduction%20to%20HTTP%20Concepts%2C%20Forms%2C%20Sessions%20and%20Web%20Services/README.md) 9 | - [Introduction to MVC Frameworks in PHP](https://github.com/andela/learningmap/tree/master/Phase-C/PHP-Learning-Outcomes/Curriculum/Module%209%20-%20Introduction%20to%20MVC%20Frameworks%20in%20PHP) 10 | 11 | ---- 12 | ## Related Resources 13 | - [Learn PHP- Getting Started](http://www.learn-php.org/) 14 | - [SoloLearn- PHP](https://www.sololearn.com/Course/PHP/) 15 | 16 | --- 17 | 18 | >> ### Contribute 19 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 20 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 06- Refactor an Application to add Security and Error Handling/README.md: -------------------------------------------------------------------------------- 1 | # Output 06- Refactor an Application to add Security and Error Handling 2 | 3 | - **The Product:** On one of the PHP applications you've been working on, add in Security and Error Handling.
4 | - **The Process:** Implement a Secure Register and Login Script written in PHP (or add these features to a PHP application you have been working on). Also implement error handling at appropriate points.
5 | - **The Follow-Through:** Make sure you thoroughly test to ensure you've handled all possible errors. 6 | ---- 7 | ## Related Skills 8 | - [Security, Debugging and Exception Handling](https://github.com/andela/learningmap/tree/master/Phase-C/PHP-Learning-Outcomes/Curriculum/Module%2010%20-%20Security%2C%20Debugging%20and%20Exception%20Handling%20) 9 | 10 | ---- 11 | ## Related Resources 12 | - [PHP Web Application Security- PluralSight](https://app.pluralsight.com/channels/details/8ba501cb-8276-493c-a781-a1c921bcfe55?s=1) 13 | 14 | --- 15 | 16 | >> ### Contribute 17 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 18 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 07- Debug an Appication/README.md: -------------------------------------------------------------------------------- 1 | # Output 07- Debug an Application 2 | 3 | - **The Product:** No application is "complete" without debugging... and every application will have bugs!
4 | - **The Process:** Debug your PHP application, gradually breaking down the broken part of the process and testing each smaller piece to identify where the core issue or “failure point” is.
5 | - **The Follow-Through:** Log any bugs you find in a bug tracking tool, and include a written bug report/status report. 6 | ---- 7 | ## Related Skills 8 | - [Debug your Code](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20Test%20Engineer/Curriculum/Part%202-%20Test%20an%20Andela%20Product/Output%2005-%20Debug%20your%20Code) 9 | - [Debugging](https://github.com/andela/learningmap/blob/master/Phase-C/Entry-level%20Developer/Curriculum/38%20-%20Debugging/README.md) 10 | 11 | ---- 12 | ## Related Resources 13 | - [PHP Fundamentals- PluralSight](https://app.pluralsight.com/library/courses/php-fundamentals/table-of-contents) 14 | 15 | --- 16 | 17 | >> ### Contribute 18 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 19 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 08- Add Laravel Framework and Configure Authentication/README.md: -------------------------------------------------------------------------------- 1 | # Output 08- Add Laravel Framework and Configure Authentication 2 | 3 | - **The Product:** Build a new PHP applicaiton from scratch, this time using PHP's Laravel Framework.
4 | - **The Process:** Configure authentication on a fresh Laravel install and generate authentication resources. Use Laravel Generators for scaffolding to accelerate development. 5 | - **The Follow-Through:** Get real users to try out your app and make refactoring changes that they suggest! 6 | 7 | ---- 8 | ## Related Skills 9 | - [Using Laravel as an MVC Framework](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/1%20-%20MVC) 10 | - [Using Laravel Generators](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/2%20-%20Generators) 11 | - [Authentication in Laravel](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/3%20-%20Authentication) 12 | 13 | ---- 14 | ## Related Resources 15 | - [Getting Started with Laravel- PluralSight](https://app.pluralsight.com/channels/details/8ba501cb-8276-493c-a781-a1c921bcfe55?s=1) 16 | 17 | 18 | --- 19 | 20 | >> ### Contribute 21 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 22 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 09- Build an API for your Laravel App using Middleware and Routing/README.md: -------------------------------------------------------------------------------- 1 | # Output 09- Build an API for your Laravel App using Middleware and Routing 2 | 3 | - **The Product:** Time for another API! Middleware is a filtering mechanism for HTTP requests entering your Laravel app.
4 | - **The Process:** Use Slim Routes and Middleware and to build an API and connect it to your Laravel application. Use Routing to manage this (and any other) APIs in your Laravel application, and assign Middleware to routes. 5 | - **The Follow-Through:** Get real users to try out your app and make refactoring changes that they suggest! 6 | 7 | ---- 8 | ## Related Skills 9 | - [Routing and Middleware](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/4%20-%20Routing%20%26%20Middleware) 10 | - [Using Laravel Generators](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/2%20-%20Generators) 11 | - [Authentication in Laravel](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/3%20-%20Authentication) 12 | 13 | ---- 14 | ## Related Resources 15 | - [RESTful Web Services with PHP and Laravel- PluralSight](https://app.pluralsight.com/channels/details/8ba501cb-8276-493c-a781-a1c921bcfe55?s=1) 16 | 17 | 18 | --- 19 | 20 | >> ### Contribute 21 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 22 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 11- Refactor your Application with Asset Pipeline/README.md: -------------------------------------------------------------------------------- 1 | # Output 11- Refactor your Application with Asset Pipeline 2 | 3 | - **Refactor:** Use Laravel Elixer to Refactor your Petsitting Application. Write a short reflection on the major differences and gather user feedback on the relative usability of each. 4 | 5 | Remember, [reflecting and refactoring to approach your learning in different ways is **critical** in learning and solidifying a new skill.](https://sites.google.com/andela.com/curriculum/whats-new/learning-tips?authuser=1) 6 | 7 | ---- 8 | ## Related Skills 9 | - [Laravel Asset Pipeline](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/12%20-%20Asset%20Pipeline) 10 | 11 | ---- 12 | ## Related Resources 13 | - [Laravel Elixer](https://laravel.com/docs/5.3/elixir) 14 | 15 | 16 | 17 | --- 18 | 19 | >> ### Contribute 20 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 21 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 12- Add Email Notifications to your Application/README.md: -------------------------------------------------------------------------------- 1 | # Output 12- Add Email Notifications to your Application 2 | 3 | - **The Product:** Add email notifications to your Petsitting application.
4 | - **The Process:** Think about when you might want email notifications to go out-- when a user signs up, when they change their password, when someone requests their Petsitting services... and add appropriate listeners in those places.
5 | - **The Follow-Through:** Get user feedback on your notifications to make sure they are covering every event a user would expect. 6 | 7 | ---- 8 | ## Related Skills 9 | - [Mail](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/16-%20Mail) 10 | - [Events, Listeners, and Observers](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum/13%20-%20Events) 11 | 12 | ---- 13 | ## Related Resources 14 | - [Laravel Curriculum](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum) 15 | 16 | --- 17 | 18 | >> ### Contribute 19 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 20 | -------------------------------------------------------------------------------- /D1/D1 PHP/Output Oriented D1 PHP:Laravel/Output 13- Add Errors and Logging to your Application/README.md: -------------------------------------------------------------------------------- 1 | # Output 13- Add Errors and Logging to your Application 2 | 3 | - **The Product:** Laravel has powerful log handlers.
4 | - **The Process:** On one of the Laravel applications you've been working on, add in exception handling techniques and Loggers.
5 | - **The Follow-Through:** Make sure you thoroughly test to ensure you've handled all possible errors. 6 | ---- 7 | ## Related Skills 8 | - [Security, Debugging and Exception Handling](https://github.com/andela/learningmap/tree/master/Phase-C/PHP-Learning-Outcomes/Curriculum/Module%2010%20-%20Security%2C%20Debugging%20and%20Exception%20Handling%20) 9 | - [Errors and Logging](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum) 10 | 11 | ---- 12 | ## Related Resources 13 | - [PHP Web Application Security- PluralSight](https://app.pluralsight.com/channels/details/8ba501cb-8276-493c-a781-a1c921bcfe55?s=1) 14 | - [Laravel Curriculum](https://github.com/andela/learningmap/tree/new-structure/D1/D1%20PHP/D1%20Laravel/Curriculum) 15 | 16 | --- 17 | 18 | >> ### Contribute 19 | >> _Have a resource, experience, KBB, or edit you'd like to add to this Output? [Submit it here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 20 | -------------------------------------------------------------------------------- /D1/D1 PHP/README.md: -------------------------------------------------------------------------------- 1 | 2 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 3 | -------------------------------------------------------------------------------- /D1/D1 Python/README.md: -------------------------------------------------------------------------------- 1 | # Python for Web 2 | 3 | The Python for Web curriculum detailed here shows all the Knowledge, Behaviors and Beliefs required for an Andela Developer to become D1 ready in Python Web Development. 4 | 5 | ### The skills covered here are 6 | 1. HTTP and Web Services 7 | 2. Token Based Authentication 8 | 3. API Design using Flask 9 | 4. Django MVT Basics 10 | 5. Django Models 11 | 6. Django Views 12 | 7. Django Templates 13 | 8. Django Testing 14 | 9. Django REST Framework 15 | 16 | 17 | ## General Resources 18 | #### Resources to get you started on your Python Journey 19 | 20 | - [A curated PluralSight Path](https://app.pluralsight.com/channels/details/7ea6a9f4-44c5-4c5d-9f74-34506617067c) to help you get started... and to help you continually keep learning! 21 | - [Idiomatic Python. Coding the smart way](https://medium.com/the-andela-way/idiomatic-python-coding-the-smart-way-cc560fa5f1d6) - Written by John Seremba 22 | - [_Python Tips_](http://book.pythontips.com/en/latest/index.html) - Contirbuted by Bolaji Olajide 23 | - [Learn Python from Zero to Hero](https://medium.freecodecamp.org/learning-python-from-zero-to-hero-120ea540b567) - Contirbuted by Bolaji Oajide 24 | 25 | 26 | 27 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 28 | -------------------------------------------------------------------------------- /D1/D1 Ruby/D1 Rails/README.md: -------------------------------------------------------------------------------- 1 | # Rails Learning Outcomes 2 | 3 | The Ruby on Rails learning path is recommended to be completed only after going through the "Ruby Development" path. This curriculum includes the following Learning outcomes: 4 | 5 | 1. Rails MVC 6 | 2. Generators 7 | 3. Rails Environments and Environmental Variables 8 | 4. Controllers 9 | 5. Views 10 | 6. Routing 11 | 7. APIs and Versioning 12 | 8. Asset Pipeline 13 | 9. Forms and Helpers 14 | 10. Rake Tasks 15 | 11. Migrations 16 | 12. ActiveRecord 17 | 13. Sessions & Cookies 18 | 14. Callbacks & Events 19 | 15. Authentication & Authorization 20 | 16. Testing my Rails App 21 | 17. Optimizing for Performance 22 | 18. Security 23 | 24 | ## Resources 25 | ### Here are some free resources to get you started on your rails journey 26 | - [Learn Ruby on Rails from Scratch](https://www.udemy.com/learn-ruby-on-rails-from-scratch/) - _9.5 hours Udemy Course_ 27 | - [The Free React on Rails 5 course](https://learnetto.com/users/hrishio/courses/the-free-react-on-rails-5-course) - _A 4-course module that would cost you just your email address_ 28 | - [Ruby on Rails Tutorial (Rails 5)](https://www.railstutorial.org/book/frontmatter) - _14-chapter online book_ - Recommended by Rehema Wachira 29 | 30 | -------------------------------------------------------------------------------- /D1/D1 Ruby/README.md: -------------------------------------------------------------------------------- 1 | 2 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 3 | -------------------------------------------------------------------------------- /D1/D1 Skill Glossary/README.md: -------------------------------------------------------------------------------- 1 | This will be a skill glossary for all D1 Skills -------------------------------------------------------------------------------- /D1/D1 Swift-iOS/Curriculum/02 - Functions/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 2 - Functions 2 | ## Skill Description 3 | 4 | A person with this skill can use *functions* to encapsulate and run procedures, using shorthands (Functional Swift Syntax) in scenarios where it can be applied. 5 | 6 | 7 | ## Output 8 | 9 | Create a *function* in Swift Playground that can parse different data types and return a result depending on the parameters' data types present. 10 | 11 | ## Objectives 12 | 13 | ### Knowledge 14 | 15 | | Knowledge Unit | Studied | Applied | 16 | |:-------------|:------------------:|:--------:| 17 | | Function declaration syntax | [ ] | [ ] | 18 | | The difference between calling and defining a *function* | [ ] | [ ] | 19 | | How to use Functions and parameters | [ ] | [ ] | 20 | | The difference between Arguments and Parameters | [ ] | [ ] | 21 | | How to make an argument optional | [ ] | [ ] | 22 | | Callback *functions* in Swift | [ ] | [ ] | 23 | | The Function shorthands in Swift | [ ] | [ ] | 24 | 25 | ---------- 26 | ### Behaviors 27 | 28 | | Observable Behavior | Practiced | Observed | 29 | |:-------------|:------------------:|:--------:| 30 | | **Context:** When I need to run a collection of procedures that should run from top to bottom with abstracted encapsulated data, **Action:** I use *functions* | [ ] | [ ] | 31 | | **Context:** When making use of callback *functions* that contain parameters that I need to work with directly, **Action:** I use the shorthands available and avoid creating additional variables or references to the parameters | [ ] | [ ] | 32 | 33 | ---------- 34 | 35 | ### Beliefs 36 | 37 | | Embodied Belief | Felt | Demonstrated | 38 | |:-------------|:------------------:|:--------:| 39 | | Functions will run my procedures from top to bottom continuously without any interruptions. | [ ] | [ ] | 40 | | Memory is conserved when I use parameters directly without creating redundant variables. | [ ] | [ ] | 41 | -------------------------------------------------------------------------------- /D1/D1 Swift-iOS/Curriculum/README.md: -------------------------------------------------------------------------------- 1 | # Swift/iOS Learning Outcomes 2 | 3 | Overview 4 | -------- 5 | iOS (and specifically Swift as a programming language) is one of the main mobile development platforms utilized today. These learning outcomes contain content to empower a person to have a full grasp of iOS mobile app development, using Swift and a thorough understanding of best practices for iOS App development. 6 | 7 | By achieving coverage of the outcomes, you will possess the skill of a junior mobile app developer that is comfortable using the Swift to build real world applications. 8 | 9 | Coverage can be demonstrated by completing the checkpoints / outputs. 10 | 11 | Note: These outputs require Mac OS 10.10 or higher as well as Xcode 7 or higher, installed on the operating system. 12 | 13 | ## General Resources for iOS Development 14 | 15 | - [_Little bits of Cocoa_](https://littlebitesofcocoa.com/) - _Tips and techniques for iOS and Mac development_ - Contributed by Bolaji Olajide 16 | -------------------------------------------------------------------------------- /D1/D1 Swift-iOS/README.md: -------------------------------------------------------------------------------- 1 | 2 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 3 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Curriculum/MidPiont More Practice/README.md: -------------------------------------------------------------------------------- 1 | # Output 06- MidPoint More Practice 2 | 3 | Still looking for more practice? Good for you, [diversity of practice is **critical** in learning a new skill.](https://sites.google.com/andela.com/curriculum/whats-new/learning-tips?authuser=1) 4 |

5 | [_Check out some of the other products you can test, and other ways to get involved in the testing community!_](https://developer.mozilla.org/en-US/docs/Mozilla/QA/How_can_I_help_test_) 6 |
7 |
8 | Or, just **test what you use!** 9 | > All applications have bugs. You can spend your time on exercising the application you use every day such as Facebook, Twitter, LinkedIn, Google Chrome browser, FireFox and see if you can find bugs. 10 | > The next step is to report this bug to customer supports. Once they confirm it’s a bug and they will fix, you are going good. Note this bug down and add this achievement in your CV. 11 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Curriculum/Part 2- Test an Andela Product/Output 02b-- Reflect/README.md: -------------------------------------------------------------------------------- 1 | # Output 02(b)- Reflect 2 | 3 | Reflect on the results of your test in Output 2. How well did your test plan prepare you? How close were you in your time estimation? What tools did you choose, and how well did they serve you? Would you choose a different tool in the future? If so, why?

4 | Remember, [reflecting on your learning is **critical** in learning and solidifying a new skill.](https://sites.google.com/andela.com/curriculum/whats-new/learning-tips?authuser=1) 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Curriculum/Part 2- Test an Andela Product/Output 03b- Refactor/README.md: -------------------------------------------------------------------------------- 1 | # Output 03(b)- Refactor 2 | 3 | For one of your tests (white box), implement automation processes so that it re-tests every time the test fails and the code is updated 4 | 5 | ---- 6 | ------ 7 | ### Skills: 8 | * Automation Testing 9 | * Regression Testing 10 | * Testing Tools 11 | 12 | 13 | 14 | ------ 15 | 16 | 17 | | Resources| 18 | |----------| 19 | | [Automation End to End: Pluralsite](https://app.pluralsight.com/library/courses/automated-testing-end-to-end/table-of-contents)| 20 | 21 | ---- 22 | 23 | >> ### Contribute 24 | >> _Have a resource, experience, or edit you'd like to add to this Output? Submit it [here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 25 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Curriculum/Part 2- Test an Andela Product/Output 05b- Refactor/README.md: -------------------------------------------------------------------------------- 1 | # Output 05(b)- Reflect 2 | 3 | **Reflect** on your experience debugging and reporting the bugs you found: 4 | - Who did you work with? 5 | - How did you work with them? What conflicts were there? 6 | - Did this differ from other experiences you’ve had testing for stakeholders? 7 | 8 | ------ 9 | ### Skills: 10 | - **Communication:** _how to make sure to gather all the important technical details, document them all, get them communicated_ 11 | 12 | ---- 13 | 14 | >> ### Contribute 15 | >> _Have a resource, experience, or edit you'd like to add to this Output? Submit it [here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) and be an active participant in keeping our Curriculum a current, living document!_ 16 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Curriculum/README.md: -------------------------------------------------------------------------------- 1 | 2 | ![test engineer learning track 4](https://user-images.githubusercontent.com/5239538/26896712-c66e0288-4b93-11e7-9297-4daf6aeee4fb.png) 3 | 4 |
5 |
6 | 7 | ![test engineer learning track 5](https://user-images.githubusercontent.com/5239538/26896638-82c4373c-4b93-11e7-8da3-cea3c798c15b.png) 8 | 9 |
10 |
11 | 12 | ![test engineer learning track 4](https://user-images.githubusercontent.com/5239538/26896635-810a8694-4b93-11e7-8731-849bbbc48f1c.png) 13 | 14 |
15 |
16 | 17 | ![test engineer learning track 6](https://user-images.githubusercontent.com/5239538/26896640-84862576-4b93-11e7-9275-c798b7c82992.png) 18 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/README.md: -------------------------------------------------------------------------------- 1 | # Test Engineer 2 | 3 | Test Engineer is a role that comes after Entry-Level Developer and before (or instead of) Mid-Level Developer. Test Engineers (other role titles might be "QA Engineer", "Test Developer") have the opportunity to build on a diverse set of development skills in a wide variety of environments. 4 | 5 | ![test engineer learning track](https://cloud.githubusercontent.com/assets/5239538/26371819/eb57cc26-3fc9-11e7-89ca-281ddda90c0f.jpg) 6 | 7 | 8 | ### Key Responsibilities: 9 | - Support the development team/client to catch regression and ensure quality of production software. 10 | - Work closely with the producer (i.e.) project manager and development team to understand user scenarios, identify gaps in existing test coverage, and prioritize test cases. 11 | - Define test plans, create test cases, perform manual functional testing, and build automated testing. 12 | - Communicate progress clearly both internally and to the client. 13 | 14 | ### Key Technical Skills 15 | - Manual functional testing 16 | - Experience creating test plans, test cases, and defect reports 17 | - Core programming and web development skills in an open source language 18 | 19 | 20 | 21 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 22 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/6- Debugging/README.md: -------------------------------------------------------------------------------- 1 | ## Skill Description 2 | A person with this skill is not only able to _find_ and _isolate_ a bug in a program, they are also able to replicate the problem, gradually breaking down the process into simpler components to determine the root cause of the defect. 3 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/7- Performance Optimization/README.md: -------------------------------------------------------------------------------- 1 | ## Skill Description 2 | A test engineer with this skill understands how application performance issues can impact end user experience and knows how to use tools to monitor and improve baseline performance. 3 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/API/README.md: -------------------------------------------------------------------------------- 1 | # API 2 | 3 | ## Skill Description 4 | A person with this skill can use the basics of application programming interfaces including requests, responses and authentication. They will demonstrate knowledge of being able to use at least one common API. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Active Listening/README.md: -------------------------------------------------------------------------------- 1 | # Active Listening 2 | 3 | ## Skill Description 4 | A person with this skill is present and fully engaged in verbal communication. Finds ways to soften unavoidable interruptions to lessen their negative impact. Engaging, fully present, providing good eye contact, body language, and good judgment in choosing the proper time to speak. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Adaptability/README.md: -------------------------------------------------------------------------------- 1 | # Adaptability 2 | 3 | ## Skill Description 4 | A person with this skill responds calmly and effectively to changes within their work environment. Embraces change, celebrates differences, does not take things personally, and is encouraged/invigorated by challenges/change. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Agile Process/README.md: -------------------------------------------------------------------------------- 1 | # Agile Process 2 | 3 | ## Skill Description 4 | A person with this skill is adept at agile project management concepts. They are familiar with how Scrum meetings are run, and know how to report status, and inform the team about blocker issues. They should also know how to request additional details on a user story. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Agile Testing Quadrants/README.md: -------------------------------------------------------------------------------- 1 | # Agile Testing Quadrants 2 | 3 | ## Skill Description 4 | A person with this skill can explain and make use of the four agile testing quadrants and know how to use them to ensure testing goals are accomplished. 5 | 6 | - Quadrant 1: Writing unit and component tests 7 | - Quadrant 2: Writing functional tests 8 | - Quadrant 3: Performing scenario testing and UATs 9 | - Quadrant 4: Performance, load and security testing" 10 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Algorithms/README.md: -------------------------------------------------------------------------------- 1 | # Algorithms 2 | 3 | ## Skill Description 4 | A person with this skill can clearly explain what an algorithm is, the most common sort algorithms and understands Big O analysis. Fellow also knows how to leverage existing solutions for problems based on accuracy and efficiency 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Attention to Detail/README.md: -------------------------------------------------------------------------------- 1 | # Attention to Detail 2 | 3 | ## Skill Desctiption 4 | A person with this skill can explain the importance of reviewing outputs (code committed, emails sent, slack messages, development environment setup, UI's created) to ensure it meets standards. Through their output, they consistently demonstrate this skill. The Fellow understand the importance of carefully reviewing requests and ensuring that they address everything that is being requested. They pay attention to the context of the problem (see whole picture), and are able to create thorough solutions that address the entire issue and any corresponding issues (eg. fixes all instances of a code review comment and not just the specific example pointed out to them) 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Black Box Testing/README.md: -------------------------------------------------------------------------------- 1 | # Black Box Testing 2 | 3 | ## Skill Description 4 | A person with this skill can explain the concepts of Black Box Testing: that with Black Box testing you cannot see, or do not have access to, any of the inner workings of the product being tested. They should experience and test the product at the exact same level as all possible end users (Power users, casual users, etc). 5 | 6 | This person should know what the expected results/outcomes/functionality of a system are and how to test the boundaries of that system to ensure that it is functioning correctly. 7 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Bug Tracking Tools/README.md: -------------------------------------------------------------------------------- 1 | # Bug Tracking Tools 2 | 3 | ## Skill Description 4 | A person with this skill can effectively report and track bug fixes using one or more of the following bug tracking tools: 5 | 6 | - JIRA 7 | - Bugzilla 8 | - Pivotal Tracker 9 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Calendar/README.md: -------------------------------------------------------------------------------- 1 | # Calendar 2 | 3 | ## Skill Description 4 | A person with this skill knows how to create meetings, invite others to their meeting, use the find a time feature to identify an appropriate meeting time when appropriate or can work with the other attendees to identify a mutually convenient time, and knows how to include location / conferencing information in an invite. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Client Vision Alignment/README.md: -------------------------------------------------------------------------------- 1 | # Client Vision Alignment 2 | 3 | ## Skill Description 4 | A person with this skill clearly articulates the vision of their client and understands how their work helps their client achieve their goals. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Command Line -Unix/README.md: -------------------------------------------------------------------------------- 1 | # Command Line (Unix) 2 | 3 | ## Skill Description 4 | A person with this skill knows how to create directories, move to a different directory, copy files, list directory contents, execute commands with parameters, pipe and redirect. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Creativity/README.md: -------------------------------------------------------------------------------- 1 | # Creativity 2 | 3 | ## Skill Description 4 | A person with this skill applies creative thinking to solve problems and come up with innovative approaches to the work they do. Approaches problem resolution with fresh perspective, imaginative, out of the box ideas without fear. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Cultural Awareness/README.md: -------------------------------------------------------------------------------- 1 | # Cultural Awareness 2 | 3 | ## Skill Description 4 | A person with this skill quickly and naturally grasps the regional and organizational culture of their client and how it differs from the Fellow’s home. They also have the ability to adapt to other cultural norms as if they were their own. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Data Structures/README.md: -------------------------------------------------------------------------------- 1 | # Data Structures 2 | 3 | ## Skill Description 4 | A person with this skill can describe the basic concepts of data structures, the most common data structures (linear data structures and hash tables) and of those, how to identify the most efficient structure to use in a given situation. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Databases/README.md: -------------------------------------------------------------------------------- 1 | # Databases 2 | 3 | ## Skill Description 4 | A person with this skill can clearly explain the basics of databases and can effectively use one to store data and perform basic CRUD (create, read, update and delete) actions against it. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Debugging/README.md: -------------------------------------------------------------------------------- 1 | # Debugging 2 | 3 | ## Skill Description 4 | A person witht his skill makes effective use of the basics of debugging including being able to replicate the problem, and gradually breaking down the process into simpler components to isolate the root cause of the defect. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Decision Making/README.md: -------------------------------------------------------------------------------- 1 | # Decision Making 2 | 3 | ## Skill Description 4 | A person with this skill displays an objective, balanced approach toward decision making. Includes data gathering, identifying multiple options, weighing pros and cons of each option, and using the analysis to inform the ultimate decision. Prioritizes objectives based upon their level of severity and importance. Is able to determine this on their own. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/DevOps/README.md: -------------------------------------------------------------------------------- 1 | # DevOps 2 | 3 | ## Skill Description 4 | A person with this skill is able to demonstrate an understanding of DevOps, how it blends various functions of software development, and its role in a software environment. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Discrete Math and Algebra/README.md: -------------------------------------------------------------------------------- 1 | # Discrete Math and Algebra 2 | 3 | ## Skill Description 4 | A person with this skill can explain the concepts of discrete math focused on understanding what probability is and on basic algebra (assignment and use of variables) 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Docs/README.md: -------------------------------------------------------------------------------- 1 | # Docs 2 | 3 | ## Skill Description 4 | A person with this skill knows how to create a document, format it correctly, and can use the review feature to share the document and give and accept input. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Estimating/README.md: -------------------------------------------------------------------------------- 1 | # Estimating 2 | 3 | ## Skill Description 4 | A person with this skill is able to systematically break down work into individual tasks and provide estimates on each to ultimately derive an estimate on the LOE/time required to complete the work. They should also be able to defend how they came up with the estimate. (Estimates at this stage are not expected to be 100% accurate.) 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Expectations Management/README.md: -------------------------------------------------------------------------------- 1 | # Expectations Management 2 | 3 | ## Skill Description 4 | A person with this skill has a firm grasp on the scope of assigned or self-selected work, derive the level of effort associated with it, and work with stakeholders to come up with reasonable, realistic timeframes for when the work will be delivered. Sets Reasonable, Realistic Timelines for work requested. Meets goals 90% of the time. Comfortable saying “no,...” and presenting alternatives to client or someone with more seniority within Andela 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Focus and Concentration/README.md: -------------------------------------------------------------------------------- 1 | # Focus and Concentration 2 | 3 | ## Skill Description 4 | A person with this skill can assess and manage which situations require focus and concentration, versus times when it is okay to be more laid back. Stays on task despite distractions, knows when to take breaks. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Functional Testing Tools/README.md: -------------------------------------------------------------------------------- 1 | # Functional Testing Tools 2 | 3 | ## Skill Description 4 | A person with this skill can effectively use at least one of the following functional testing tools to confirm that an application is working as expected: 5 | 6 | - Selenium 7 | - Soapui 8 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Functional Testing/README.md: -------------------------------------------------------------------------------- 1 | # Functional Testing 2 | 3 | ## Skill Description 4 | A person with thie skill can verify that a software application performs and functions correctly according to the business requirements and design specifications. They should ensure that core application functions, inputs, outputs, etc are as expected based on defined use cases. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Git/README.md: -------------------------------------------------------------------------------- 1 | # Git 2 | 3 | ## Skill Description 4 | A person with this skill knows how to install git, checkout files, commit files, create a branch, merge, and send a pull request. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/HTML and CSS/README.md: -------------------------------------------------------------------------------- 1 | # HTML and CSS 2 | 3 | ## Skill Description 4 | A person with this skill knows how to code in HTML and use cascading style sheets for simple, elegant front end web development. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Holistic and Big Picture Thinking/README.md: -------------------------------------------------------------------------------- 1 | # Holistic and Big Picture Thinking 2 | 3 | ## Skill Description 4 | A person with this skill understands the big picture of how their work impacts their client, the application they are working on and the end user of the product. They incorporate their understanding to ask questions to better flesh out the feature and ensure that the changes they make address all these factors rather than strictly implementing requests as specified. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Load Testing Tools/README.md: -------------------------------------------------------------------------------- 1 | # Load Testing Tools 2 | 3 | ## Skill Description 4 | A person with this skill can effectively use at least one of the following load testing tools in order to test performance of an application: 5 | 6 | - Jmeter 7 | - FunkLoad 8 | - LoadStorm 9 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Mobile Development/README.md: -------------------------------------------------------------------------------- 1 | # Mobile Development 2 | 3 | ## Skill Description 4 | A person with this skill is familiar with the unique aspects of mobile application development including form factor, memory and bandwidth constraints, touch interfaces, location based services and the advantages and disadvantages of native vs mobile web development. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Motivation and Commitment/README.md: -------------------------------------------------------------------------------- 1 | # Motivation & Commitment 2 | 3 | ## Skill Description 4 | A person with this skill is stays positive, optimistic, and committed for long-term success. Understands the difference between setting goals and giving 100% commitment, takes full responsibility, creates the habit of setting high standards. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Non-Functional Testing/README.md: -------------------------------------------------------------------------------- 1 | # Non-Functional Testing 2 | 3 | ## Skill Description 4 | A person with this skill can make use of non-functional testing is and be able to test for all of the below: 5 | 6 | - Reliability testing 7 | - Usability testing 8 | - Load testing 9 | - Performance testing 10 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Object Oriented Programming/README.md: -------------------------------------------------------------------------------- 1 | # Object Oriented Programming 2 | 3 | ## Skill Description 4 | A person with this skill can explain and effectively use the basic concepts of object oriented programming including abstraction, encapsulation, inheritance, polymorphism, methods, and overloading. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Order of Operations/README.md: -------------------------------------------------------------------------------- 1 | # Order of Operations 2 | 3 | ## Skill Description 4 | A person with this skill is familiar the order of operations for mathematics and how this may vary across programming languages. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Patterns and MVC/README.md: -------------------------------------------------------------------------------- 1 | # Patterns / MVC 2 | 3 | ## Skill Description 4 | A person with this skill can clearly articulate the purpose of design patterns and how to identify potential ones. In particular they will understand the MVC pattern and how it is applied. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Performance Optimization/README.md: -------------------------------------------------------------------------------- 1 | # Performance Optimization 2 | 3 | ## Skill Description 4 | A person with this skill can explain how application performance issues can impact end user experience and knows how to use tools to baseline performance. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Problem Solving and Critical Thinking/README.md: -------------------------------------------------------------------------------- 1 | # Problem Solving and Critical Thinking 2 | 3 | ## Skill Description 4 | A person wtih able to use generic (when available) or ad hoc methods (when not available) in an orderly manner to find solutions to problems. The Problem Solving process consists of a sequence of sections that fit together depending on the type of problem to be solved. These are: 5 | 6 | - Problem Definition. 7 | - Problem Analysis. 8 | - Generating possible Solutions. 9 | - Analyzing the Solutions. 10 | - Selecting the best Solution(s). 11 | - Planning the next course of action (Next Steps) 12 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Project Management Tool/README.md: -------------------------------------------------------------------------------- 1 | # Project Management Tool 2 | 3 | ## Skill Description 4 | A person with this skill knows how to view current, backlog and iceboxed stories, see which stories have been assigned to them, be able to update stories with an estimate and with activity undertaken on the story, and create their own stories for work that has been assigned to them outside of the tool. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Proper use of Environments/README.md: -------------------------------------------------------------------------------- 1 | # Proper Use of Environments 2 | 3 | ## Skill Description 4 | A person with this skill makes proper use of environments including the appropriate usage of development, testing, integration, staging and production environments and how application code progresses from one environment to the next 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/README.MD: -------------------------------------------------------------------------------- 1 | # How to Use this Glossary 2 | 3 | This is a repository of Skills that may be useful in various combinations for the work outputs required of a *Test Engineer*. Use this list as a reference or [click here](https://docs.google.com/a/andela.com/forms/d/e/1FAIpQLSeiwit-7JW3UScG9ItDX9DUZZnlCwdpo7aWruahsPKNJ_6JOA/viewform?usp=sf_link) to add a new skill suggestion. 4 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Reading to Understand/README.md: -------------------------------------------------------------------------------- 1 | # Reading to Understand 2 | 3 | ## Skill Description 4 | A person with this skill identifies and conveys the key points of material/content read. Adept at reading documentation, code, or emails and deriving all required information from them. Has a complete understanding of the information. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Regression Testing and Re-Testing/README.md: -------------------------------------------------------------------------------- 1 | # Regression Testing and Re-Testing 2 | 3 | ## Skill Description 4 | A person with this skill can clearly define the difference between regression testing and re-testing of a particular component or sub-system. They should be able to perform regression testing to ensure that existing functionality is working fine and there are no side effects of any new change or enhancements done in the application. They should also be able to perform retesting in order to ensure that a particular defect has been fixed and its functionality is now working as per the technical specifications. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Relationship Building/README.md: -------------------------------------------------------------------------------- 1 | # Relationship Building 2 | 3 | ## Skill Description 4 | A person with this skill has the ability to build rapport with different types of people in different types of roles in a relatively short amount of time and turn that into a long term, enduring relationship. Ability to establish rapport with a variety of people from a broad range of backgrounds. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Requirements Analysis/README.md: -------------------------------------------------------------------------------- 1 | # Requirements Analysis 2 | 3 | ## Skill Description 4 | A person with this skill can clearly explain the big picture of how their work impacts their client, the application they are working on and the end user of the product. They incorporate their understanding to ask questions to better flesh out the feature and ensure that the changes they make address all these factors rather than strictly implementing requests as specified. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Scalability Design/README.md: -------------------------------------------------------------------------------- 1 | # Scalability Design 2 | 3 | ## Skill Description 4 | A person with this skill has a basic understanding of the importance of scaling and knows how to use tools to test scalability. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Security/README.md: -------------------------------------------------------------------------------- 1 | # Security 2 | 3 | ## Skill Description 4 | A person with this skill can clearly explain and make use of the basics of application security including authentication, authorization, encryption of sensitive data, and input validation. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Seeks and Requests Feedback/README.md: -------------------------------------------------------------------------------- 1 | # Seeks and Requests Feedback 2 | 3 | ## Skill Description 4 | A person with this skill is relentless in their pursuit of external information that will facilitate continuous improvement. Asks all questions needed without hesitation to achieve complete understanding. Shows a desire to sincerely better themselves through an understanding of previous failures. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Skype and Hangouts/README.md: -------------------------------------------------------------------------------- 1 | # Skype and Hangouts 2 | 3 | ## Skill Description 4 | A person with this skill knows how to setup a call, initiate a call with a new contact, respond to a call, invite additional people to a call and change configuration options to use a different microphone or speaker. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Slack/README.md: -------------------------------------------------------------------------------- 1 | # Slack 2 | 3 | ## Skill Description 4 | A person with this skill knows how to initiate a conversation with an individual, call attention to a conversation to a channel, and highlight text in a message. They will also know how to search for previous conversations. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Speaking to be Understood/README.md: -------------------------------------------------------------------------------- 1 | # Speaking to be Understood 2 | 3 | ## Skill Description 4 | A person with this skill speaks in a manner (audibility, pace) that allows the client to engage and understand; confirms that audience understands and responds accordingly. Is able to rephrase a concept using different perspective or vocabulary. Never requires requests for speaking up louder or more clearly. Demonstrates the ability to instruct and inform recipients so that they exhibit a thorough understanding of the subject 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Spreadsheets/README.md: -------------------------------------------------------------------------------- 1 | # Spreadsheets 2 | 3 | ## Skill Description 4 | A person with this skill can create a simple spreadsheet, create formulas, and create a table / chart to represent information. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Stakeholder Management/README.md: -------------------------------------------------------------------------------- 1 | # Stakeholder Management 2 | 3 | ## Skill Description 4 | A person with this skill can identify all stakeholders inside and outside the client team, knowing when to communicate and what to communicate (level of detail). Has complete understanding of client's team, roles, goals, and history. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Team Dynamics/README.md: -------------------------------------------------------------------------------- 1 | # Team Dynamics 2 | 3 | ## Skill Description 4 | A person with this skill can clearly define their role within the structure of the team and what's expected of them; understands the roles of team members and how to work well with them. Adept at their role within the team, promotes team (Andela, Class, client, Etc) first, creates environment that team thrives in. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Test Automation/README.md: -------------------------------------------------------------------------------- 1 | # Test Automation 2 | 3 | ## Skill Description 4 | A person with this skill can explain what test automation is and how it can help to simplify repetitive tasks and eliminate issues around test accuracy. Fellows should know how to write automated tests for repetitive tasks using common testing frameworks. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Test Driven Development/README.md: -------------------------------------------------------------------------------- 1 | # Test Driven Development 2 | 3 | ## Skill Description 4 | A person with this skill is fluent in the concepts behind test driven development and can demonstrate them in practice. 5 | 6 | The Fellow should know: 7 | 1. What to test: 8 | - Public methods of the unit 9 | - All branches of code execution within the unit 10 | - For units that have direct user exposure (such as controllers in an MVC framework) unexpected inputs that a user may use to break the system 11 | 2. What not to test: 12 | - Interaction between the tested unit and another unit 13 | - Correct behavior of underlying libraries 14 | - Unmodified boilerplate code (including generated scaffolds) 15 | 3. What to stub: 16 | - Behaviors of other units (including external applications and libraries) that are necessary for this unit to function 17 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Test Management Tools/README.md: -------------------------------------------------------------------------------- 1 | # Test Management Tools 2 | 3 | ## Skill Description 4 | A person with this skill can effectively use at least one of the following test management tools to create test scenarios, tests cases and document and report bugs: 5 | 6 | - TestRail 7 | - Tarantula 8 | - Test Collab 9 | - Testcube 10 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Test Planning/README.md: -------------------------------------------------------------------------------- 1 | # Test Planning 2 | 3 | ## Skill Description 4 | A person with this skill knows the purpose of having a test plan, and consistently creates testing plans which will ensure that the business, technical, UI/UX, functional and non-functional requirements are tested. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Test Scenarios- Test Cases- and Test Scripts/README.md: -------------------------------------------------------------------------------- 1 | # Test Scenarios, Test Cases, and Test Scripts 2 | 3 | ## Skill Description 4 | A person with this skill can explain the difference between test scenarios, test cases and test scripts. They should be able to document test scenarios based on a requirement, and the high-level test cases and general scripts required to validate the test cases. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Testing End-to-End/README.md: -------------------------------------------------------------------------------- 1 | # Testing End-to-End 2 | 3 | ## Skill Description 4 | A person with this skill consistently demonstrates end-to-end testing by writing test scenarios and scripts which identify system dependences and ensure data integrity across an application. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Text Editors/README.md: -------------------------------------------------------------------------------- 1 | # Text Editors 2 | 3 | ## Skill Description 4 | A person with this skill can define the difference between regression testing and re-testing of a particular component or sub-system. They should be able to perform regression testing to ensure that existing functionality is working fine and there are no side effects of any new change or enhancements done in the application. They should also be able to perform retesting in order to ensure that a particular defect has been fixed and its functionality is now working as per the technical specifications. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Tier 2 and 3 Architecture/README.md: -------------------------------------------------------------------------------- 1 | # Tier 2 & 3 Architecture 2 | 3 | ## Skill Description 4 | A person with this skill can clearly define and make use of the basics of 2 and 3 tier architecture and the separation of the presentation layer from the application logic from the data layer. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/UI UX Awareness and Design/README.md: -------------------------------------------------------------------------------- 1 | # UI/UX Awareness and Design 2 | 3 | ## Skill Description 4 | A person with this skill makes use of the basics of proper UI / UX design including understanding the user and knowing what main components would require usability testing. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Unit Testing/README.md: -------------------------------------------------------------------------------- 1 | # Unit Testing 2 | 3 | ## Skill Description 4 | A person with this skill writes unit tests that validate individual units of source code or sets of one or more modules, together with associated control data, usage procedures, and operating procedures, and ensure that they are fit for use. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Version Control/README.md: -------------------------------------------------------------------------------- 1 | # Version Control 2 | 3 | ## Skill Description 4 | A person with this skill can explain and effectively utilize the concepts behind version control including why it is necessary and the value of branching and merging, and rollback. They are able to resolve merge conflicts for their own code. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/White Box Testing/README.md: -------------------------------------------------------------------------------- 1 | # White Box Testing 2 | 3 | ## Skill Description 4 | A person with this skill can explain the basic elements of White Box Testing: they are aware that with White Box testing, you get more than a superficial view of the product. That the focus of white box testing is to test internal functionality that the end user does not see. They should know how to perform white box testing by understanding the functionality of the application through its source code and understanding API integrations, end point variations, log files of known methods, etc and be able to create tests and execute them. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Willingness to Ask Questions/README.md: -------------------------------------------------------------------------------- 1 | # Willingness to Ask Questions 2 | 3 | ## Skill Description 4 | A person with this skill is constantly seeking help and asking questions to clarify. Consistently demonstrates the ability to ask questions. Asks open ended and powerful questions to gain more than the needed amount of information. 5 | -------------------------------------------------------------------------------- /D1/D1 Test Engineer/Skill Glossary/Writing Professionally/README.md: -------------------------------------------------------------------------------- 1 | # Writing Professionally 2 | 3 | ## Skill Description 4 | A perso with this skill adheres to the 7 C's in written communication: 5 | - Completeness 6 | - Conciseness 7 | - Clarity 8 | - Correctness 9 | - Consideration 10 | - Courtesy 11 | - Concreteness 12 | 13 | They provide clear and concise communication via multiple modes of written communication such as Email, Code, or Documentation 14 | -------------------------------------------------------------------------------- /D1/README.md: -------------------------------------------------------------------------------- 1 | ![d1 level developer zoom](https://user-images.githubusercontent.com/5239538/26901159-bef14826-4ba2-11e7-936a-d5116db2a9a9.png) 2 | -------------------------------------------------------------------------------- /D2/D2 DevOps/01. Proper Use of Environments/README.md: -------------------------------------------------------------------------------- 1 | # Proper Use of Environments 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer uses their knowledge of their client’s business and application to set up the environments and development workflow that best fits their client’s needs. They understand how the environments impact each other and the application, and use best-practices to ensure the optimal results-- an improper use of environments in DevOps can lead to drastic issues for the product. 5 | 6 | --- 7 | 8 | ### Details 9 | - Ability to deploy new modules, upgrades, and fixes to the production environment 10 | - Ability to create, manage, monitor, and maintain development, test, staging, and production environments (and fluency in when to use each) 11 | - Ability to store states in appropriate environment 12 | - Ability to use each environment properly in configuration and automated build processes 13 | - Familiarity with common environment tools such as: 14 | - Google Cloud environment 15 | 16 | --- 17 | 18 | ### Resources 19 | - [Implementing DevOps in the Real World](https://app.pluralsight.com/library/courses/implementing-devops-real-world/description) 20 | -------------------------------------------------------------------------------- /D2/D2 DevOps/01a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | # Work == Learning Check: Number 1 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | ---- 8 | 9 | 1. Choose your tool when you setup your environment, and explain why you chose that specific tool. 10 | - Tool choices: Docker, Vagrant, GitHub, other. 11 | 12 | 13 | 2. Deploy to your own personal accounts to mimic real life work... without the risk of messing up a Partner's code! Take a project from the start of it being deployed on GitHub to a Server where it Functions. 14 | - Have your own personal accounts on GCP, AWS, Heroku… that will help you play around for free for a year. 15 | - You can fork an Andela code base or Partner code to practice 16 | - Don’t be afraid to break things-- make a safe space where you can fail and learn from failure. Where you can try new tools and see the benefits and drawbacks of each. 17 | -------------------------------------------------------------------------------- /D2/D2 DevOps/03a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check: Number 2 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. Choose your tool when you set up your CI/CD, explain why you chose that specific tool: Travis, Circle CI, Jenkins 10 | 2. Set up Unit Test Checks on your CI/CD pipeline. Set up Integration tests check on your CI/CD pipeline. Make sure to [use the proper testing Environment](https://github.com/andela/learningmap/tree/master/D2/D2%20DevOps/1.%20Proper%20Use%20of%20Environments). 11 | 3. **Thought Experiment:** Your partner comes to you and says, “We need to set up secure deployments.” What questions do you ask? What would you need to do to make sure you have Continuous Integration & Deployment? What tools would you suggest and why? 12 | -------------------------------------------------------------------------------- /D2/D2 DevOps/04. Release Engineering/README.md: -------------------------------------------------------------------------------- 1 | # Release Engineering 2 | 3 | ### Skill Description 4 | A Mid-Level DevOps Engineer will almost certainly deal with deployments and release engineering. They must be prepared to manage all of the moving pieces of a release, and support the development team for seamless execution. 5 | 6 | ---- 7 | 8 | ### Details 9 | - Ability to identify all of the source, tools, environment, and other components that make up a particular release. 10 | - Integrate source, third party components, data, and deployment externals of a software system in order to guarantee operational stability 11 | - Ability to provide a stable framework for development, deployment, audit, and accountability for software components 12 | - Ability to ensure that release notes are generated for a specific release version 13 | - Regardless of the tool used (eg. Ansible), ability to understand entire delivery pipeline: 14 | - Running and integrating tests 15 | - Building, versioning, and tagging a new release 16 | - How to rolling back a release 17 | - How to handle blue-green deployments 18 | 19 | ---- 20 | 21 | ### Resources 22 | - [Release Management and Release Engineering](http://www.scmtechblog.net/2016/01/release-management-and-release.html)- Very brief intro outline 23 | - [Release Management](https://app.pluralsight.com/player?course=information-systems-auditor-operations-maintenance-service&author=kevin-henry&name=information-systems-auditor-operations-maintenance-service-m3&clip=0&mode=live)- PluralSight Course Section, short 2 minute video 24 | - [Stage 4: Release](https://app.pluralsight.com/player?course=infrastructure-code-big-picture&author=jason-helmick&name=infrastructure-code-big-picture-m6&clip=0&mode=live)- One section of a longer PluralSight course on DevOps infrastructure 25 | -------------------------------------------------------------------------------- /D2/D2 DevOps/05a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | # Work == Learning Check: Number 3 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. **Thought Experiment:** Extract your work from sprint planning session on your Partner engagement 10 | >> If a developer in your session says “I’m going to work on X” or if a Marketing person says “We are going to demo this to x client at x time,” how do you as a DevOps team member know what that means for the work you need to do? Will Marketing need a testing server for their demo? Will the development team need deployment support? What questions do you need to ask to make sure you have clarity in your upcoming responsibilities? 11 | 12 | 2. **Work Output/ On Partner Work:** Dig into your existing documentation of processes, implementations, and designs. Note what works well in the documents and where you are confused-- could you pick up and go with what is recorded there? Rewrite the documentation (or at least a subset of it) and ask a teammate to try to follow it to make sure your communication is clear. 13 | 14 | 3. **Thought Experiment:** You get to your Partner project and the documentation is not clear or simply does not exist-- what do you do? 15 | -------------------------------------------------------------------------------- /D2/D2 DevOps/06. Configuration and Change Management/README.md: -------------------------------------------------------------------------------- 1 | # Configuration and Change Management 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer will be expected to manage change control and configuration processes for software source code. In order to do this, they must know how to use, set up, and configure client and server versions of build and configuration management tools. They are well versed in each of the tools and their benefits and drawbacks, and can quickly select the best tool to meet their Partner’s needs. 5 | 6 | --- 7 | 8 | ### Details 9 | - Familiarity with 2+ major change management tools and fluency in at least one: 10 | - Chef 11 | - Puppet 12 | - Ansible 13 | 14 | 15 | ---- 16 | 17 | ### Resources 18 | [Configuration Management Explained](http://devopsbootcamp.osuosl.org/11_devops.html)- DevOps Bootcamp 19 | -------------------------------------------------------------------------------- /D2/D2 DevOps/07. Version Control -Git/README.md: -------------------------------------------------------------------------------- 1 | # Version Control (Git) 2 | 3 | ### Skill Description 4 | 5 | In addition to the D1 DevOps expectations for Version Control, a D2 DevOps Engineer should be prepared to resolve merge conflicts for code submitted between members of a team 6 | 7 | --- 8 | 9 | ### Details 10 | - Ability to make use of Git Workflows 11 | - Makes regular, well-written atomic commits 12 | - Uses branches and merges, and comfortable resolving merge conflicts 13 | - Uses more advanced functionalities such as “rebase” and can use git to “cherry pick” 14 | - Awareness of at least one additional Source Control tool (in addition to Git): 15 | - TFS 16 | - Subversion 17 | - Etc. 18 | 19 | --- 20 | 21 | ### Resources 22 | - [Advanced Git Tips and Tricks](https://app.pluralsight.com/library/courses/git-advanced-tips-tricks/table-of-contents)- PluralSight 23 | -------------------------------------------------------------------------------- /D2/D2 DevOps/07a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | # Work == Learning Check: Number 4 2 | 3 | 4 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 5 | 6 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 7 | 8 | --- 9 | 10 | 1. After setting up CI, use your skills of Release Engineering to deploy to a server (or to a Play Store if you are working with a mobile application). 11 | 2. Document your Configuration and Change Management process to clearly describe how you will manage bugs that may arise in your product (will you have a new version number after each bug fix, or a subset of an existing version? How does that decision get made? How do you keep track of the last 10-20 builds you have so that you can see what was happening in each and revert back if necessary?) 12 | 3. Integrate your knowledge of Build Management and Version Control to make sure to version your deployments. Demonstrate the Version control you’ve learned in D1, but demonstrate it in a more encompassing way through your complete documentation and set up of Circle CI or another tool of your choice. 13 | -------------------------------------------------------------------------------- /D2/D2 DevOps/08. Command Line -Unix/README.md: -------------------------------------------------------------------------------- 1 | # Command Line (Unix) 2 | 3 | ### Skill Description 4 | In addition to the D1 Competencies expected of Unix, a D2 DevOps Engineer should be extremely comfortable writing scripts in Unix. They can create their own commands and scripts for frequently used combinations to increase their productivity and the effectiveness of their DevOps flow. 5 | 6 | --- 7 | 8 | ### Details 9 | - Fluent in the commands/ basic scripts that support increased productivity 10 | - High comfort level with: 11 | - Crons 12 | - Config files 13 | - User Administration 14 | - Ability to analyze loads and tune job scheduling 15 | 16 | --- 17 | 18 | ### Resources 19 | - [The Linux Command Line](https://slack-files.com/T02R3LKBA-F7XTCN8BH-a2b1dca209) 20 | - [Review D2 Level Expectations](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/23%20-%20Command%20Line%20(Unix)) 21 | -------------------------------------------------------------------------------- /D2/D2 DevOps/09. Object Oriented Programming/README.md: -------------------------------------------------------------------------------- 1 | # Object Oriented Programming 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should be very comfortable with the best practices in Object Oriented Programming so that they can write clean and effective code for their scripts, and work easily with the code base from the development team. 5 | 6 | ---- 7 | 8 | ### Details 9 | - Familiarity with SOLID principles of object oriented programming (Single Responsibility, Open-Closed, Liskiov substitution, Interface segregation, and Dependency Inversion) 10 | - Ability to refactor code to align with SOLID 11 | 12 | 13 | ---- 14 | 15 | ### Resources 16 | 17 | - Review [D2 Level Skill expectations](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/12%20-%20Object%20Oriented%20Programming) 18 | -------------------------------------------------------------------------------- /D2/D2 DevOps/10. Data Structures and Algorithms/README.md: -------------------------------------------------------------------------------- 1 | # Data Structures & Algorithms 2 | 3 | ### Skill Description 4 | A D2 DevOps engineer should be prepared to make use of binary trees, heaps, b-trees, and graphs. They should be able to identify the most efficient structure to use in a given situation. 5 | 6 | --- 7 | 8 | ### Resources 9 | - [Review D2 Level Expectations](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/10%20-%20Data%20Structures) 10 | -------------------------------------------------------------------------------- /D2/D2 DevOps/11. Patterns- MVC/README.md: -------------------------------------------------------------------------------- 1 | # Patterns/MVC 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should understand Cloud Design Patterns (CDP) that solve common systems design problems around processing dynamic content, static content, uploading data, database management, and network management. 5 | 6 | --- 7 | 8 | ### Details 9 | - Familiar with the following patterns: 10 | - Multi-server Pattern (Server Reduncancy) 11 | - NFS Sharing Pattern (Using shared content) 12 | - Storage Index Pattern (Increasing the Efficiency of Internet Storage) 13 | - DB Replication Pattern (Replicating online databases) 14 | -------------------------------------------------------------------------------- /D2/D2 DevOps/11a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ### Work == Learning Check 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. Write a Unix Script that helps you Unit Test and Service Test your CI/CD (you can do this in Bash using Yammer or another programming language). Apply your programming best practices to your script. 10 | - Refactor your script to ensure it aligns with SOLID principles 11 | - Run your test script. 12 | 13 | 2. **Thought Experiment:** You’re asked to implement 3-tier architecture for your partner-- why might this be a good choice? What are each of the layers? What other patterns could you use? 14 | 15 | 3. **Thought Experiment:** A Developer on your team changes a file on your team's project, and you deploy the project—- and the server doesn’t start! What do you do? How do you dig into the code to figure out what happened? 16 | -------------------------------------------------------------------------------- /D2/D2 DevOps/12. Networking/README.md: -------------------------------------------------------------------------------- 1 | # Networking 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should be able to understand the basics of networking and how different layers interact. By this level, an engineer should feel confident using their networking knowledge to implement infrastructure and routing that is scalable and secure. 5 | 6 | --- 7 | 8 | ### Details 9 | - Ability to plan, configure and verify the implementation of switching solutions, particularly using the Cisco Architecture 10 | - Ability to implement advanced IP addressing and routing techniques required for implementing scalable and highly secure routing solutions in both LANS and WANS 11 | - Familiarity with virtualized and cloud based infrastructure, and the networking and security components therein 12 | - Fluency in working with networking concepts such as: 13 | - DNS 14 | - ACLs 15 | - HTTPS 16 | - Load Balancing (see more details below) 17 | - Firewalls 18 | - How to work with Load Balancing 19 | - How to work with IP (IP Version 6 vs IP Version 4, V4 will be exhausted soon) 20 | - How the OSI Model ties into the application lifecycle 21 | ---- 22 | 23 | ### Resources 24 | - [CompTIA Network Plus](https://www.cybrary.it/course/comptia-network-plus/)- Recommended by Stephen Kanyi 25 | -------------------------------------------------------------------------------- /D2/D2 DevOps/13. Securing Deployments/README.md: -------------------------------------------------------------------------------- 1 | # Securing Deployments 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer keeps the security of the whole system in mind. They can quickly identify vulnerabilities in code and networking, and are able to work with the development team to close them. 5 | 6 | --- 7 | 8 | ### Details 9 | - Ability to manage security on cloud services including: 10 | - Managing Security Credentials 11 | - Using Encryption 12 | - Managing Secure Endpoints 13 | - Configuring Security Groups 14 | - Server Access Logging 15 | - Signing API Requests 16 | - Identity and Access Management (IAM) 17 | - Multi-Factor Authentication (MFA) 18 | - Ability to analyze code to identify and close vulnerabilities 19 | - Ability to identify which ports to open for security reasons 20 | - Knowledge of & practice with: 21 | - Security testing tools 22 | - Secure coding practices 23 | - Securing databases and application data 24 | 25 | --- 26 | 27 | ### Resources 28 | - [AWS Security](https://app.pluralsight.com/library/courses/security-governance-validation-aws-certified-devops-engineer/table-of-contents)- PluralSight 29 | - [Free “Self-Exam” to see how much you know about security Best Practices](https://www.eccouncil.org/programs/certified-ethical-hacker-ceh/ceh-assessment/) 30 | - [Want to learn more about security?](https://www.cybrary.it/course/ethical-hacking/) 31 | -------------------------------------------------------------------------------- /D2/D2 DevOps/14. System Maintenance/README.md: -------------------------------------------------------------------------------- 1 | # System Maintenance 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer has a deeper understanding of DevOps concepts and is taking on larger projects, and is also responsible for continuous upkeep and management of vital applications and programs. Part of their responsibility on the team is to ensure the health, uptime, and performance of production applications and/or systems. They may be required to perform ongoing routine application maintenance tasks, and Automation is an important skill to leverage in this case. 5 | 6 | --- 7 | 8 | ### Details 9 | - Ability to establish requirements, methods, and procedures for routine maintenance 10 | - Ability to automate routine system maintenance processes, such as: 11 | - updating antivirus definitions 12 | - applying system and security patches 13 | - Fluency in 1 and familiarity with 1+ System admin tools: 14 | - Oracle 15 | - Others here 16 | 17 | -------------------------------------------------------------------------------- /D2/D2 DevOps/15. Monitoring and Logging/README.md: -------------------------------------------------------------------------------- 1 | # Monitoring & Logging 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should know how to instrument application & server monitoring, how to gather and analyse metrics. On many teams, this can be the majority of a DevOps Engineer’s work, and knowing the most common monitoring tools for each operating system will be invaluable to your success. A Fellow in this role should also know how to create visual dashboards which aggregate and present data from monitoring results. 5 | 6 | --- 7 | 8 | ### Details 9 | - Ability to monitor and report on health and performance of production systems 10 | - Ability to set up logging and monitoring for web servers and related services 11 | - Ability to set up notifications and alerting for monitoring tools (through the tools or scripting) 12 | - Ability to analyze information in Logs and communicate it to the appropriate stakeholders 13 | - Fluency in at least one monitoring tool and familiarity with 1-2 other common monitoring tools and the pros and cons of each: 14 | - Dynatrace 15 | - New Relic 16 | - AppDynamics 17 | - Riverbed 18 | - Ruxit 19 | - Others... 20 | 21 | 22 | ---- 23 | 24 | ### Resources 25 | - [Monitoring, Metrics, and Logging](https://app.pluralsight.com/library/courses/monitoring-metrics-logging-aws-certified-devops-engineer/table-of-contents)- PluralSight 26 | -------------------------------------------------------------------------------- /D2/D2 DevOps/16. Backup and Restore/README.md: -------------------------------------------------------------------------------- 1 | # Backup and Restore 2 | 3 | ### Skill Description 4 | A DevOps Engineer is responsible for ensuring the continued functioning and success of their application-- they know that problems will arise and plan accordingly. Particularly in this age of mega-data, it is more important than ever to ensure the long term integrity, security, and recoverability of a company’s data. A D2 DevOps Engineer should be prepared to design, test, and ultimately implement a disaster recovery plan to ensure all systems have adequate high-availability (HA) and disaster recovery (DR) protection. 5 | 6 | --- 7 | 8 | ### Details 9 | - Fluent in server backup & recovery 10 | - Ability to implement backup and recovery processes that will offer the appropriate level of granularity given the situation, including: 11 | - File level recovery 12 | - Volume level recovery 13 | - Application level recovery (for example, databases) 14 | - Image level recovery 15 | - Ability to archive data securely for compliance or corporate reasons. 16 | - Archived data must have data durability for long term integrity, security, and be easily recoverable 17 | - Ability to verify that backups are valid and contain correct and relevant data 18 | - Ability to create and run a recovery plan 19 | 20 | --- 21 | 22 | ### Resources 23 | - [Disaster Recovery Planning](https://app.pluralsight.com/player?course=information-systems-auditor-operations-maintenance-service&author=kevin-henry&name=information-systems-auditor-operations-maintenance-service-m4&clip=0&mode=live)- One section of a PluralSight Video course 24 | -------------------------------------------------------------------------------- /D2/D2 DevOps/16a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | # Work == Learning Check: Number 5 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. Write a PowerShell script to set up a legacy server, set up monitoring, and finally move to automation. Create a logging report and visualization to analyze and bring it to the appropriate stakeholders for reporting and review. 10 | 2. Set up Monitoring & Logging on your server. 11 | 3. Simulate failures in different "zones" of your product and execute against your disaster recovery plan (eg. someone hacked into your database and sensitive information was leaked). Simulate and fix each issue. 12 | -------------------------------------------------------------------------------- /D2/D2 DevOps/17. Databases/README.md: -------------------------------------------------------------------------------- 1 | # Databases 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should understand the pros and cons of multiple types of databases and how to assess a product's needs to identify the right one for the job. They are comfortable setting up a database and creating complex queries. The Fellow understands database normalization, how to optimize data for fast reads and/or writes and the importance of indexing. 5 | 6 | --- 7 | 8 | ### Details 9 | - Comfortable with the processes involved in the following tasks: 10 | - Configure a database 11 | - Back up a database and test that your backup maintained data integrity 12 | - Replicate a database 13 | - Ability to administer databases in a production environment 14 | - Familiarity with 1-2 Databases including: 15 | - Oracle 16 | - SQL Server 17 | - Mongo 18 | - RavenDB 19 | - PostgreSQL 20 | 21 | --- 22 | 23 | ### Resources 24 | - [Implementing Available and Scalable Databases](https://app.pluralsight.com/player?course=high-availability-elasticity-aws-certified-devops-engineer&author=mike-pfeiffer&name=high-availability-elasticity-aws-certified-devops-engineer-m4&clip=0&mode=live)- PluralSight Course Section 25 | -------------------------------------------------------------------------------- /D2/D2 DevOps/18. APIs/README.md: -------------------------------------------------------------------------------- 1 | # APIs 2 | 3 | ### Skill Description 4 | A D2 DevOps Engineer should be comfortable integrating into APIs using multiple protocols e.g. REST, SOAP, XML-RPC, JSON, HTTP Post, etc. They should feel comfortable enough to configure, Back up, and replicate APIs 5 | 6 | ---- 7 | 8 | ### Details 9 | - Ability to integrate into APIs using multiple protocols, at least two of: 10 | - REST, SOAP, XML-RPC, JSON, HTTP Post, etc. 11 | 12 | ---- 13 | 14 | ### Resources 15 | - ["DevOps Pipelines and APIs"](http://searchitoperations.techtarget.com/news/450298090/DevOps-pipelines-call-for-APIs-open-source-and-integration-skills)- Interesting opinion article to get you thinking 16 | -------------------------------------------------------------------------------- /D2/D2 DevOps/18a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. Create a recovery plan and verify a backup-- make sure you confirm that your data will be maintained through your plan, or define how to deal with any missing or lost data. 10 | 2. How would you deal with an issue with your product’s API? Using your tools, simulate and fix that issue. 11 | 3. *Thought Experiment:* Troubleshooting an error in a code base- A developer on your team has changed a file in your project, and you as the DevOps engineer go to deploy it… and the server does not start. What do you do to figure out what happened and how to fix it? 12 | 13 | -------------------------------------------------------------------------------- /D2/D2 DevOps/19. Scalability Design/README.md: -------------------------------------------------------------------------------- 1 | # Scalability Design 2 | 3 | 4 | ### Skill Description 5 | A D2 DevOps Engineer understands the importance of scaling, how it impacts the overall goals of the company and consequences on users. By this level, an engineer is looking at how things fit together as an infrastructure system, not simply as individual components. They know when to make trade-offs between scalability designing for short term and long-terms goals. They're relentless in thinking about their design decisions and how it'll work in the future at 10x usage. 6 | 7 | ------- 8 | 9 | ### Details 10 | - Ability to work closely with architects to support scalable system design 11 | - Ability to develop and implement reusable components 12 | - Ability to identify the security and performance risks in scaled designs 13 | - Comfortable designing scalable systems and managing infrastructure that could serve up to 10,000 users 14 | 15 | ----- 16 | 17 | ### Resources 18 | - [Selecting a Cloud Platform and Designing a Highly Available Solution](https://cloudacademy.com/learning-paths/designing-a-highly-available-business-solution-52/)- Cloud Academy 19 | -------------------------------------------------------------------------------- /D2/D2 DevOps/19a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 1. It can be “easy” to learn the concepts of scalability and describe how you would implement them… it’s quite another scenario to actually set up a scalable system. Set up a simple web server and make sure that it is load balanced. (you can use existing code you’ve worked on, or dummy code) Test it for scalability, redundancy, and availability and verify that it can accommodate at least 10,000 users. Document this and walk through the scalability process. 9 | -------------------------------------------------------------------------------- /D2/D2 DevOps/20. Performance Optimization/README.md: -------------------------------------------------------------------------------- 1 | # Performance Optimization 2 | 3 | ### Skill Description: 4 | A D2 DevOps Engineer understands the importance of application performance, how it impacts the overall goals of the company and consequences on users. In addition, they can use tools to baseline performance, use their knowledge of software design and algorithms to improve, and clearly convey the results. 5 | 6 | ----- 7 | 8 | ### Details 9 | - Ability to monitor, test, and evaluate existing applications and platforms for performance 10 | - Ability to provide recommendations for improving performance by: 11 | - Conducting Gap analysis 12 | - Identifying feasible alternative solutions 13 | - Assisting in the scope of modifications 14 | 15 | --- 16 | 17 | ### Resources 18 | - [Continuous Monitoring](https://app.pluralsight.com/library/courses/continuous-monitoring-big-picture/table-of-contents)- PluralSight course, a bit basic but some useful refreshers, tools, and tips for performance monitoring 19 | -------------------------------------------------------------------------------- /D2/D2 DevOps/21. Automation/README.md: -------------------------------------------------------------------------------- 1 | # Automation 2 | 3 | ### Skill Description 4 | As a DevOps Engineer, you are constantly searching to create operational efficiency. Automation can happen at many different stages of the DevOps lifecycle, and through many different tools, manually created scripts, and processes. A D2 DevOps Engineer is comfortable identifying instances when Automation would beneficial, and can create utilities nd tools using scripting languages. They can also leverage the best automations tools for the task at hand, and recognize when automation is not the best answer or would introduce risks. 5 | 6 | ---- 7 | 8 | ### Details 9 | - Ability to create automation and tools in scripting languages, including 1-2 of the following: 10 | - Power Shell 11 | - Perl 12 | - Bash 13 | - Python 14 | - Ruby 15 | - C# 16 | - Ability to create automated builds against your source control repository for various environments: 17 | - Development 18 | - Testing 19 | - Staging 20 | - Production 21 | - Ability to leverage the most common Automation tools, including familiarity with 1-2 of the following: 22 | - Chef 23 | - Puppet 24 | - AWS SDKs (in scripting language of your choice) 25 | - TeamCity 26 | - Jenkins 27 | - Ansible 28 | 29 | 30 | ---- 31 | 32 | ### Resources 33 | - [Orchestration and Automation: The Big Picture](https://app.pluralsight.com/library/courses/orchestration-automation-big-picture/table-of-contents)- PluralSight recommended DevOps Course 34 | -------------------------------------------------------------------------------- /D2/D2 DevOps/22. Self-Motivation and Proactivity/README.md: -------------------------------------------------------------------------------- 1 | # Self-motivation & Proactivity 2 | 3 | ### Skill Description 4 | At a D2 Level, a DevOps Engineer seeks & requests feedback and responds in a structured and systematic way (e.g.,using ASK Feedback and taking feedback to creating S.M.A.R.T. goals). A great DevOps Engineer knows who to go to when they have questions, and consistently and proactively reach out for support and additional information. 5 | 6 | --- 7 | 8 | ### Details 9 | - Proactively seeks out feedback and responds in a structured and systematic way (eg. taking feedback and creating S.M.A.R.T. goals) 10 | - Seeks out challenges 11 | - Proactively identifies areas that need to change for greater efficiency 12 | 13 | --- 14 | 15 | ### Resources 16 | - **Behavior:** If I am blocked for more than 20 minutes on partner work, I first reach out to internal Andela Resources or mentors. 17 | - **Behavior:** If I am still blocked and cannot reach Andela resources, I reach out to my main point of contact at my partner to let them know I am doing research to try to get around the blocker. 18 | - **Behavior:** When there is someone who can help me get unstuck, I proactively set up a video call to discuss 19 | - **Behavior:** When I am done with work for the day, I proactively send updates to my team via slack or another messaging system we use. 20 | - **Behavior:** When I do not understand something about the tools I am using or the domain my company works in, I proactively research on my own to deepen my understanding as much as possible. 21 | - **Belief:** The most important skill to have as a DevOps engineer is curiosity-- and the proactivity to research to answer the questions you have! 22 | -------------------------------------------------------------------------------- /D2/D2 DevOps/23. Adaptability/README.md: -------------------------------------------------------------------------------- 1 | # Adaptability 2 | 3 | ### Skill Description 4 | 5 | A DevOps Engineer is a problem solver. To be a great DevOps Engineer, you must be excited about learning every day. The Fellow actively seeks out challenges and proactively identifies areas that need to change for greater efficiency. 6 | 7 | --- 8 | 9 | ### Details 10 | - **Knowledge:** How to fix tools when they break 11 | - **Knowledge:** How to adapt to changing demands from the development team or business 12 | - **Belief:** As a DevOps Engineer, I will be learning every day 13 | -------------------------------------------------------------------------------- /D2/D2 DevOps/23a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check 2 | 3 | 4 | 5 | 6 | ---- 7 | 8 | 1. *Work Output:* “Play” with the industry-wide tools to really understand how they work, not just how to use them in their basic functions. Read documentation. Experiment. How can you create an instance on them? How do they interact with other tools and environments? Experiment with the tools that you use on your Partner work already, and with the tools that you don’t get to use that are still industry standards. 9 | 10 | 2. *On Partner Work:* Go above and beyond- Get hands-on experience. Take on the extra work. Go above and beyond your responsibilities. If you’re worried about messing something up, test it on your own servers first. The best way to learn is to be thrown into the deep end. 11 | 12 | 3. *On Partner Work:* Ask your peers and team for support-- if you have questions, they probably have them too, or have worked through them in the past. 13 | -------------------------------------------------------------------------------- /D2/D2 DevOps/24. Leadership/README.md: -------------------------------------------------------------------------------- 1 | # Leadership 2 | 3 | ### Skill Description 4 | At a D2 Level a DevOps Engineer demonstrates additional leadership skills such as imparting knowledge and expertise to their team; helping them to understand what needs to be built and why; and encouraging a collaborative team environment. They demonstrate an understanding of delegating responsibility but not accountability, and they are able to provide actionable feedback to junior members of the team and steer them in a way that helps them improve. Finally, they lead by example, using best practices and going above and beyond to support their team. 5 | 6 | --- 7 | 8 | ### Details/Resources 9 | - **Knowledge:** How to inspire and motivate others through your work 10 | - **Knowledge:** How to maintain self-awareness and why that is important 11 | - **Knowledge:** How to maintain a professional demeanor 12 | - **Behavior:** When there is an unexpected demand placed on me, I handle the new request with grace and professionalism. 13 | - **Behavior:** When I am working on a team, I review the code of others for quality and understanding of what each person on my team is doing. 14 | - **Behavior:** When I am working on a team, I request code reviews from at least two others. 15 | -------------------------------------------------------------------------------- /D2/D2 DevOps/26. Stakeholder Management/README.md: -------------------------------------------------------------------------------- 1 | # Stakeholder Management 2 | 3 | ### Skill Description: 4 | At a D2 Level, a DevOps Engineer can identify multiple sets of stakeholders both within his/her Partner and within Andela, and clearly understands what needs to be communicated to each set of stakeholders and how timely the information needs to be. Has a complete understanding of Partner and Andela's team, roles, goals and history. 5 | 6 | 7 | --- 8 | 9 | ### Details 10 | - Ability to serve as a liaison to various potential internal and external stakeholders, including: 11 | - Vendors 12 | - Project Managers 13 | - Client Partners 14 | - Development Teams 15 | - Company Leadership 16 | 17 | --- 18 | 19 | ### Resources/KBBs 20 | - **Knowledge:** How to identify multiple sets of stakeholders 21 | - **Knowledge:** How to identify what needs to be communicated to each set of stakeholders and when 22 | - **Behavior:** When there is a change in my schedule or delivery date, I immediately notify the appropriate stakeholders. 23 | - **Behavior: When notifying stakeholders about schedule changes, I include a revised timeframe for delivery and a clear explanation for the slip. 24 | - **Behavior:** When I am given a request by a client or stakeholder that cannot be realistically met, I offer alternatives with clear pros and cons of each option and a recommendation of which to pursue. 25 | -------------------------------------------------------------------------------- /D2/D2 DevOps/26a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check 2 | 3 | 4 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 5 | 6 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 7 | 8 | --- 9 | 10 | 1. **On Partner Work:** Draw out your DevOps Team, what each of their responsibilities is. Shadow your teammates and record what they do on a daily basis. Try for a full week of shadowing 1hr/day at different times. Ask questions! 11 | >> - Ask what they do on a daily basis 12 | >> - Ask about their sprints 13 | >> - Ask about what the rest of the team is working on 14 | 15 | 2. **On Partner Work:** Identify and write up your Partner’s Business goals and where DevOps fits in… who are your stakeholders? Who are your Andela Stakeholders? Draw your complete understanding of your busines, team, goals, roles, and history. 16 | 17 | 3. **Thought Experiment:** There’s no money in the AWS account, we would need to fund the account to do this project, can we fund it? What would be the return on that money? Would it save the business money by automating and preventing us from having to hire more developers? What are our alternatives and tradeoffs if we can’t spend that money? How would you communicate these tradeoffs and your ultimate recommendations to your stakeholders? 18 | -------------------------------------------------------------------------------- /D2/D2 DevOps/27. Requirements Analysis/README.md: -------------------------------------------------------------------------------- 1 | # Requirements Analysis 2 | 3 | ### Skill Description 4 | The Fellow is able to meet with key stakeholders and extrapolate the technical requirements from user stories for large systems. They can identify the tasks they need to do personally and the larger objectives their team must fulfil based on the business requirements and technical restraints available. They dig in and ask questions to flesh out every precise requirement, and are not afraid to confirm even the smallest details. 5 | 6 | --- 7 | 8 | ### Details 9 | - How to extract your work from a sprint planning session 10 | - What key stakeholders to meet with to gain technical requirements 11 | - How to extrapolate technical requirements from user stories for a large system 12 | - How to assess client needs through the requirements process: 13 | - Gathering 14 | - Analyzing 15 | - Documenting 16 | - Managing Changes 17 | -------------------------------------------------------------------------------- /D2/D2 DevOps/28. Expectations Management/README.md: -------------------------------------------------------------------------------- 1 | # Expectations Management 2 | 3 | ### Skill Description 4 | At a D2 Level, a DevOps Engineer consistently and proactively alerts stakeholders to slips in schedules as soon as they become aware of them along with a revised timeframe for delivery and a clear explanation of the cause for the slip. The Fellow presents to client / other stakeholders alternatives for requests that cannot be realistically met, along with clear pros and cons of each option and a recommendation for which option to pursue. 5 | 6 | --- 7 | 8 | ### Details 9 | - Developsestimates and operational requirements to create realistic timelines 10 | - Proactively ask if tasks can be broken down to ensure they are finished within a given time frame 11 | 12 | --- 13 | 14 | ### Resources 15 | - **Behavior:** When I have an agreed upon timeframe or deadline with my team, I communicate progress daily. 16 | - **Behavior:** When communicating progress against a deadline, I include the percentage of the task completed. 17 | - **Behavior:** When I am given a task out of my scope of understanding or ZPD, I manage expectations by highlighting that I have never done it before and will need more time to ramp up and learn how to do it 18 | 19 | - [Estimation Best Practices](https://app.pluralsight.com/library/courses/project-estimation-best-practices/table-of-contents)- PluralSight Course 20 | -------------------------------------------------------------------------------- /D2/D2 DevOps/28a. Work - Learning Check/README.md: -------------------------------------------------------------------------------- 1 | ## Work == Learning Check 2 | 3 | You've learned a lot of knowledge, facts, and tools so far. Time to put them into practice to see if you really understand how to use and embody the skill, and where you might need to patch up some gaps in your knowledge! 4 | 5 | Choose any or all of the following Outputs or Thought Experiments to work though. It will be most effective if you work with a Peer or mentor to get feedback on your work. 6 | 7 | --- 8 | 9 | 1. **Work Output:** Write an example of business/technical requirements translated into test cases, etc. Then, outline how you will communicate your estimation of time spend/expectations to your stakeholders to verify that it meets their expectations and make adjustments where necessary. 10 | 11 | 2. **Thought Experiment:** Extract your work from a sprint planning session: A Marketing person at your company says to your team, “We are going to demo this feature to X client at X time.” How do you, as a DevOps team member, know what that means for the work you need to do? Will Marketing need a testing server for their demo? Will the development team need deployment support? What questions do you need to ask to make sure you have clarity in your upcoming responsibilities? 12 | -------------------------------------------------------------------------------- /D2/D2 DevOps/29. Mentorship/README.md: -------------------------------------------------------------------------------- 1 | # Mentorship 2 | 3 | ### Skill Description 4 | The Fellow mentors more junior Fellows in the program by providing specific guidance on technical issues and business situations as they occur. 5 | 6 | --- 7 | 8 | ### Details & Work Check 9 | - Mentor more Junior Fellows at Andela 10 | - Provide mentorship to both DevOps and Web Development engineers on your Partner Team 11 | - Contribute resources to a DevOps curriculum 12 | - **Work Output:** Write a tutorial on how to use a tool You’ve learnt or a concept they've picked up will help fellows reinforce what they know. Medium or scotch.io can be a good place to start. 13 | -------------------------------------------------------------------------------- /D2/D2 Developer/Assessment/README.md: -------------------------------------------------------------------------------- 1 | This is where we will describe the assessments used during Phase 2 - Mid-Level Developer. 2 | -------------------------------------------------------------------------------- /D2/D2 Developer/Curriculum/10 - Data Structures/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 10 - Data Structures 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow understands binary trees, heaps, b-trees, and graphs, and how to identify the most efficient structure to use in a given situation. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, a person should be able to take and pass the following: 10 | 11 | 1. HackerRank exercises that cover Binary Trees, Heaps, and Graphs as specified by Success department 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | * How trees are applied in programming solutions | [ ] | [ ] | 23 | | * How heaps are applied in programming solutions | [ ] | [ ] | 24 | | * How graphs are applied in programming solutions | [ ] | [ ] | 25 | | * How to identify what data structure is best suited for different situations | [ ] | [ ] | 26 | 27 | 28 | 29 | ---------- 30 | 31 | 32 | ## **Behaviors** 33 | 34 | | Observable Behavior | Practiced | Observed | 35 | |:-------------|:------------------:|:--------:| 36 | | **Context:** When I have a progamming problem to solve **Action:** I start by thinking about the appropriate Data Structures to use | [ ] | [ ] | 37 | 38 | 39 | 40 | ---------- 41 | 42 | 43 | ## **Beliefs** 44 | 45 | 46 | | Embodied Belief | Felt | Demonstrated | 47 | |:-------------|:------------------:|:--------:| 48 | | Data structures are key to efficiency | [ ] | [ ] | 49 | 50 | -------------------------------------------------------------------------------- /D2/D2 Developer/Curriculum/13 - Version Control/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 13 - Version Control 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow is able to resolve merge conflicts for code submitted between members of a team. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, a person should be able to create the following: 10 | 11 | 1. Resolved merge conflicts on a team project 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | * Merge Conflict | [ ] | [ ] | 23 | | * Causes of merge conflicts | [ ] | [ ] | 24 | | * How to resolve merge conflicts | [ ] | [ ] | 25 | 26 | 27 | ---------- 28 | 29 | 30 | ## **Behaviors** 31 | 32 | | Observable Behavior | Practiced | Observed | 33 | |:-------------|:------------------:|:--------:| 34 | | **Context:** When my junior teammates have merge conflicts **Action:** I help resolve them | [ ] | [ ] | 35 | | **Context:** After I resolve merge conflicts **Action:** I perform end-to-end tests to ensure that the system/application still behaves as expected | [ ] | [ ] | 36 | | **Context:** After I resolve merge conflicts **Action:** I perform regression tests to ensure that test suite still passes before pushing changes| [ ] | [ ] | 37 | 38 | 39 | 40 | ---------- 41 | 42 | 43 | ## **Beliefs** 44 | 45 | 46 | | Embodied Belief | Felt | Demonstrated | 47 | |:-------------|:------------------:|:--------:| 48 | | I exhibit leadership by helping teammates resolve merge conflicts | [ ] | [ ] | 49 | | Helping team members resolve merge conflicts is an opportunity to teach them more about Git and version control | [ ] | [ ] | 50 | 51 | -------------------------------------------------------------------------------- /D2/D2 Developer/Curriculum/17 - API/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 17 - API 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow demonstrates the ability to build a basic CRUD (Create, Read, Update, Delete) API. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, a person should be able to create the following: 10 | 11 | 1. A CRUD API that can be consumed by web and mobile clients 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | * API | [ ] | [ ] | 23 | | * CRUD | [ ] | [ ] | 24 | | * Tradeoff between REST and SOAP | [ ] | [ ] | 25 | | * HTTP status codes | [ ] | [ ] | 26 | | * Web/HTTP API Best Practices | [ ] | [ ] | 27 | 28 | 29 | ---------- 30 | 31 | 32 | ## **Behaviors** 33 | 34 | | Observable Behavior | Practiced | Observed | 35 | |:-------------|:------------------:|:--------:| 36 | | **Context:** When I build an Web/HTTP API **Action:** I follow the best practices for writing Web/HTTP APIs | [ ] | [ ] | 37 | | **Context:** When I build an API **Action:** I support it with documentation | [ ] | [ ] | 38 | | **Context:** When I write API documentation **Action:** I make it detailed, comprehensive and provide examples for each API method | [ ] | [ ] | 39 | 40 | 41 | 42 | ---------- 43 | 44 | 45 | ## **Beliefs** 46 | 47 | 48 | | Embodied Belief | Felt | Demonstrated | 49 | |:-------------|:------------------:|:--------:| 50 | | Building APIs gives the flexibility needed to build device/platform-agnostic applications | [ ] | [ ] | 51 | | APIs make it easier and more secure for other programs to interact with my application | [ ] | [ ] | 52 | | Excellent API documentation empowers and encourages other developers to use my APIs | [ ] | [ ] | 53 | 54 | -------------------------------------------------------------------------------- /D2/D2 Developer/Curriculum/23 - Command Line (Unix)/README.md: -------------------------------------------------------------------------------- 1 | # Outcome 23 - Command Line 2 | 3 | **Skill Description** 4 | ---------- 5 | The Fellow can create their own commands / basic scripts for frequently used combinations to increase their productivity. 6 | 7 | **Output** 8 | ---------- 9 | After attaining this skill, and as a demonstration of it, a person should be able to create the following: 10 | 11 | 1. Personal command line aliases 12 | 13 | 14 | **Objectives** 15 | ---------- 16 | ## **Knowledge** 17 | 18 | 19 | | Knowledge Unit | Studied | Applied | 20 | |:-------------|:------------------:|:--------:| 21 | | I can describe the following from memory: | | | 22 | | * Command Line Alias | [ ] | [ ] | 23 | | * Shell Scripting | [ ] | [ ] | 24 | | * Common command line chores | [ ] | [ ] | 25 | 26 | 27 | ---------- 28 | 29 | 30 | ## **Behaviors** 31 | 32 | | Observable Behavior | Practiced | Observed | 33 | |:-------------|:------------------:|:--------:| 34 | | **Context:** When I have frequently used terminal commands that are longer than 5 characters **Action:** I create an alias for them | [ ] | [ ] | 35 | | **Context:** When I have frequently used routines on my machine **Action:** I identify opportunities for automation and write scripts to optimize and accelerate my work | [ ] | [ ] | 36 | 37 | 38 | 39 | ---------- 40 | 41 | 42 | ## **Beliefs** 43 | 44 | 45 | | Embodied Belief | Felt | Demonstrated | 46 | |:-------------|:------------------:|:--------:| 47 | | Automating routine tasks using scripts and aliases make me a more productive programmer | [ ] | [ ] | 48 | | Shell scripts wizardry is one powerful programming skill that gets me closer to 1337 status with my fellow programmers | [ ] | [ ] | 49 | 50 | -------------------------------------------------------------------------------- /D2/D2 Developer/README.md: -------------------------------------------------------------------------------- 1 | # Mid-Level Developer 2 | 3 | The Mid-Level Developer is a role that comes after Entry-Level Developer and before Technical Team Lead. It includes the following Learning Outcomes: 4 | 5 | 1. Stakeholder Management 6 | 2. Expectations Management 7 | 3. Adaptability 8 | 4. Seeks & Requests Feedback 9 | 5. Leadership 10 | 6. Mentorship 11 | 7. Organizational Function Awareness 12 | 8. Requirements Analysis 13 | 9. Algorithms 14 | 10. Data Structures 15 | 11. Discrete Math / Algebra 16 | 12. Object Oriented Programming 17 | 13. Version Control 18 | 14. Scalability Design 19 | 15. Security 20 | 16. Databases 21 | 17. API 22 | 18. Proper Use of Environments 23 | 18. System Design 24 | 20. Performance Optimization 25 | 21. DevOps 26 | 22. Text Editors 27 | 23. Command Line (Unix) 28 | 24. GIT 29 | 25. Functional Programming 30 | 31 | 32 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 33 | -------------------------------------------------------------------------------- /D2/D2 JavaScript/Curriculum/README.md: -------------------------------------------------------------------------------- 1 | # JavaScript D2 2 | 3 | 4 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 5 | -------------------------------------------------------------------------------- /D2/D2 PHP/Curriculum/01. PHP - Advanced MySQL/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sslgeorge/learning_map/22ae9f3ac3c16ebe53b3aec7318f976789c96416/D2/D2 PHP/Curriculum/01. PHP - Advanced MySQL/README.md -------------------------------------------------------------------------------- /D2/D2 PHP/README.md: -------------------------------------------------------------------------------- 1 | # D2, PHP Learning Track 2 | 3 | ## Overview 4 | 5 | This track will help you learn more advanced PHP programming concepts to build dynamic web applications. 6 | 7 | 8 | ## Modules 9 | 10 | * PHP - Advanced MySQL 11 | * PHP - Advanced Sessions and Cookie Handling 12 | * PHP - Metaprogramming 13 | * PHP - Regular Expressions 14 | * PHP - Dynamic Images 15 | * PHP - PDF 16 | * PHP - Networking 17 | * PHP - Performance and Optimization 18 | * PHP - Secure PHP Programming 19 | 20 | ### PHP Frameworks 21 | 1. Laravel 22 | 2. Yii 23 | 24 | **Note:** This curriculum is still pending edits-- please contribute your expertise, experience and resources through a pull request if you see any additions or changes you would like to suggest! 25 | 26 | 27 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 28 | -------------------------------------------------------------------------------- /D2/D2 Python/README.md: -------------------------------------------------------------------------------- 1 | # D2, PYTHON LEARNING PATH 2 | 3 | ## Overview 4 | 5 | The Python for Web curriculum detailed here shows the technical Knowledge, Behaviors and Beliefs required for an Andela Developer to become D2 ready in Python Web Development. 6 | 7 | 8 | ## Modules: 9 | 10 | * Python - GUI Programming (with Tkinter) 11 | * Python - Event Driven Programming 12 | * Python - Asynchronous Programming 13 | * Python - Metaclasses 14 | * Python - Multithreading 15 | * Python - Regular Expressions 16 | * Python - Networking: SocketIO, Tornado/AsyncIO 17 | * Python - Performance and Optimization 18 | * Python - Secure Web Development 19 | 20 | 21 | >**Note:** This curriculum is still pending edits-- please contribute your expertise, experience and resources through a pull request if you see any additions or changes you would like to suggest! 22 | 23 | 24 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 25 | -------------------------------------------------------------------------------- /D2/D2 Ruby/Curriculum/02. ORM Frameworks/README.md: -------------------------------------------------------------------------------- 1 | # Ruby - ORM Frameworks 2 | 3 | 4 | ## Skill Description: 5 | 6 | A fellow is able to understand, build and/or use ORM frameworks to interact with databases. 7 | 8 | ## Output: 9 | **Task:** Build a simple ORM framework in Ruby 10 | 11 | ### Knowledge: 12 | | Knowledge Unit | Studied | Applied | 13 | |:-------------|:------------------:|:--------:| 14 | | What is ORM (Object Relational Mapping)? | [ ] | [ ] | 15 | | What are the advantages and disadvantages of ORM as a concept? | [ ] | [ ] | 16 | | How to use different ORM frameworks written in Ruby? | [ ] | [ ] | 17 | 18 | ### Behaviors: 19 | | Observable Behavior | Practiced | Observed | 20 | |:-------------|:------------------:|:--------:| 21 | **Context:** When using ORM for building an application, **Action:** I create a high-level abstraction layer that interacts directly with the database. | [ ] | [ ] | 22 | 23 | 24 | ### Beliefs: 25 | | Embodied Belief | Felt | Demonstrated | 26 | |:-------------|:------------------:|:--------:| 27 | | Changing a few lines of code in the database configuration adapter makes it work with another database. | [ ] | [ ] | 28 | | ORM provides an abstraction which allows a developer to focus on their business logic, rather than complex database queries, resulting in a huge reduction of code and increase in efficiency of the developer. | [ ] | [ ] | 29 | | It doesn't really matter which type of database you're using. Active Record smooths out all the differences between those databases for you so you don't have to think about it. | [ ] | [ ] | 30 | | ORM supports concurrency, allowing multiple users to update the same set of data simultaneously. | [ ] | [ ] | 31 | 32 | ### Resources: 33 | 34 | [ORM in Ruby](https://www.sitepoint.com/orm-ruby-introduction/) 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /D2/D2 Ruby/Curriculum/04. Metaprogramming/README.md: -------------------------------------------------------------------------------- 1 | # Ruby - Metaprogramming 2 | 3 | 4 | ## Skill Description: 5 | 6 | A fellow is able to use metaclasses to build APIs and tools for others to use. 7 | 8 | 9 | ## Output: 10 | **Task:** Design a domain-specific (DSL) language of your own, then use that DSL to write your app program. 11 | 12 | 13 | ### Knowledge: 14 | | Knowledge Unit | Studied | Applied | 15 | |:-------------|:------------------:|:--------:| 16 | | What is metaprogramming? | [ ] | [ ] | 17 | | What are metaclasses? | [ ] | [ ] | 18 | | How to write code that writes code. | [ ] | [ ] | 19 | | How to dynamically define a method, and missing methods. | [ ] | [ ] | 20 | | How to build fluent DSLs With chainable methods. | [ ] | [ ] | 21 | | How to use different types of functions (Methods, Blocks, Procs, and Lambdas.) | [ ] | [ ] | 22 | 23 | ### Behavior: 24 | | Observable Behavior | Practiced | Observed | 25 | |:-------------|:------------------:|:--------:| 26 | | **Context:** When I want to automatically insert a known method into a set of classes, **Action:** I simply code the method in a superclass and have all the classes in question inherit from it. | [ ] | [ ] | 27 | 28 | ### Beliefs: 29 | | Embodied Belief | Felt | Demonstrated | 30 | |:-------------|:------------------:|:--------:| 31 | | Metaprogramming with Ruby, one can do in a few minutes what other languages may take hours to do. | [ ] | [ ] | 32 | | Proper planning and application of the metaprogramming techniques enables one to write code that is DRYer, lighter, more intuitive and more scalable. | [ ] | [ ] | 33 | 34 | ### Resources: 35 | [Github - Metaprogramming](https://github.com/geetarista/ruby-metaprogramming) 36 | 37 | [Github - Ruby Metaprogramming (Integralist)](https://gist.github.com/Integralist/a29212a8eb10bc8154b7) 38 | -------------------------------------------------------------------------------- /D2/D2 Ruby/Curriculum/10. Ruby Associated Tools/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sslgeorge/learning_map/22ae9f3ac3c16ebe53b3aec7318f976789c96416/D2/D2 Ruby/Curriculum/10. Ruby Associated Tools/README.md -------------------------------------------------------------------------------- /D2/D2 Ruby/README.md: -------------------------------------------------------------------------------- 1 | # D2 - Ruby Learning Track 2 | 3 | ## Overview 4 | 5 | As a D2 Ruby Dev, you will combine advanced Ruby and Web Frameworks (mainly Ruby on Rails), full understanding of Ruby full stack, best practices, gems/libraries to build quality products that meet requirements of all stakeholders and users. You will design and build n-tier scalable Web applications, Command Line Apps (CLI) and Writing scripts to architect solutions to different set of complex problems. 6 | 7 | ## Modules 8 | 9 | * Ruby - Idiomatic Ruby & Refactorings 10 | * Ruby - GUI Programming (Tk Guide) 11 | * Ruby - ORM Frameworks 12 | * Ruby - Metaprogramming 13 | * Ruby - Multithreading 14 | * Ruby - Regular EXpressions 15 | * Ruby - Socket Programming 16 | * Ruby - Performance Optimization 17 | * Ruby - Web Application Security 18 | 19 | 20 | **Note:** This curriculum is still pending edits-- please contribute your expertise, experience and resources through a pull request if you see any additions or changes you would like to suggest! 21 | 22 | 23 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 24 | -------------------------------------------------------------------------------- /D2/D2 Test Engineer/README.md: -------------------------------------------------------------------------------- 1 | Test Engineer (midlevel) -------------------------------------------------------------------------------- /D2/D2 iOS/01- iOS Application Design Patterns/README.md: -------------------------------------------------------------------------------- 1 | # 01- iOS Application Design Patterns 2 | 3 | ### Skill Description 4 | A person with this skill makes effective use of the appropriate design pattern for their application 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** How and when to use MVC design pattern 11 | - **Knowledge:** How and when to use MVVM (and MVVM+C) design pattern 12 | - **Knowledge:** How and when to use VIPER 13 | - **Knowledge:** Benefits and drawbacks of each design pattern 14 | 15 | 16 | ### Behavior 17 | *How do I apply this information in context?* 18 | - **Behavior:** When I am building a very simple app from scratch, I use MVC for its simplicity. 19 | - **Behavior:** When I have a more complex app, I use MVVM+C to ensure I can reuse components 20 | - **Behavior:** When I need to separate out my business logic from the presentation logic, I use MVVM or VIPER. 21 | - **Behavior:** When I want to be able to reuse my screens and view controllers flexibly, I use MVVM over MVC. 22 | 23 | ## Belief 24 | *How does an expert think about this skill?* 25 | - **Belief:** Using VIPER is an investment in time and difficulty-- I should only use it if I am working on a very large, complex application. 26 | 27 | ---- 28 | 29 | ### Resources: 30 | - [MVVM Based Architecture](https://www.pluralsight.com/courses/mvvm-based-architecture-xamarin-mobile-apps)- PluralSight Course 31 | - [Design Patterns in Swift: Structural](https://www.pluralsight.com/courses/design-patterns-swift-structural)- PluralSight course that covers Design Patterns in Swift-- note that this is based on Swift 3 and may need to be cross-referenced 32 | -------------------------------------------------------------------------------- /D2/D2 iOS/02- Networking - Working with APIs/README.md: -------------------------------------------------------------------------------- 1 | # 02- Networking & Working with APIs 2 | 3 | ### Skill Description 4 | A person with this skill is comfortable building an application that consumes the API for a network service from scratch. 5 | 6 | ### Optional Project 7 | Write a client for a REST network service. A great one to use is GitHub’s API. Build an application that interacts with the information available in the API. 8 | 9 | ----- 10 | ### Knowledge 11 | *What information do I need to learn?* 12 | - **Knowledge:** How a URL Session works “behind the scenes” 13 | - **Knowledge:** How to fetch data from an API endpoint 14 | - **Knowledge:** How to transform data to and from JSON 15 | - **Knowledge:** CocoaPods that you can use for networking components, and when to use them 16 | 17 | ### Behavior 18 | *How do I apply this information in context?* 19 | - **Behavior:** After I am confident that I can write a network service client and work with API endpoints from scratch, I can then leverage CocoaPods such as AlamoFire or Moya. 20 | - **Behavior:** When I use AlamoFire or Moya, I am introducing a third-party dependency into my app. 21 | 22 | ### Belief 23 | *How does an expert think about this skill?* 24 | - **Belief:** I should not use a networking services CocoaPod or other networking abstraction until I know how such abstractions work “under the hood” 25 | 26 | ---- 27 | 28 | ### Resources 29 | - [HTTP Networking in iOS](https://www.pluralsight.com/courses/http-networking-ios) 30 | -------------------------------------------------------------------------------- /D2/D2 iOS/04- iOS Memory Management/README.md: -------------------------------------------------------------------------------- 1 | # 04- iOS Memory Management 2 | 3 | ### Skill Description 4 | A person with this skill builds iOS applications that are free of circular memory references, and are effective in managing memory. 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** Definition of ARC and how it works 11 | - **Knowledge:** How to identify Memory Leaks using Xcode memory graph debugger 12 | - **Knowledge:** How to identify memory leaks using Instruments 13 | - **Knowledge:** How to detect circular memory references (aka “retain cycles”) 14 | - **Knowledge:** How to break circular memory references 15 | - **Knowledge:** Distinction between a weak variable and an unowned variable, and when to use each 16 | 17 | 18 | ### Behavior 19 | *How do I apply this information in context?* 20 | - **Behavior:** Any time I use a closure, I may be capturing variables. 21 | - **Behavior:** If the closure is capturing a variable that might have a shorter lifetime than the closure, I make it a weak variable. 22 | - **Behavior:** If the closure will be deallocated before the parent is, I use an unowned variable. 23 | - **Behavior:** When I’m not sure whether I should use a weak or an unowned variable, I use a weak variable. 24 | 25 | ### Belief 26 | *How does an expert think about this skill?* 27 | - **Belief:** I should be familiar with memory management as a D1… as a D2, it’s second nature to me. 28 | 29 | --- 30 | 31 | ### Resources 32 | - [Memory Management](https://app.pluralsight.com/player?course=swift-in-depth&author=allen-holub&name=swift-in-depth-m8&clip=0&mode=live)- Section of longer PluralSight Course, "Swift in Depth" 33 | -------------------------------------------------------------------------------- /D2/D2 iOS/05- iOS Persistence and Core Data/README.md: -------------------------------------------------------------------------------- 1 | # 05- iOS Persistence and Core Data 2 | 3 | ### Skill Description 4 | A person with this skill creates applications that support data persistence. 5 | 6 | --- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** When and how to use Realm for persistence 11 | - **Knowledge:** When and how to use a secure database (like SQLCipher) 12 | - **Knowledge:** When and how to use (NS)UserDefaults for persistence 13 | - **Knowledge:** Benefits and drawbacks of Core Data, and how to use it in iOS 14 | 15 | ### Behavior 16 | *How do I apply this information in context?* 17 | - **Behavior:** When I want to use a persistence layer that is not based on SQLite, I use Realm 18 | - **Behavior:** When I want to be able to translate my database across multiple platforms (iOS and Android), I use Realm 19 | - **Behavior:** When I have a small amount of data to persist (e.g., user preferences), I use (NS)UserDefaults 20 | 21 | ### Belief 22 | *How does an expert think about this skill?* 23 | - **Belief:** Core Data on iOS is free-- but can be a huge headache. 24 | - **Belief:** I must be familiar working with Core Data in case I work with legacy code. 25 | 26 | ---- 27 | 28 | ### Resources: 29 | - [Consuming Web Services and using Local Storage on iOS](https://www.pluralsight.com/courses/ios-data-fundamentals)- PluralSight Course that breaks down downloading data and saving it locally using NSUserDefaults-- can focus on only the last video if you feel comfortable with data consumption 30 | - [Core Data Fundamentals](https://www.pluralsight.com/courses/core-data-fundamentals)- PluralSight Course covering data models, queries, and how to work with them using the tools available in XCode 31 | -------------------------------------------------------------------------------- /D2/D2 iOS/06- Protocol-Oriented Programming/README.md: -------------------------------------------------------------------------------- 1 | # 06- Protocol-Oriented Programming 2 | 3 | ### Skill Description 4 | A person with this skill knows the benefits and drawbacks of protocol-oriented programming, and implements it in their application at appropriate times to enhance code reusability. 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** How to set up a the properties and functions in a protocol that can be used by many classes 11 | - **Knowledge:** How protocol-oriented programming works as an alternative to the normal class inheritance patterns 12 | 13 | ### Behavior 14 | *How do I apply this information in context?* 15 | - **Behavior:** When I know that I will have multiple inheritance, I use protocol-oriented programming. 16 | - **Behavior:** After I have created a protocol, I conform as many classes as I want to it. 17 | 18 | ### Belief 19 | *How does an expert think about this skill?* 20 | - **Belief:** Protocols are a bigger deal in Swift than in Objective-C. 21 | - **Belief:** Protocol-oriented programming can be incredibly powerful-- but it can also make it hard understand what is happening in your code. 22 | 23 | ---- 24 | 25 | ### Resources: 26 | - [Protocols](https://app.pluralsight.com/player?course=swift-in-depth&author=allen-holub&name=swift-in-depth-m9&clip=0&mode=live)- Video from PluralSight Course “Swift In Depth” 27 | - [“Swift Default Protocol Implementations”](http://nshipster.com/swift-default-protocol-implementations/)- From NSHipster, site with lots of other resources 28 | -------------------------------------------------------------------------------- /D2/D2 iOS/07- Reactive Programming in iOS/README.md: -------------------------------------------------------------------------------- 1 | # 07- Reactive Programming in iOS 2 | 3 | ### Skill Description 4 | A person with this skill uses reactive programming to write more effective and clean asynchronous and concurrent code. 5 | model data and events as observable sequences, and write code that reacts to changes in those sequences. 6 | 7 | ----- 8 | 9 | ### Knowledge 10 | *What information do I need to learn?* 11 | - **Knowledge:** When to use reactive programming 12 | - **Knowledge:** How to use reactive programming patterns 13 | - **Knowledge:** How to use libraries such as RxSwift/RxCocoa and ReactiveCocoa/ReactiveSwift 14 | 15 | 16 | ### Behavior 17 | *How do I apply this information in context?* 18 | - **Behavior:** When I am applying reactive programming to my code, I start by modeling data and events as observable sequences. 19 | - **Behavior:** When I have written the sequences, I write code that reacts to changes in those sequences. 20 | 21 | ### Belief 22 | *How does an expert think about this skill?* 23 | - **Belief:** Reactive programming helps you worry less about managing your data and focus on how your app should work. 24 | 25 | ---- 26 | 27 | ### Resources 28 | - [NSHipster has a whole section on Cocoa](http://nshipster.com/) (scroll to the bottom) 29 | -------------------------------------------------------------------------------- /D2/D2 iOS/08- Animation/README.md: -------------------------------------------------------------------------------- 1 | # 08- Animation 2 | 3 | ### Skill Description 4 | A person with this skill is “fluent” in animations and touch events. 5 | 6 | ### Optional Project 7 | Create an app that uses core animations, layers, and motion events. 8 | 9 | ----- 10 | 11 | ### Knowledge 12 | *What information do I need to learn?* 13 | - **Knowledge:** How to use animations in iOS 14 | - **Knowledge:** How to use core animation and layers in iOS 15 | - **Knowledge:** How to use touch and motion events in iOS 16 | 17 | ### Behavior 18 | *How do I apply this information in context?* 19 | - **Behavior:** Before I implement an animation or motion event in my application, I stop to consider the user experience. 20 | 21 | 22 | ### Belief 23 | *How does an expert think about this skill?* 24 | - **Belief:** Swift has many layers of complexity-- I should be excited to continually dig deeper and learn more! 25 | 26 | 27 | ---- 28 | 29 | ### Resources 30 | - [Swift In Depth](https://www.pluralsight.com/courses/swift-in-depth)- PluralSight course that takes the learner deeper into memory management, control flow and patterns, protocols, etc. 31 | - [Writing Animations](https://www.pluralsight.com/courses/ios-graphics-animation-programming) 32 | - [Touch and Motion events](https://www.pluralsight.com/courses/touch-motion-events-ios) 33 | -------------------------------------------------------------------------------- /D2/D2 iOS/09- Testing - Debugging/README.md: -------------------------------------------------------------------------------- 1 | # 09- Testing & Debugging 2 | 3 | ### Skill Description 4 | A person with this skill is adept at tracking down and fixing bugs in their iOS applications. They can track down the cause of bugs reported by users. 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** How to use XCode for debugging 11 | - **Knowledge:** How do conduct performance analysis on your iOS app using Instruments 12 | - **Knowledge:** How to read a Crash Report and track down the cause of a “real-world” user 13 | - **Knowledge:** How to implement UI testing for iOS 14 | - **Knowledge:** How and when to use dependency injection to facilitate testing 15 | 16 | 17 | ### Belief 18 | *How does an expert think about this skill?* 19 | - **Belief:** Bugs are an inevitable part of programming-- testing and debugging are critical skills for any developer. 20 | 21 | ---- 22 | 23 | ### Resources 24 | - [iOS Unit Testing with XCTest](https://app.pluralsight.com/library/courses/ios-unit-testing-xctest/table-of-contents)- PluralSight course 25 | - [iOS Debugging using XCode](https://app.pluralsight.com/library/courses/ios-debugging-xcode)- PluralSight Debugging with XCode Course 26 | - [Swift iOS UI and Unit Testing](https://www.pluralsight.com/courses/swift-ios-ui-unit-testing)- PluralSight 27 | - [Dependency Injection for iOS](https://www.objc.io/issues/15-testing/dependency-injection/)- Article from Objec.io 28 | - [3 laws of TDD](https://qualitycoding.org/blog/)- Jon Reid’s Blog 29 | - [Understanding and Analyzing Crash Reports](https://developer.apple.com/library/content/technotes/tn2151/_index.html) 30 | -------------------------------------------------------------------------------- /D2/D2 iOS/10- Refactoring your Code/README.md: -------------------------------------------------------------------------------- 1 | # 10- Refactoring your Code 2 | 3 | ### Skill Description 4 | A person with this skill writes code that is not only usable, but performance optimized and clean. 5 | 6 | ### Optional Project 7 | Use XCode to performance test your code. Refactor your code to optimize it for performance, readability, and testability. 8 | 9 | 10 | ----- 11 | 12 | ### Knowledge 13 | *What information do I need to learn?* 14 | - **Knowledge:** How to refactor your code to optimize for Performance 15 | - **Knowledge:** How to refactor your code to optimize for Readability 16 | - **Knowledge:** How to refactor your code to optimize for Testability 17 | 18 | ### Behavior 19 | *How do I apply this information in context?* 20 | - **Behavior:** When I am refactoring my code, I separate out the business logic from the presentation logic to enable unit testing. 21 | 22 | ### Belief 23 | *How does an expert think about this skill?* 24 | - **Belief:** Clean code is critical for team collaboration. 25 | -------------------------------------------------------------------------------- /D2/D2 iOS/11- Security/README.md: -------------------------------------------------------------------------------- 1 | # 11- Security 2 | 3 | ### Skill Description 4 | A person with this skill builds secure iOS applications using the most up to date security best practices. 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** How to work with the keychain in iOS and when you need it 11 | - **Knowledge:** How and when to use file protection 12 | 13 | ### Behavior 14 | *How do I apply this information in context?* 15 | - **Behavior:** When I need to store a user password locally, I use the keychain. 16 | - **Behavior:** When I use the keychain from Swift, I work with a wrapper (either 3rd party or write my own) 17 | 18 | ### Belief 19 | *How does an expert think about this skill?* 20 | - **Belief:** I should have a “nodding acquaintance” with all security practices-- even if I have to look up specific documentation to implement it. 21 | 22 | ---- 23 | 24 | ### Resources 25 | - [“How to Secure iOS User Data: The Keychain and Touch ID”](https://www.raywenderlich.com/179924/secure-ios-user-data-keychain-biometrics-face-id-touch-id) 26 | -------------------------------------------------------------------------------- /D2/D2 iOS/12- UI Design- Intermediate/README.md: -------------------------------------------------------------------------------- 1 | # 12- UI Design- Intermediate 2 | 3 | ### Skill Description 4 | A person with this skill is familiar with the Apple ecosystem and frameworks. They create iOS programs that are user-centric and delight the end user. 5 | 6 | ----- 7 | 8 | ### Knowledge 9 | *What information do I need to learn?* 10 | - **Knowledge:** How to use the UIKit framework 11 | - **Knowledge:** How and when to use IB (Interface Builder) 12 | - **Knowledge:** How to use picker views 13 | 14 | ### Behavior 15 | *How do I apply this information in context?* 16 | - **Behavior:** When I am developing an iOS application, I keep the user at the forefront of my thought process. 17 | 18 | 19 | ### Belief 20 | *How does an expert think about this skill?* 21 | - **Belief:** My UI should take into consideration non-static elements, like popups and activity indicators 22 | 23 | ---- 24 | 25 | ### Resources 26 | - [Apple Human Interface Guidelines](https://developer.apple.com/ios/human-interface-guidelines/overview/themes/) 27 | - [Developing UX for iOS](https://app.pluralsight.com/library/courses/ux-ios-social-media-app-2108/table-of-contents)- PluralSight project, hands-On UX Development Project for a Social Media App 28 | -------------------------------------------------------------------------------- /D2/D2 iOS/13- REVIEW- D2 Developer Team - Professional Skills/README.md: -------------------------------------------------------------------------------- 1 | # 13- REVIEW: D2 Developer Team & Professional Skills 2 | 3 | - [Leadership](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/05%20-%20Leadership) 4 |
*Demonstrate more ownership of your Partner's app. Make sure that you function as the "lead" developer on more than one isolated feature-- this is key to being a mid-level developer. If you don't have this on your Partner app, work on open source projects or your own side projects to get this experience.* 5 | - [Adaptability](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/03%20-%20Adaptability) 6 | - [Seeks and Requests Feedback](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/04%20-%20Seeks%20%26%20Requests%20Feedback) 7 | - [Mentorship](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/06%20-%20Mentorship) 8 |
*Mentoring more junior developers on your team.* 9 | - [Organizational Functional Awareness](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/07%20-%20Organizational%20Function%20Awareness) 10 |
*Where your work fits into the organization and team* 11 | - [Expectations Management](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/02%20-%20Expectations%20Management) 12 |
*Estimation and stakeholder communication* 13 | - [Stakeholder Management](https://github.com/andela/learningmap/tree/master/D2/D2%20Developer/Curriculum/01%20-%20Stakeholder%20Management) 14 |
*As you become a more senior developer, you have more stakeholders* 15 | -------------------------------------------------------------------------------- /D2/D2 iOS/README.md: -------------------------------------------------------------------------------- 1 | # D2 iOS Developer Track 2 | 3 | ## Role Description 4 | _“What does someone in this role do?”_ 5 | 6 | A Mid-Level (D2) iOS Developer is responsible for building assigned features, performing maintenance tasks, and testing and refactoring their own code as well as the code of more junior teammates. They are expected to be able to produce quality, working code with less supervision than a D1/Junior Developer. 7 | 8 | A Mid-Level iOS Developer is still assigned tasks by a team lead, but should have a very clear understanding of how their work fits into the bigger picture of the team and company. In addition, they are expected to take more ownership of these tasks than a Junior Developer would, ensuring that their features are performance optimized, secure, and written with the proper code structure or architecture. 9 | 10 | A Mid-Level iOS Developer is very comfortable building a moderately sized app from scratch, leveraging the appropriate tools, networking, and architecture to do so. An example of a mid-level application would be the equivalent of writing the Andela Pulse App from scratch. 11 | 12 | 13 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 14 | -------------------------------------------------------------------------------- /D2/Python - Data Analysis/Curriculum/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sslgeorge/learning_map/22ae9f3ac3c16ebe53b3aec7318f976789c96416/D2/Python - Data Analysis/Curriculum/README.md -------------------------------------------------------------------------------- /D2/README.md: -------------------------------------------------------------------------------- 1 | ![d2 level developer zoom](https://user-images.githubusercontent.com/5239538/26901135-ad2d329e-4ba2-11e7-9589-c3a0797964cb.png) 2 | -------------------------------------------------------------------------------- /D3/D3 Developer/README.md: -------------------------------------------------------------------------------- 1 | **D3 Developer** is an Andelan role that comes after working as a D2 Developer, and before roles like D4, Software Architect, or Product Manager. A D3 developer has come to the point where the programming language they are working in does not matter-- they can `easily contribute and lead their team by example, regardless of stack or project requirements`. 2 | 3 | D3’s are `expert problem solvers`-- able to solve bugs on a programming language level, as well as to work with a team to outline solutions to high level problems and goals. They have a `diverse set of experiences` and are `constantly learning more skills and languages` so that they are able to draw on a broad toolkit to solve problems with their team. 4 | 5 | It includes the following Outputs: 6 | 7 | - 01- Advanced Data Structures 8 | - 02- Algorithms 9 | - 03- Systems 10 | - 04- Architecture 11 | - 05- Build Automation and Version Control 12 | - 06- Code Organization- Structure and Design 13 | - 07- Testing - Defensive Coding 14 | - 08- Advanced APIs 15 | - 09- Advanced Databases 16 | - 10- Agile Process 17 | - 11- Relationship Building 18 | - 12- Stakeholder Management 19 | - 13- Expectations Management 20 | - 14- Team Dynamics 21 | - 15- Attention to Detail 22 | - 16- Adaptability 23 | - 17- Decision Making 24 | - 18- Problem Solving 25 | - 19- Writing Professionally 26 | - 20- Holistic & Big Picture Thinking 27 | - 21- Leadership 28 | - 22- Mentorship 29 | - 23- Maintaining and Sharing Knowledge 30 | 31 | 32 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 33 | -------------------------------------------------------------------------------- /D3/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /D3/Technical Team Lead/README.md: -------------------------------------------------------------------------------- 1 | # Technical Team Lead 2 | 3 | The Technical Team Lead is a role that comes after Mid-Level Developer and before Project Manager, Product Manager or Software Architect. It's a role currently in development at Andela with multiple existing professional models. It includes the following Learning Outcomes: 4 | 5 | 1. Relationship Building 6 | 2. Stakeholder Management 7 | 3. Expectations Management 8 | 4. Team Dynamics 9 | 5. Attention to Detail 10 | 6. Focus & Concentration 11 | 7. Motivation & Commitment 12 | 8. Adaptability 13 | 9. Decision Making 14 | 10. Problem Solving / Critical Thinking 15 | 11. Writing Professionally 16 | 12. Holistic / Big Picture Thinking 17 | 13. Leadership 18 | 14. Mentorship 19 | 15. Management 20 | 16. Agile Process 21 | 17. Debugging 22 | 18. Estimating 23 | 19. Spreadsheets 24 | 20. Pivotal Tracker 25 | 26 | 27 | 28 | [Leave your Feedback Here.](https://goo.gl/forms/3L1LYIy2jMlhzrYn2) 29 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Other D4 Requirements/README.md: -------------------------------------------------------------------------------- 1 | # General D4 Requirements 2 | Basic Requirements for all D4 Andelans are as follows: 3 | 4 | * [ ] **360 Degree Feedback Review completed & Submitted** 5 | * [*Details about 360 Reviews here*](https://www.surveygizmo.com/survey-blog/guide-to-360-reviews-what-is-a-360-how-do-you-administer-360-feedback/) 6 | * [ ] **Required Mentorship Hours completed & Submitted** 7 | * *Cumulative 250 hours of providing mentorship to Fellows at levels below D4 or any other mentee as long as we can survey the them to allow us to provide feedback to you as a mentor on how to keep improving while maintaining an average rating of 4 (scale of 1 - 5) across all the 5 mentorship attributes* 8 | * [ ] **Required Client Hours completed** 9 | * *1120 hours from the time you're a D3 spent billing at a client, working on an internal project, or supporting training with the primary goal being to get work experience on projects.* 10 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Passion/Passion Output Optional- Showcase your Growth Path Work/README.md: -------------------------------------------------------------------------------- 1 | # Optional Output- Showcase your Growth Path Work == Learning 2 | This is a purely optional Output, included here to give you the opportunity to take your passion one step further. If you've worked on a project or product for your selected Growth Path, this is the opportunity to showcase it. Examples of this might be: 3 | 4 | - Internal Level up Apprenticeship 5 | - Side Project (technical product) 6 | - Organizing a program (eg. launching the machine learning path at Andela, organizing a speaker for your Growth Path topic, etc.) 7 | 8 | > **Note:** Until LV is ready, you can prepare these in a Google Docs or Google Slides format, whatever is easiest for you. 9 | 10 | --- 11 | 12 | ## What to Include: 13 | The requirements for any optional products are similar to the Required Passion Output: 14 | - Link to your product / project / program 15 | - Teammates you worked with 16 | - Stakeholders you worked with 17 | - Feedback from at least one Teammate/Stakeholder 18 | - Mentors you worked with 19 | - Reflections on what you learned 20 | - Reflections on new questions this experience surfaced for you 21 | 22 | --- 23 | 24 | **Note:** 25 | 26 | If you are applying for a focus other than: 27 | - Software Architect 28 | - Product Management 29 | - Project Management 30 | 31 | ... You should be prepared to complete this. 32 | 33 | --- 34 | 35 | >> Questions? Comments? **ASK Feedback?** [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) 36 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Passion/README.md: -------------------------------------------------------------------------------- 1 | # Passion 2 | 3 | ![screen shot 2017-07-17 at 1 48 31 pm](https://user-images.githubusercontent.com/5239538/28281943-b6d8d82a-6af6-11e7-855d-812ca347cae4.png) 4 | 5 | By passion, in this context, is defined as: *“A track record of consistent and proactive effort to connect with people and experiences that drive learning in this domain.”* 6 | 7 | This Output is meant to help you show off all the hard work you’ve done on your own, and the dedication you have to your chosen path. 8 | 9 | You have a passion for this role… why is it your passion? What have you done to explore so far? What have you learned? How have you learned? Who have you worked with? 10 | 11 | In your exploration, how did you find your past skills inform your desired path? What did you find your biggest missing skill sets to be? How do you plan to fill them? 12 | 13 | IF you happen to have gotten real work experience in your selected path, please share that as well. However, it is not required. 14 | 15 | ## What to Include: 16 | For your selected Growth Path, please complete the LV output that asks about your work. Be sure to include as many of the following as possible: 17 | - Blogs you’ve read 18 | - Online courses or other learning resources utilized 19 | - Experts you’ve shadowed/interviewed 20 | - Mentor(s) in this role that you have worked with 21 | - Workshops, meetups, growth paths attended 22 | - Top 3 things you’ve learned about the role or skills 23 | - Top 3 biggest questions remaining 24 | 25 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Potential/Case Study Examples- Product Manager/README.md: -------------------------------------------------------------------------------- 1 | # Product Manager- Preparing for your Case Studies 2 | We'll continually build out this section with resources, real-life examples, and past case studies for you to leverage! 3 | 4 | --- 5 | 6 | ## To get you Started 7 | * [12 Product Management Case Interview Questions](http://www.impactinterview.com/2013/10/product-manager-case-interview-questions/) 8 | * [A Good Compilation of PM Case Study Resources](http://www.venturegrit.com/what-everybody-ought-to-know-about-the-product-manager-case-interview/) 9 | * [Really Fun Tool to help you practice diverse PM questions!](http://thepminterview.com/) *(Some are more useful than others, but it's a really cool format)* 10 | 11 | --- 12 | ## Other Resources 13 | Check out the practice & resources on the [Product Manager Growth Path!](https://github.com/andela/learningmap/tree/master/D4%2B/Product%20Manager) 14 | 15 | You can also join the [Product Management Slack Channel](https://andela.slack.com/messages/product-management/) to get access to great Experts to shadow, Mentors to reach out to, and relevant discussions to dig into. 16 | 17 | --- 18 | 19 | **Note:** 20 | - More examples coming! Have you taken an assessent in this Role? [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) to share your knowledge & experience! 21 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Potential/Case Study Examples- Project Manager/README.md: -------------------------------------------------------------------------------- 1 | # Project Manager- Preparing for your Case Studies 2 | We'll continually build out this section with resources, real-life examples, and past case studies for you to leverage! 3 | 4 | --- 5 | 6 | ## To get you Started 7 | * [Some good practice Project Management Case Study questions](http://www.careerprofiles.info/case-study-interview-examples.html) 8 | * [Prep for your Project Management Case Study](https://github.com/andela/learningmap/blob/master/D4%2B/Project%20Manager/Case%20Study%20Questions/README.md) 9 | 10 | --- 11 | ## Other Resources 12 | Join the [Project Management Slack Channel](https://andela.slack.com/messages/project-management/) to get access to great Experts to shadow, Mentors to reach out to, and relevant discussions to dig into. 13 | 14 | Stay tuned for a Project Management Growth Path-- coming by the end of the month! 15 | 16 | --- 17 | 18 | **Note:** 19 | - More examples coming! Have you taken an assessent in this Role? [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) to share your knowledge & experience! 20 | 21 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Potential/Case Study Examples- Software Architect/README.md: -------------------------------------------------------------------------------- 1 | # Software Architect- Preparing for your Case Studies 2 | We'll continually build out this section with resources, real-life examples, and past case studies for you to leverage! 3 | 4 | --- 5 | 6 | ## To get you Started 7 | * [Article & Podcast with Experts Sharing their Work](http://www.softwarearchitecturerad.io/) 8 | * [Some helpful StackOverflow Questions](https://stackoverflow.com/questions/816258/good-architecture-interview-questions) 9 | 10 | --- 11 | ## Other Resources 12 | Check out the practice & resources on the [Software Architect Growth Path!](https://github.com/andela/learningmap/tree/master/D4%2B/Software%20Architect) See the bottom of the Main README page for some key resources with common Software Architect interview questions. 13 | 14 | You can also join the [Software Architecture Slack Channel](https://andela.slack.com/messages/software-architecture) to get access to great Experts to shadow, Mentors to reach out to, and relevant discussions to dig into. 15 | 16 | --- 17 | 18 | **Note:** 19 | - More examples coming! Have you taken an assessent in this Role? [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) to share your knowledge & experience! 20 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Potential/README.md: -------------------------------------------------------------------------------- 1 | # Potential 2 | 3 | ![screen shot 2017-07-17 at 1 49 58 pm](https://user-images.githubusercontent.com/5239538/28281990-db07c530-6af6-11e7-8e07-2a93730c98a5.png) 4 | 5 | In this context, we define potential as: *“Passing a minimum bar of competence and demonstration of the ability to learn and apply skills quickly.”* 6 | 7 | You will demonstrate this in your D4 Assessment through Story Telling (your past work, what you’ve learned, the skills that translate to your path) and through Situational/ Case Study Questions asked by your Assessment Panel in person. These Case Studies will draw on your past experience, expected baseline knowledge of skills required for your path, and real-world situational examples you will encounter in this role. 8 | 9 | ## What to Include 10 | During your D4 Assessment (in person), you will be asked to dig into several real-world, situational case studies that reflect work you would be asked to do in your chosen growth path role. You can prepare using the resources in this curriculum-- if at all possible, it is recommended that you go through these (and other) case studies with a mentor or Experienced Practitioner in the role you are applying for. Don't hesitate to reach out! 11 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Product/Optional Output- Additional Tech Product/README.md: -------------------------------------------------------------------------------- 1 | # Optional Output- Additional Technical Product 2 | This is a purely optional output, included here to remind you to think carefully about all of your experiences at Andela, or even before, to help you tell your full D4 Growth Story. 3 | 4 | An additional technical work output could include: 5 | - Pre-Andela Work 6 | - Side Project(s) you had while at Andela 7 | - "Level-up Apprenticeship" product at Andela 8 | - Mentor pairing during which you built a product 9 | - Products built for a Growth Path group (eg. data science research, design product, etc.) 10 | - ... or anything else! 11 | 12 | > **Note:** Until LV is ready, you can prepare these in a Google Docs or Google Slides format, whatever is easiest for you. 13 | 14 | --- 15 | 16 | ## What to Include 17 | The requirements for any optional products are the same as the three required products: 18 | - Link to Product 19 | - Role 20 | - Stack/Language(s) 21 | - Team Size/Structure 22 | - Stakeholders 23 | - Most Important skill you learned from this work (tech or team) 24 | - Biggest Challenge during this work 25 | 26 | *As you are describing your Products, the experiences you had, and what you learned, make sure to explicitly tie in how the skills you learned will tie into your chosen D4 Role-- this is your D4 Growth Story.* 27 | 28 | --- 29 | 30 | >> Questions? Comments? **ASK Feedback?** [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) 31 | -------------------------------------------------------------------------------- /D4+/D4 Andelan Advancement Process/Product/README.md: -------------------------------------------------------------------------------- 1 | # Product 2 | ![screen shot 2017-07-17 at 1 47 25 pm](https://user-images.githubusercontent.com/5239538/28281874-863dbe88-6af6-11e7-9dfb-87c1b1814de3.png) 3 | 4 | Over the past 3 years at Andela, you’ve worked for many different clients, from D0 Apprenticeship, to Internal Andela Products, to external Client placements. 5 | 6 | This is your space to tell your story, show off the work you’ve done, and connect it to how the skills you’ve learned so far have prepared you for your D4 Role. 7 | 8 | Tell us about the applications you’ve worked on and your role in them. Tell us about your team and how you worked with them. Most importantly, tell us where you struggled, what you learned, how you grew, and how you’ll apply what you learned. 9 | 10 | Your Case Study/Situational interview questions will likely draw on one or more of your past experiences as context. 11 | 12 | > **Note:** Until LV is ready, you can prepare these in a Google Docs or Google Slides format, whatever is easiest for you. 13 | 14 | --- 15 | 16 | ## What to Include 17 | Please upload a *minimum of three* products to LV, linked to the product itself, and code when possible. For each product please also include in LV: 18 | - Link to Product 19 | - Role 20 | - Stack/Language(s) 21 | - Team Size/Structure 22 | - Stakeholders 23 | - Most Important skill you learned from this work (tech or team) 24 | - Biggest Challenge during this work 25 | 26 | *As you are describing your Products, the experiences you had, and what you learned, make sure to explicitly tie in how the skills you learned will tie into your chosen D4 Role-- this is your D4 Growth Story.* 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /D4+/Data Science/Output 10- Showcase your Work/README.md: -------------------------------------------------------------------------------- 1 | # Output 10- Showcase your Work 2 | 3 | Ask another question… and answer it! Try to win a Kaggle competition. Join the Slack channel #data-sci-curriculum and join weekly meetups to talk through your challenges, learnings, and projects. Gather a team to work with you on a larger data project. Complete a project for Andela and pitch to real end users. Build a Slack app that scrapes data. Make something that will make your own life easier or answer questions that you have. The opportunities are endless-- just don’t forget to share your work to advocate for yourself. Create a [Profile on Kaggle](https://www.kaggle.com/?login=true), link it to your LinkedIn profile, upload to the [Fellow Project Showcase](https://github.com/andela/learningmap/tree/master/D4%2B/Fellow%20Project%20Showcase) on this Repo, and share your work! 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/README.md: -------------------------------------------------------------------------------- 1 | README- link to website 2 | 3 | 4 | Image of Map 5 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/01- Create your Self-Assessment/README.md: -------------------------------------------------------------------------------- 1 | Why: Reasons for digging into this part of the process 2 | 3 | What: Outputs and templates to help you complete the step 4 | 5 | How: The process required to complete the outputs and gain the skills required 6 | 7 | Examples: Examples of completed outputs and templates to give you structure & inspiration 8 | 9 | Checklist: An overview of the outputs, skills, and knowledge inherent in the step 10 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/02- Build your Domain Expertise/README.md: -------------------------------------------------------------------------------- 1 | Why: Reasons for digging into this part of the process 2 | 3 | What: Outputs and templates to help you complete the step 4 | 5 | How: The process required to complete the outputs and gain the skills required 6 | 7 | Examples: Examples of completed outputs and templates to give you structure & inspiration 8 | 9 | Checklist: An overview of the outputs, skills, and knowledge inherent in the step 10 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/03- Build your Confidence/README.md: -------------------------------------------------------------------------------- 1 | Why: Reasons for digging into this part of the process 2 | 3 | What: Outputs and templates to help you complete the step 4 | 5 | How: The process required to complete the outputs and gain the skills required 6 | 7 | Examples: Examples of completed outputs and templates to give you structure & inspiration 8 | 9 | Checklist: An overview of the outputs, skills, and knowledge inherent in the step 10 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/04- Increase your Focus/README.md: -------------------------------------------------------------------------------- 1 | Why: Reasons for digging into this part of the process 2 | 3 | What: Outputs and templates to help you complete the step 4 | 5 | How: The process required to complete the outputs and gain the skills required 6 | 7 | Examples: Examples of completed outputs and templates to give you structure & inspiration 8 | 9 | Checklist: An overview of the outputs, skills, and knowledge inherent in the step 10 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/05- Care for Yourself/README.md: -------------------------------------------------------------------------------- 1 | Why: Reasons for digging into this part of the process 2 | 3 | What: Outputs and templates to help you complete the step 4 | 5 | How: The process required to complete the outputs and gain the skills required 6 | 7 | Examples: Examples of completed outputs and templates to give you structure & inspiration 8 | 9 | Checklist: An overview of the outputs, skills, and knowledge inherent in the step 10 | -------------------------------------------------------------------------------- /D4+/Entrepreneurship/Self - Mindset/README.md: -------------------------------------------------------------------------------- 1 | ## Checklist for Self & Mindset 2 | 3 | [] One 4 | [] One 5 | [] One 6 | -------------------------------------------------------------------------------- /D4+/Fellow Project Showcase/README.md: -------------------------------------------------------------------------------- 1 | # Fellow Project Showcase 2 | 3 | ## How to use this Showcase 4 | When you complete a Work Output on a Growth Path, `submit a pull request` to this folder with your work This is a great way to get noticed, showcase yourself as a leader and mentor, advocate for your own growth and experience, and inspire others who may be working toward a similar goal. 5 | -------------------------------------------------------------------------------- /D4+/Product Manager/Product Manager Learning Outcomes/3D. Creating User Personas/README.md: -------------------------------------------------------------------------------- 1 | # Creating User Personas 2 | 3 | ### Definition 4 | Any product will be designed for a set of end users, and a Product Manager’s job is to know those users so intimately that they can constantly ensure that their team’s product development is in the best interest of the end user. User Persona’s are a critical way for PMs to define their end users, their archetypes, their goals in using the product, their fears, their needs. Personas allow a PM to maintain their focus on User-centred Design. This will allow you to: 5 | - Be an advocate for the end user 6 | - Apply the basics of good UX / UI Design 7 | 8 | ---- 9 | 10 | | **"KBB's"**
_What do experts think, do, and feel as they work through this task?_| 11 | |----------| 12 | |
| 13 | | **Knowledge** | 14 | | How to determine the end users of your product | 15 | | How to write user personas | 16 | | Definition of user-centered design | 17 | | What to include in a user persona | 18 | | How to use User Personas to make user stories and define priorities | 19 | |
| 20 | | **Behaviors** | 21 | | **Context:** When I am designing any product, **Action:** I constantly put the end user and his/her needs first. | 22 | | **Context:** When I am creating user personas, **Action:** I start by investigating who I want to reach with my product (market of users). | 23 | | **Context:** Once I know the market I want to reach, **Action:** I define their characteristics and their goals in using my product. | 24 | | **Context:** When I am creating personas for my product, **Action:** I always create three or more (one average, two extremes/edge cases). | 25 | |
| 26 | | **Beliefs** | 27 | | My product is only as valuable as the use my end user gets from it. | 28 | | By designing with my end user in mind, I can create an impactful, transformative product. | 29 | 30 | 31 | 32 | ---- 33 | 34 | -------------------------------------------------------------------------------- /D4+/Product Manager/Product Manager Learning Outcomes/5D. Intelligently Escalating Information/README.md: -------------------------------------------------------------------------------- 1 | # Intelligently Escalating Information 2 | 3 | ### Definition 4 | Part of leadership is knowing how to communicate the right information, to whom. It is never a bad thing to admit mistakes-- in fact, identifying and calling attention to a mistake can be a huge opprtunity for your Product, even if the person who made that mistake is you! This Learning Objective includes: 5 | - Ability to admit your own mistakes early and often 6 | - Abiity to communicate information to the appropriate stakeholders 7 | 8 | ---- 9 | 10 | | **"KBB's"**
_What do experts think, do, and feel as they work through this task?_| 11 | |----------| 12 | |
| 13 | | **Knowledge** | 14 | | How to “ready, aim” before “firing”-- aka how to gather enough data before making a decision | 15 | | How to identify information that should be shared | 16 | | How to harness the power of admitting mistakes | 17 | |
| 18 | | **Behaviors** | 19 | | **Context:** When I see a potential problem arise, **Action:** I alert someone immediately. | 20 | | **Context:** When I make a mistake, **Action:** I admit it early and often! | 21 | |
| 22 | | **Beliefs** | 23 | | Belief: All dev teams appreciate when a mistake is owned up to- it allows them to fix it faster. | 24 | | Belief: Admitting my mistake and working to help fix it turns me into the hero. | 25 | 26 | ----- 27 | 28 | ## Develop this Skill 29 | #### *Work Outputs, Practice, & Examples* 30 | 31 | 1. **Output 1:** Intelligently escalate a challenge, mistake, or opportunity you see on your team. 32 | 2. **Output 2:** Identify a mistake you have made, no matter how small, and escalate it to your team. 33 | 34 | ---- 35 | 36 | 37 | -------------------------------------------------------------------------------- /D4+/Product Manager/TWO's- Work Output Library/More Practice/README.md: -------------------------------------------------------------------------------- 1 | # Where to look for Real World Practice as a Product Manager 2 | 3 | Work == Learning. So how do we find Real Work on which to build on?

4 | 5 | There is good news- There's never a shortage of need for Product Managers. Think about exploring some of the following opportunities to do great work and learn as you build, make mistakes, get feedback, and grow: 6 | 7 | - Apprentice on an Internal Andela Product as a PM 8 | - Apprentice Product Lead Program 9 | - Go to a Hackathon! You can work as a Product Manager within a team. 10 | - Volunteer your Services: Angel List & [CatchaFire](https://www.catchafire.org/) are a couple great places to look 11 | - Start a Product yourself-- recruit a team to work with you 12 | -------------------------------------------------------------------------------- /D4+/Product Manager/TWO's- Work Output Library/Output 11- Write your Technical Requirements Document/README.md: -------------------------------------------------------------------------------- 1 | Write a list of technical requirements for a product you are on at your client or at Andela. 2 | -------------------------------------------------------------------------------- /D4+/Product Manager/TWO's- Work Output Library/Output 13- Use your Product/README.md: -------------------------------------------------------------------------------- 1 | # Output 13- Use your Product 2 | 3 | - **The Product:** The best way to really understand the user goals and painpoints of your product is to… be a user! 4 | - **The Process:** Use your product as an end user. Spend at least one hour as each user, and do every action you can do. Carefully take notes on what makes you happy, what steps are intuitive, what steps are frustrating. 5 | - **The Follow-Through:** If your product has multiple end users or multiple views, use it from each one, repeating the process throughout. 6 | 7 | ----------------------------------------------------------- 8 | 9 | | **"KBB's"**
_What do experts think, do, and feel as they work through this task?_| 10 | |----------| 11 | |
| 12 | | **Knowledge** | 13 | | How to empathize with your products user | 14 | |
| 15 | | **Behaviors** | 16 | | **Action: When I am getting started on a new product and developing User Empathy, **Action:** I first use my product as an end user. | 17 | | **Action: If my product is not in usable form, **Action:** I use competitors to understand my user's current pain. | 18 | |
| 19 | | **Beliefs** | 20 | | As a Product Manager I am in the business of solving problems, not just creating code. | 21 | 22 | 23 | ---- 24 | 25 | >> ### TWO Sources: 26 | >> *Austin Clients- Interviews, Adam Schwem- Observation* 27 | -------------------------------------------------------------------------------- /D4+/Product Manager/TWO's- Work Output Library/Output 14- Map your Business Goals and Ecosystem/README.md: -------------------------------------------------------------------------------- 1 | # Output 14- Map your business goals & Ecosystem 2 | 3 | - **The Product:** In order to be an effective product manager, you need to understand more than just your product, its goals, and its metrics of success. You must also understand what drives success for your business, and what goes into that success. 4 | - **The Process:** Map out your entire “business ecosystem.” Start with the overall goal & business process of your company-- what does it aim to do? Who does it serve? How do you know if it’s succeeding? How does it make money? What costs are involved? Include every product that your business has, how each one measures success, and how each impacts the higher level business goals. 5 | - **The Follow-Through:** Bring this to a leader at your company to get feedback. Don’t be afraid to do this-- if you’re wrong in certain places or missed something big, or made an assumption that is incorrect, they will be deeply impressed with the fact that you took the time to think through it, and will be happy about your mistake or misunderstanding because you gave them the opportunity to bring you (and thus your team) into alignment. Remember, every individual and product at your company is like a vector, with a direction and a force. If you are all pointed in the same direction toward your business goal, you will be a successful business. But if your product is pointed in a different direction, no matter how well you execute against your own goals you will actually be damaging the business. 6 | 7 | 8 | 9 | 10 | ---- 11 | 12 | >> ### TWO Sources: 13 | >> *Austin Clients- Interviews, Documentation- Lisbi's D4 PM Advancement Criteria* 14 | -------------------------------------------------------------------------------- /D4+/Project Manager/Case Study Questions/README.md: -------------------------------------------------------------------------------- 1 | # Prepare for your PM Case Study Questions 2 | 3 | Although you may not have worked in a role with the title "Project Manager" in the past, you can still showcase what you've learned through volunteer work, shadowing, and resources. 4 | 5 | The best way to do that is to tell your interviewer *what you would do* if you were in a Project Manager role. These situational case studies will be based on real work experiences you would espect to ecounter in a PM role. 6 | 7 | ---- 8 | 9 | *We will contintue to add to this list. 10 | [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) with any suggestions if you've been through a PM interview!* 11 | 12 | ---- 13 | 14 | 1. You are building a D5 Learning Path for Andela. On this project, you're leading a team of 8 Fellows. 15 | * Who are your Stakeholders, and what is your communication plan with them. 16 | * All of a sudden 4 of them become unresponsive/irresponsible (not professional in their work etc.). Your deadline is in two weeks— how do you handle this situation? 17 | 2. You're managing a Project for your client in which your team will build a photo portfolio content management system and printable e-commerce feature. 18 | * How would you identify the risks involved in this project? 19 | * What will you do with the risks you identify? 20 | * What is your project plan? 21 | * What is your communication plan, and how did you develop it? 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /D4+/Project Manager/Communicating your Past Work/README.md: -------------------------------------------------------------------------------- 1 | # Communicate your Past Work 2 | You don't need to have worked as a Project Manager to have gained Project Management Skills from your past work. Some areas to draw on are: 3 | 4 | - If you've ever had a leadership role (Team Lead, Society Head, etc) 5 | - If you've ever led an initiative or a project on your client or at Andela (workshop, new feature, etc) 6 | - Any time you were *responsible for a group of people* 7 | - Any time you were *responsible for making something grow* 8 | 9 | Take a few minutes and reflect on your past work. Make a list of **all** the situations, roles, and projects you worked on that could qualify for these criteria. 10 | 11 | ---- 12 | *We will contintue to add to this list. 13 | [Please DM Nora](https://andela.slack.com/messages/@nora.studholme/) with any suggestions if you've been through a PM interview!* 14 | 15 | --- 16 | 17 | ## Questions 18 | * What can you tell me about Project Management? 19 | * If you were telling a learner the 3 most important things about Project Management, what would you tell them? 20 | * When you were working as a Team Lead (or other leadership role), how did you manage your team? 21 | * How would you describe your leadership style? 22 | * What was your interaction like with your team members? With Stakeholders? 23 | * What feedback did you get from your team members? 24 | * Talk about a situation in which you planned a project. 25 | * How did it go? What made it fail/succeed? 26 | * When you were getting started, what risks did you identify? 27 | * How did you identify them? 28 | * What did you do with the risks when they were identified? 29 | * Talk about planning one of the projects you've lead: 30 | * What was your Project Planning Process? 31 | * What was your communication plan, and how did you develop it? 32 | * Where do you see yourself in the next 5-10 years? 33 | * How have you prepared yourself to get there? 34 | -------------------------------------------------------------------------------- /D4+/Project Manager/README.md: -------------------------------------------------------------------------------- 1 | # D4 Project Manager 2 | 3 | Please visit the [full Curriculum, Requirements, and Resources here!](https://docs.google.com/a/andela.com/document/d/1u3EW6CMIU6tyQsQ5EQEFb0k6jWf1mwHIR4t8AP9GnXc/edit?usp=sharing) 4 | 5 | ## Overall Resources 6 | - [Expert Meet-up](https://soundcloud.com/learning-media/sets/project-management) _Chat with Ayoola Ajebeku_ 7 | -------------------------------------------------------------------------------- /D4+/Project Manager/Required Skills/README.md: -------------------------------------------------------------------------------- 1 | # How to use the Required Skills Section 2 | 3 | For the time being, [Required Skills are listed on a Word Document Here](https://docs.google.com/a/andela.com/document/d/1u3EW6CMIU6tyQsQ5EQEFb0k6jWf1mwHIR4t8AP9GnXc/edit?usp=sharing)-- please visit to check them out! 4 | -------------------------------------------------------------------------------- /D4+/Software Architect/More Resources/More Practice Outputs/README.md: -------------------------------------------------------------------------------- 1 | This will be the outputs readme! 2 | -------------------------------------------------------------------------------- /D4+/Software Architect/More Resources/Required Skills/You May Encounter.../README.md: -------------------------------------------------------------------------------- 1 | # You May Encounter... 2 | 3 | "Software Architect" is a role defined differently at every company. These are the skills you may encounter on the job but which you **will not be expected to demonstrate** in your interview process at Andela. 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 19 | 25 | 26 | 27 |
Skill / Attribute Developed By (resources) Demonstrated By (output)
Presentation/ Pitching 18 | 20 |
28 | 29 | ![screen shot 2017-06-08 at 10 40 38 am](https://user-images.githubusercontent.com/5239538/26942857-99c0bf3c-4c51-11e7-92ba-a310e84da22b.png) 30 | 31 | -------------------------------------------------------------------------------- /D4+/Software Architect/More Resources/Resources- Getting Started/README.md: -------------------------------------------------------------------------------- 1 | # Some Key Resources for Getting Started 2 | 3 | - [Software Architect Reading List](https://www.javacodegeeks.com/2014/07/you-want-to-become-an-software-architect-here-is-your-reading-list.html) 4 | - [20 Software Architecture Interview Questions](http://www.fromdev.com/2013/07/architect-interview-questions-and-answers.html) 5 | - [Developer to Architect- PluralSight](https://www.pluralsight.com/courses/developer-to-architect) 6 | - [Software Architecture & Design- Microsoft Developer Network](https://msdn.microsoft.com/en-us/library/ee658098.aspx) 7 | - [Expert-Sourced Overview of Duties, Skills, and Knowledge of a Software Architect](https://www.sei.cmu.edu/architecture/research/previousresearch/duties.cfm) 8 | - [Software Architect “Bootcamp”- PDF](http://sunner.cn/courses/SA/Software%20Architect%20Bootcamp.pdf) 9 | - [Software Architecture Case Studies- University of Colorado](http://www.csm.ornl.gov/~sheldon/cs531/SWArch3.pdf) 10 | -------------------------------------------------------------------------------- /D4+/Software Architect/More Resources/What is a Software Architect/README.md: -------------------------------------------------------------------------------- 1 | # The Software Architect Role 2 | 3 | A Software Architect's role is both business-related and technical. Their purpose is to translate business needs into technical solutions, and to guide that solution’s tactical & strategic evolution. By gaining a broad _and_ deep understanding of how different parts of a technology system interact, Software Architects are also well positioned to become CTO's, Enterprise Product Leaders, and Entrepreneurs in the future. 4 | 5 |
6 | 7 | ![screen shot 2017-06-08 at 10 40 38 am](https://user-images.githubusercontent.com/5239538/26942857-99c0bf3c-4c51-11e7-92ba-a310e84da22b.png) 8 | 9 | 10 | 11 |
12 | 13 | ![screen shot 2017-06-08 at 1 51 52 pm](https://user-images.githubusercontent.com/5239538/26942909-c707308e-4c51-11e7-865d-680bb6998fba.png) 14 | 15 | 16 | **Expert Note:** 17 | The key to being an excellent Software Architect is not necessarily to be an _expert programmer_ in a particular stack. The most important skills are computer science knowledge, and a deep understanding of how all parts of a system fit together. 18 | 19 | -------------------------------------------------------------------------------- /D4+/Software Architect/README.md: -------------------------------------------------------------------------------- 1 | # [Software Architect Growth Path](https://docs.google.com/a/andela.com/document/d/1gmj-9ms-4tBg2FauC8X8NY9rlhyqQbxCTIMx49_u3ko/edit?usp=sharing) 2 | 3 | >> [Click Here](https://docs.google.com/a/andela.com/document/d/1gmj-9ms-4tBg2FauC8X8NY9rlhyqQbxCTIMx49_u3ko/edit?usp=sharing) for the full Curriculum 4 | 5 | The [**Software Architect**](https://docs.google.com/a/andela.com/document/d/1gmj-9ms-4tBg2FauC8X8NY9rlhyqQbxCTIMx49_u3ko/edit?usp=sharing) Growth Path at Andela is designed to allow experienced Developers to have real-world opportunities to work on the interactions of complex systems. 6 | 7 | # How to Use this Curriculum 8 | 9 | [Andela's D4 Software Architect Curriculum](https://docs.google.com/a/andela.com/document/d/1gmj-9ms-4tBg2FauC8X8NY9rlhyqQbxCTIMx49_u3ko/edit?usp=sharing) can be used for many purposes-- to learn key skills of a role through a detailed resource library, to explore new growth paths through work = learning outputs, or to prepare for your advancement interview into a new role. 10 | 11 | 12 | **The Ask:** Please use this curriculum in this Google Docs format and *comment* with any `additional resources you find that are helpful` for you as you learn, or any `questions that it leaves unanswered.` That way, we can grow **"learning at scale"** and create exponentially more robust resources for all Andelans to come. 13 | 14 | https://docs.google.com/a/andela.com/document/d/1gmj-9ms-4tBg2FauC8X8NY9rlhyqQbxCTIMx49_u3ko/edit?usp=sharing 15 | -------------------------------------------------------------------------------- /D5/Enterprise Architect/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /D5/README.md: -------------------------------------------------------------------------------- 1 | D5 Readme 2 | 3 | 2 Roles currently: 4 | D5 Program Manager 5 | D5 Enterprise Architect 6 | -------------------------------------------------------------------------------- /Facilitator-Guide/Program Design/README.md: -------------------------------------------------------------------------------- 1 | Program Design Track 2 | 3 | 1. Setting and Reporting on Program Goals 4 | 2. Running Program Tests 5 | 3. Extracting OKBBs from Experts 6 | 4. Building Learning Tools 7 | 5. Eliciting & Processing Program Feedback 8 | 9 | -------------------------------------------------------------------------------- /Facilitator-Guide/README.md: -------------------------------------------------------------------------------- 1 | This is the Facilitator Guide for the Andela Learning Map. It has Learning Outcomes for each of the main responsibilities of an Andela Learning & Development Facilitator, including Defining Learning Outcomes, Facilitating Fellows, and Tracking Fellow Progress. -------------------------------------------------------------------------------- /Homestudy/README.md: -------------------------------------------------------------------------------- 1 | # Phase A - Homestudy 2 | 3 | The Homestudy curriculum detailed here shows all the Knowledge, Behaviors and Beliefs required for a candidate to become Andela ready. 4 | 5 | ### The skills covered here are 6 | 1. Familiarity and Comfort with Computer Science 7 | 2. Programming Fundamentals 8 | 3. Python Programming 9 | 4. Object Oriented Programming 10 | 5. Data Structures 11 | 6. Algorithms 12 | 7. Recursion 13 | 8. Sorting and Searching 14 | 9. Software Engineering 15 | 10. The Internet 16 | 11. Web Programming 17 | --------------------------------------------------------------------------------