Code Monkey home page Code Monkey logo

software-engineer-handbook's People

Contributors

tveal avatar

Watchers

 avatar  avatar

software-engineer-handbook's Issues

Math: Boolean Logic

New section for boolean logic

  • truth tables
  • breaking down a logic expression and simplifying
  • why simplify?
    • reduced complexity
    • easier to read/code review/remember
    • easier testing/code coverage
    • less risk of bugs!

TDD: tests before or after?

New test-driven-dev section on order of writing tests vs source code

  • test purpose
    • fail in absence of source change
    • pass with source change
    • break the build if anyone unintentionally changes the functional behavior being added
  • writer's (coder's) block
  • do you know/understand the source change needed? the business use case?
  • are the existing tests clear on how to test the new change?

Git: Making a Code Change

Add disclaimers about many ways to do things; Pros and Cons to each; Understand your use case; Here's a time-proven way to optimize your work...

Document new Git section on how to make a code change ready to submit to trunk

  • get latest from trunk
  • branch off to task/bugfix/feature
  • make small incremental commits and push
  • rebase to trunk
  • squash commits
  • merge/pull request

Contrast to periodically pulling/merging trunk into your task/bugfix/feature branch

Git: squash commits

Document new Git section for how to squash commits

  • mention to rebase feature branch to head of trunk first, reference appropriate section
  • warning about squashing merge commits
git log
git rebase -i <trunk head commit>

Data: measure twice cut once

Document new data section;

  • the world runs on data
  • once you publish data, consumers can become dependent
    • think twice on your data structure/schema before adding dependence on it
    • anticipate refactoring

Pi Commander: create wallpaper doc

Add:

  • New chapter section for Pi Commander for scripting the wallpaper-with-qr-code
  • Updates to the template-pi-commander repo
  • Phase 1: QR code from IP
  • Phase 2: Set wallpaper on Raspberry Pi
  • Phase 3: Add ImageMagick

Study: OO, Functional, Procedural?

Explore various programming paradigms

  • experience/takeaways from OOP
    • instance state-fullness
    • pure OO lang difficulties with utils (static methods)
    • nesting levels
    • magical things
  • experience/takeaways from functional programming
    • explicit/verbose logic
    • stateless
  • Pros/Cons; avoid favoring one exclusively; you need all in your toolbox

TDD: Test Fixture Builders

New Test-Driven-Dev section for patterns/reasons of using test fixture builders

  • ease of adding/modifying tests as time goes on
  • consistent test data across all tests
  • builders make refactor and requirement changes easier

TDD: when and what to mock

The art of code mocking with unit tests

  • don't mock where you don't have to
  • consider src code designs that simplify testing (compartmentalized logic units, simplifying logic branches and boolean logic)
  • avoid mocking same class/file under test
  • avoid mocking specific responses from DB calls when there's multiple DB interactions with the same unit (use fixture builder with more complete synthetic DB mock instead)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.