Skip to content

Latest commit

 

History

History
169 lines (118 loc) · 7.3 KB

File metadata and controls

169 lines (118 loc) · 7.3 KB

Makers Apprenticeship Week 3

Makers Learning Objectives

  • Gather evidence and use reflection to choose goals and track their progress
  • Test-drive a simple program using objects and methods
  • Pair using the driver-navigator style
  • Follow an effective debugging process

Applied Learnings

https://github.com/delexii/makers-dir/tree/main/test-driven-development

https://github.com/delexii/boris-bikes-3

https://github.com/delexii/airport_challenge

Airport Challenge

Personal Learning Objectives

  • learn how to debug on vscode
  • understand gem packages
  • learn the rspec one liner syntax
  • test-drive my code using the red-green-refactor cycle
  • use a methodical approach to solving problems
  • use my own initiative
  • define unit testing as the process of testing the smallest possible 'unit' of a programme.
  • understand each of the "3 As" of a unit test.
  • write some simple unit tests
  • identify errors and understand how to find the root cause
  • write methodical software - organised, clear and correct

Things to celebrate

  • good health
  • catching up with friends after a long time
  • completing my first individual challenge
  • being present and really taking in the learnings from each workshop session
  • the weekly retrospective meeting with the cohort
  • learning how to plan before implementing code
  • being curious and dedicating extra time to cementing various concepts
  • keeping notes of my progress

Emotions

If you don't do the push up, you don't get the muscle.

I had the chance to attend a few pair-programming sessions with some cohort colleagues and apply the independent learning to a live project. The individual challenge which I am currently working on is also quite good as it brings my learning together and I am definitely able to pinpoint the things that have not quite settled or that I may need to practice more.

I've really enjoyed learning about rspec and its functionality. I now understand how to apply the principles of test driven development to a project. I think this enables devs to build clean, organised and methodical lines of code which are easy to read and debug. Although quite challenging, I did enjoy working with user stories and breaking those down into objects and methods that would later then drive the code implementation.

I feel a bit more settled into my learning journey. I appreciate the endless amount of resources available and I feel like I am definitely getting better by the day! I have started t have a more focused approach to studying and make use of my calendar to block time out for different tasks. My intention for the following week is to

Progress and Learnings

General learning

  • learn to be specific in my google search
  • make use of available resources
  • structure my learning
  • build a decision tree using user stories

Test Driven Development

  • test-drive a simple program using objects and methods
  • RSpec use and best practices - Red Green Refactor method
  • each test should make only one assertion
  • learn how to create a directory and initialize rspec —init from the command line
  • local, instance, class, global
  • ruby class variables
  • set up a simple project
  • explain why a complete README is important
  • initialise and push a git project
  • give the structure of a User Story
  • extract a Domain Model from User Stories
  • define 'Feature Test' and use irb to implement
  • explain how to use a stack trace to debug errors
  • debug an error using a stack trace
  • define RSpec as a testing framework
  • describe an Object using a specification
  • set up a Unit Test and implement the simplest code to make it pass
  • move between Feature and Unit Tests
  • test that an Object responds to a Message
  • use RSpec 'predicate' syntax
  • pass an instance as an argument
  • set an attribute on an instantiated Object using an @ instance variable
  • use attr_reader to read an attribute on an instantiated Object
  • use fail or raise to raise an error
  • use a 'guard condition
  • set an initial attribute value using initialize
  • use the Single Responsibility Principle
  • explain why doubles are needed to isolate unit tests
  • use a double to isolate a unit test

Debugging

  • explain what a bug is
  • explain a good approach to debugging
  • follow an effective debugging process to identify a bug
  • follow an effective debugging process to fix a bug

Empathy

  • ability to sense other's emotions and imagine what they might be thinking or feeling

  • validation of others' emotions is so important

    Three types of empathy

    1. affective - feeling but without the drive to help
    2. empathetic concern - internalising emotions and driven to help or respond appropriately
    3. cognitive empathy- consciously imagining how someone is feeling without internalising

    Tools

    • 'Just like me' - Instead of defaulting to create measurements and separations, we attempt to find similarities. Humans are far more similar than different
    • Metta Bhavana - may you be happy
    • Empathy Active Listening - attention is a commodity; reflect back, ask more questions instead of responding, validate emotions, don't offer unsolicited advice, be present
    • Body → Heart → Head (settle body, self compassion, solution oriented)
    • Radical Candor
    • The 5 Dysfunctions of a Team

Pair programming

  • learning more as you have to explain the code
  • idea generation
  • spread knowledge - new programming language, new development environment, new techniques, short cuts TDD
  • communication skills
  • better software through faster feedback

Useful resources

Remote Pairing

Pair Programming

TDD Fizzbuzz video

The 4 phases of a test

The three rules of TDD

Technical Learning Resources

Better Specs

RSpec Core

RSpec Expectations

RSpec Mocks

Ruby TDD Basics

Ruby Intro to RSpec

Ruby RSpec Matchers

Ruby RSpec Build your own

Encapsulation on Wikipedia

Markdown

Git Commit

Ruby Attr property

Ruby raising exceptions