Developer Manifesto
Thoughts on how to live a productive life being a developer
Demand clear objectives
You can only deliver the best of you, when you know what it is about.
Think first, code later
Spend considerably more time analyzing the problems at hand and then get your hands dirty.
Embrace, debate, optimize
As workflows and approaches to problem-solving change rapidly, have an open mind to something new but do put it under a microscope before fully diving in. Optimize these processes and approaches when possible and give feedback.
Prototype and explore
Not all tools are made for all jobs. Prototyping and exploring new ways to approach problems, allows you to compare tools and test concepts before they reach production. Why buy a Ferrari when all you need is a Lada Niva?
Iterate
Taken from Addy Osmani:
First do it, then do it right, then do it better.
When given a choice, code slower and with an "extensible" base in mind, rather than coding fast and then tearing it down.
When applicable, take the time to add some extensibility hooks and defensively code for the future rather than coding "quick and dirty" for the NOW and HERE.
Experience shows that even if you can be fast in developing a solution, you spend considerably more time when asked to alter it.
Test test test
Provide as many as possible testing fixtures for the code / solutions you provide.
Testing allows you and people not familiar with the project to contribute and optimize while testing a deliverable's expected behaviour.
Ask and answer the why and the how
There is no holy approach or workflow. Even if the team has accepted and is working well with such structures, things are always open to well-intended critique, concept evolution and better alternatives.
Choose a workflow for committing and sharing code
As important as it is to manage versions of your source code, it is equally important to evolve it in a parallel fashion.
E.g. producing a feature while at the same time creating a patch for an already live version of the source code.
Document
Document your code and deliverables – You are not alone and you will probably will not remember in 6 months time.
Edit yourself
Keep some things for the next iteration cycle. Learn to prioritize what is more important in delivering a Minimum Viable Product.
Review and get reviewed
Friends don't let friends ship without a review.
Stage often
Put your deliverables to test in near-production environments. Avoid surprises on the "big day".
Deploy early
The more often you put your deliverables out there, the more chances you have to get feedback and proceed with the next iteration.
Fail fast
Failure is not a problem if there are lessons learned. The next iteration should incorporate those lessons and make you a better man.
Be honest
Express yourself. Don't be shy. But be polite.
Don't be afraid to ask
No man or woman is left behind
Automate
How many tentacles shall we grow today Sir? Automation will try to remove the day-to-day burden of repeating, trivial (or not so trivial) tasks that need 0 to little human interaction.