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.
- Ask for less information
- Start right now
- 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.