Archive for the ‘Programming’ Category

Hippocratic oath for software engineers: Programming promises for professional programmers

According to Wikipedia:

“The Hippocratic Oath is an oath traditionally taken by doctors swearing to ethically practice medicine.”

The term ‘Hippocratic Oath’ was coined solely for medical practitioners or physicians really. So, I felt curious if there is any such guideline or ethical doco for a software engineer like me. In googling for this, I came across some interesting links across the web. Some of which are there only for the sake of fun while others are mostly created by folks on ethical boundaries. Here they are:

Hippocratic Oath for scientists

“The Hippocratic Oath for Scientists has been suggested as an ethical code of practice for scientists that is similar to the Hippocratic Oath used in the medical profession. Proposals suggest that a suitable oath should encourage rigour, honesty and integrity among scientists, and ensure the minimisation and justification of any adverse effects their work may have on people, animals or the natural environment. In principle, such an oath would advance moral and ethical thinking and could increase public support for science.”

Hippocratic Oath For Software Engineers: Is It Time for a Hippocratic Oath for Programmers?

Six programming pledges to help with growing from grad to geek to giant.

“Hippocrates, one of the founding fathers of modern medicine, realized that those who trained to become physicians were not only able to use their skills for good and for progress, but also might be inclined to misuse all they had learned. To protect against such abuses, new grads back in the 4th century B.C. were made to swear they would only use medicine in the best interests of their patients by taking the eponymously named ‘Hippocratic Oath.’

I think that it’s about time we had a similar oath for all those who enter into the venerable profession of software engineering. As generations of future geeks walk down to collect their degrees wearing ill-fitting rented robes before proud parents and nervous colleagues, they should clutch a copy of Design Patterns in one hand, raise the other, and chant: Before all gathered here, I FinnBarMcFooBar swear and promise:

  • To avoid violating the morals of my community
  • To not write code on the user interface thread that has any possibility of taking more than a second.
  • To remember that a progress bar is designed to show the percentage completion of a long-running background task.
  • Never to do deliberate harm to anyone for someone else’s interest.
  • To keep the good of the user as the highest priority of all I do.
  • To recognize that I have no experience in the real world and, as I grow from grad to geek to giant.


The Case for a Hippocratic Oath for IS Professionals Revisited

“This paper takes as its starting point a contribution to the first ETHICOMP conference in 1995 that called for the equivalent of a ‘Hippocratic Oath’ for IS professionals. It considers whether such an oath is still required and reviews selected codes of conduct/ethics that have been developed or revised over the past decade to examine the extent to which they address the criticisms levelled at existing codes in the 1995 paper.  Finally it discusses the means by which more socially responsible practices by those who design, develop and deploy Information and Communications Technologies (ICT) could be promoted.”

Programming Promises (or, the Professional Programmer’s Hippocratic Oath)

“Michael.NET, apparently inspired by my “Check Your Politics At The Door” post, and equally peeved at another post on, hit a note of pure inspiration when he created his list of “Programming Promises”, which I repeat below:

In many ways, this strikes me as fundamentally similar to the Hippocratic Oath that all doctors must take as part of their acceptance into the ranks of the medical profession. For most, this isn’t just a bunch of words they recite as entry criteria, this is something they firmly believe and adhere to, almost religiously. It seems to me that our discipline could use something similar. Thus, do I swear by, and encourage others to similarly adopt, the Oath of the Conscientious Programmer.”

Hippocratic Oath For Software Engineers:

  • Never write a line of code that someone else can understand.
  • Make the simplest line of code appear complex. Use long counter intuitive names. Don’t ever code “a=b”, rather do something like: AlphaNodeSemaphore=*(int)(&(unsigned long)(BetaFrameNodeFarm));
  • Never use direct references to anything ever. Bury everything in macros. Bury the macros in include files. Reference those include files indirectly from other include files. Use macros to reference those include files.
  • Never generate new sources. Always ifdef the old ones. Every binary in the world should be generated from the same sources.
  • Never code a function to return a value. All functions must return a pointer to a structure which contains a pointer to a value.
  • Load all sentences either written or spoken with alphabet soup. When someone asks you out to lunch, reply:
  • Never clean your office. Absolutely never throw away an old listing.
  • Never say hello to someone in hallway. Absolutely never address someone by name. If you must address someone by name, mumble or use the wrong name. Always maintain the mystique of being spaced out from concentrating on complex logic.
  • Never wear a shirt that matches your pants. Wear a wrinkled shirt whenever possible. Your shirt must never be tucked in completely. Button the top button without wearing a tie. This will maximize your mystique.

The Engineer’s Hippocratic Oath – YouTube Video

This video takes the time to salute the scientists and engineers (past and present) by showing the engineer’s Hippocratic oath. The engineer’s hippocratic oath was originally written by the late Charles Susskind, Professor emeritus of electrical engineering, UC Berkeley. His concern with the role of technology in society led him to propose an engineer’s version of the Hippocratic Oath in one of his books, “Understanding Technology.” Engineers swearing by the oath would promise, among other things, not to use their professional knowledge contrary to the laws of humanity and to avoid waste and consumption of nonrenewable resources. The book has been translated into seven languages since it was first released in 1968.

Whether I agree with them all or not, I found those links as interesting read. Hence, I thought about sharing with you folks. Do post your insightful thoughts on the comments section below. Look forward to it!


Weekly Link Roundup – 2

Links published on May 04, 2009:

Math world, simple mental calculations or what’s going on with education?

Most interesting math blog post I have read for a long time. Have a read guys and tell me how you find it.

Programmer Competency Matrix:

Panoramic Image & Viewer related resources:

File conversion utility for panoramic photos:

Automatic image stitching:

Panoramic Image App (Commercial):

Panorama Gallery:

Panoramic Viewer:

TDD Links:
A Conversation with Martin Fowler
Mocks Aren’t Stubs
Learn about .NET Unit Testing with Typemock

Old Version Downloads:

10 Youtube URL Tricks You Should Know About

100 Best JavaScript Resources

Performance killer: Disk I/O

Top 20 Best Agile Development Books, Ever

Top 100 Best Software Engineering Books, Ever

Top 20 Programming Books

Top 10 Concepts That Every Software Engineer Should Know

Securing ASP.NET Applications

The ADO.NET Entity Framework must read:

Introducing the Entity Framework [MSDN]
The ADO.NET Entity Framework Overview
ADO.NET Tech Preview: Entity Data Model

Introduction to the Entity Framework [Code Project]

Windows Communication Foundation must read:

Fundamental Windows Communication Foundation Concepts
What Is Windows Communication Foundation?

A Guide to Designing and Building RESTful Web Services with WCF 3.5

Howto Dynamically Insert Javascript And CSS:

This is a short and sweet little tutorial to show you how to dynamically insert a new Javascript (or style sheet) into your web pages, and explores how you can exploit cross-domain includes in your applications.

As JSON and DHTML start to get pushed more and more to the forefront of web-based applications, the web designer is faced with a new problem: how to dynamically insert a script element into an existing web page. It won’t take long to figure out that ajax loads and innerHTML injections won’t work.

Yahoo! Pipes and JQuery : Goodbye Same Origin Policy

URL Shorteners:

Interview Tips:

LINQ to Entities:

LINQ Learning Guide: LINQ to Entities,295582,sid8_gci1299600,00.html

The ADO.NET Entity Framework Overview:

Parallelism Videos Galore

Writing LINQ Queries with the Entity Framework:

ASP.NET Dynamic Data Overview

Inheritance and Associations with Entity Framework Part 1

Model Domain Objects with the Entity Framework

Lambda the Ultimate : Programming Languages Weblog

Introduction to Domain Specific Languages

Good blog site on Patterns:

Pattern site on Hexagonal architecture

JSINQ – LINQ to Objects for JavaScript

JSINQ: LINQ style access for JavaScript objects

LINQ to SQL: SQL-CLR Type Mismatches (LINQ to SQL)

LINQ to SQL : Object Identity (LINQ to SQL)

Most interesting math blog post I have read for a long time. Have a read guys and tell me how you find it.