Professional programmer - alexdaube/My-Software-Engineering-Guide GitHub Wiki

Professionalism and The Reflective Practitioner

The professional

Give a damn and is passionate towards software development. Act like a professional and consider his craft an art. Attitude is key.

  • Proud of the work done
  • Respect
  • Honour
  • Responsibility
  • Communication
  • Knows when to say no
  • Saying yes is a commitment
  • Uses clean code
  • Uses TDD
  • Practice his craft often
  • Knows that acceptation test are the best way to communicate
  • Knows the importance of all kind of tests.
  • Manage his time
  • Knows how to estimate
  • Knows how manage pressure
  • Knows how to collaborate
  • Knows that building a solid team takes hard work
  • Share his knowledge with others

Practice makes Perfect

  • Always keep on learning
  • Read as much code as possible
  • Constantly write code
  • Critic and analyse code
  • Do some retroactions on your code
  • Refactor, refactor, refactor
  • Aim for perfection

The Reflective Practitioner

Composites of professional knowledge

  • Fundamental knowledge of a discipline
  • Applied science
  • Aptitude on the field

Reflexion in action

  • Practice within a reflexive process
  • Auto-learning through reflexive analysis
  • Many practices in Agility

Reflexive Conception

  • Aquire information
  • Find a solution
  • Communicate the work
  • Validate the work
  • DANGER => Attachement to initial solution. Searching too much for information is not good. Should be trying to find a solution instead. Fixation and attachment are dangerous.
  • SOLUTIONS => Multiple solutions. Creative dialog, ex: refactoring. Mock up.
  1. Ask for less information
  2. Start right now
  3. Build fast versions of the solution

Reflexive Practices

Continuous evaluation of his own practice and his reasoning

  • To re-examine and re-think during and after doing some work
  • Grows competence and performance in his craft

Software Engineering Reflexive aspects

  • software systems
  • algorithms
  • good practices of development
  • user-machine interactions
  • ergonomic
  • graphic interface
  • protocols
  • security
  • application's domain
  • Utilisation context
  • Business domain
  • Processus

XP

  • Pair programming => Reflexion by the co-pilot.
  • Planning game => Shared knowledge
  • Refactoring => Reflect on your design and understand how to make flexible.