This presentation discusses the Clean and Green Code initiative to promote writing cleaner code. It encourages coders to rebuild their will to write beautiful, reusable code through discipline and making coding a form of recreation again. Clean code is defined as simple, well-structured, robust, efficient and passes all tests, making comments redundant. Writing clean code leads to green outcomes like tests passing with green results, high code maintainability, and lower carbon footprints from code execution and technologies used. Reasons why coders don't always write clean code are discussed. The presentation pledges that coders will take responsibility for writing clean and green code.
4. • Inspired by some green grass outside the
clean glass.
• As software professionals [coders and
henceforth], how do we and how can we
contribute?
• Clean and Green Code Initiative
Inspiration
5. Objectives
• Rebuild the lost will and power to write
beautiful code
• Inculcate a “sports culture” discipline in
coders
• Make “Code Creation” a Recreation again
• Opt to be right always.
7. Our Users
• Our Users need us.
• Our Users entrust on us, their data, their
operations, their systems and their lives.
• Our Users believe that we understand
machines and machines languages better than
them.
• Our Users are our co-developers. They help us
develop better solutions, better products and
better ourselves.
• We need Our Users more.
9. Our Machines
• Our Machines/Systems Always listen to Us.
• They don’t fail Us. We fail them.
• We fail them by our inability to express
ourselves, to command them and put them
into proper use.
• Its time to feel, think and act [code/configure]
for them.
13. Our Code
• Code is inevitable.
• We need to “housekeep” and “reuse”.
• We would need to read code to write new
code.
• Code is the only credible documentation we
would have.
• Code will be written once and will be run
anywhere, anytime and any N of times.
• Our Code is Our Power [Our Pride].
15. Clean Code is
• Simple[Brevity is wit but clarity is care]
• Well-indented and Well-intended
• Robust; Easy to Use And Hard to Misuse
• Runs Efficiently
• Clears all Tests
• Makes comments redundant
17. Green Code
• Essentially always, clean code ends being
green.
• Test results Pass. Color is Green.
• “Alls Well” Status for PMs. Color is Green.
• Clean code is maintainable; Coders 40 hours a
week; Workstation Carbon Footprint; Green.
• Clean code executes elegantly. Overall Carbon
footprint; Green.
• BPM;RIA;SOA[SaaS]. Green Technologies.
23. We, The Coders Pledge
“We, software professionals, [coders and henceforth], know that
our users need us, invest on us and co-develop us.
Our machines listen to us and never fail us.
Our code will reach, impact, serve and outlive us.
Our processes and Our tools enable us.
We acknowledge this power and own up the responsibility and
the accountability too.
We, the coders, take the pledge that we would assure clean and
green code. ”
(C) Lalatendu Rath, “We, The Coders”2008
This is an era of social activism[Web2.0] and everyone is challenged to feel, think and act wrt their contributions towards society, environment and the future.
We need to inform and reassure software professionals that the reach and impact of the code that they write is immense. Its time to acknowledge the power and own up the responsibility and accountability.
We do have an agenda. We have objectives.
Power comes from attitude, skill and wisdom.
We need to inculcate a sportive nature in coders. Sports teaches us that although we lose sometimes, we are not losers.
Sports teaches us discipline, hard work and honest attempts at winning. Sports teaches us working in teams.
Coding is a creative process. Followed well, it can be made re-creative.
Life meets us with difficult choices. We can opt to be right now and right always.
Our machines/systems will have fancy names and/or addresses, will use different technology [stacks], have setups and configurations, maybe less or more capable/intelligent but they will always listen to us.
Our predecessors left their experiences as legacies/learnings so that we do not reinvent the wheel but carry forward from where they ended. We should be mindful of their efforts and value and learn from their suggested processes/tools.
Code is inevitable and will remain so. DSLs (Domain Specific Languages), XSDs will emerge and so will auto code generation tools
but all will still end up in code.
Housekeep indicates a sense of responsibility and accountability.
Clean Code is simple. According to laws of simplicity by John Maeda, applicable to technology, business, life and learning, simplicity is achieved via thoughtful reduction and organization of details. Savings in time feels like simplicity. Knowledge makes everything simpler. So, clean code is actually achieving this simplicity.
According to most, clean code is about good formatted code. For very few, its both well indented as well as well intended.
Names reveal intentions. Comments clarify intentions. Functions do what is intended.
Brevity is wit but clarity is care.
Test Results Pass. Color is Green.
All is Well Status. Color is Green.
Clean code is maintainable. Coders code for no more than 40 hours. Switching off workstations reduces the carbon footprint.
Let me extend this discussion a little bit by saying that BPM,RIA and SOA [SaaS] technologies are green.
BPM=>paperless forms/firms.
RIA=>unwanted trips avoided.
SOA[SaaS]=>Fewer servers running.
We do not write clean code more often. Lets be honest and find out why.
The code and commerce association has been unfortunately misinterpreted. We need to drive awareness of the CABU framework.
Coding is creative and followed well, it can be recreative.
Make it work is not the challenge. Making IT work is.
Instant success should motivate us to make it better.
We do not have evil intentions. We sometimes do not know how. We do not know and We do not ask for help.
We are only made aware of the Cost/Price of Ownership. We do not value ownership anymore.
We Want to Write Clean Code. But How?
Code Walkthrough and Code Review skills to identify code smells, good and bad. [Design Patterns and AntiPatterns]
Refactoring skills along with IDE tips and techniques.
Test Driven Development and Automated Test Toolkits.
Agile Processes [documentation]