Manoj 的个人资料मनोज अग्रवाल照片日志列表更多 工具 帮助

日志


2009/10/3

Principles of Agile Software Development

  • Get case 1 fully working before starting case 2. Another way of saying this to use a kitchen metaphor is: “Serve the current meal before starting to cook the next“.  The biggest problem with software development is to start a bunch of things in parallel, because inevitably work will include something that is later discarded, meaning wasted work.  Work on one case; get it fully functional; get the tests running; write the documentation; check it all in as a finished piece of work, before you start on the next case.
  • Never break the build.  Pretty obvious, but must be included in any list of software development advice.  A programmer who is taking all the proper precautions to test before checking in will never break the build.  If the build is broken, it is always because someone took a shortcut.
  • Never implement a routine before it is needed in a use case.  When implementing a particular class, you should have a particular use case in mind, and you should implement only the methods required for that use case.  You might think about  the potential for other capabilities on a class, and you might document this in a comment, but implementation should wait until it is actually needed in a use case.
  • Never add a data member before it is needed in a use case. Exactly like above except with regard to class data members.  It may seem obvious that a “customer” record will need a “ship to address”, but that ship to address should not be implemented until you have a use case which specifically needs it.
  • Don’t be afraid to make a decision;  don’t be afraid to change an earlier decision.  Agile development is about responding to uncertainty and quickly responding.  Early in development you do not have complete information.  You should delay decisions as long as possible, but there comes a time that a decision is needed to move forward.  You cannot hold up decision until that information comes in.  Instead, make the best decision you can on the available information.  Later, when new information arrives, don’t be afraid to change that decision.  (Some dinosaurs call this flip-flopping, but I call it reacting to a changing environment.)
  • Continually learn how to improve quality. This job never ends, so you should expect to be constantly on the lookout for things that could be improved, and collect examples of ways that quality problems were identified and addressed.
  • Measure, measure, measure. Agile development is help address the problem of uncertainty about the future, but there should be no uncertainty about the past.  Tests should be continually running.  Performance of every run should be measured and recorded.
  • Design around people, not systems. Too often developers get sidetracked into designing for technical opportunities.  You should never lose sight of the ultimate purpose of the software, and that is to help people get work done.
  • Tests are part of the product.  Many developers and managers consider the product to be what you ship to the customer, and everything else less important.  The tests should be considered an actual part of the product, worthy of full consideration during design, and even, in many cases, delivered with the product to the customer. (This latter part is controversial, but a built-in self-test as part of a software delivery takes inconsequential space, and yet provide tremendous benefit when needed.  Such an approach should be considered.)
  • Write the test before the code. The test itself can be used to clarify the design for exactly what is needed.   Many times there are flaws in the design approach which are discovered when working through the test cases.  Think how much time would be saved to work through those cases before coding.  But: write the test for case1, and code for case 1, before starting case 2.
  • Eliminate Waste. Frankly, another ubiquitous platitude which must be included in any list of development principles because it is so important.  There is no end to the job of looking for waste where it exists and eliminating it.  Eliminate anything that does not add value to the actual customer.  If you cannot identify the value to the customer, then you probably don’t need it.
  • Build a culture of immediate response to build breakage. Understand that when the build is broken, it affect everyone in the project, and so there is nothing more important than making sure that the central core code is building and testing properly.  I have seen teams that allowed broken tests to persist for months because it was someone else’s job.  Everyone suffered, but nobody acted.  Instead, there needs to be widespread recognition that a little work will pay back in a big way over the team.
  • Every team members needs to understand the needs of the customer.  Large complex projects must be broken into separate teams and further divided for handing out to developers, but this should never be done to the extent that people lose sight of the desires and goals of the actual users of the final product.
  • Keep related definitions together. Structure the code so that highly related things are located together, possibly within one class.   This is a standard OO design principle of encapsulation.  Ideally, all the code outside the class will not need to know the details of the internal workings.  Some developers delight in spreading details across multiple files in order to organize in different way: such as to keep all the same data types together, or to organize alphabetically.  For example, putting all the constants in one class in a different package from where they are being used adds unnecessarily to the complexity of the program.   The guiding rule should be to group by relatedness with the result being to hide complexity.
  • Always run the tests before checking in. This guideline will help you satisfy the  “never break the build” guideline.
  • Premature optimization is the root of all evil. A quote from Don Knuth which rings true today.  Code should be written well to avoid needless waste at the micro level, but optimization beyond the individual method level should wait until testing within the entire program with a stress test bases on an actual end user use case.  Intuition of what is important for overall performance is almost always wrong when based only on a static understanding of the code.  Instead, measure the behavior of the complete system, to identify the 1% of the code that really makes a different in performance, and focus on that.
  • Minimize backlog of uncompleted coding tasks. When a developer starts to work on a use case, there is a cost associated with all the code that has been modified, but not completed and tested.  Holding uncompleted changes for days or weeks adds up to a significant risk of waste due to rework.  Consider three tasks estimated to take 1 day each.  Starting all three at one time, and working in parallel for three days involves an accumulation of 9 “units” of cost.  But doing each task sequentially, completing each task before starting the next, involves only 3 “units” of cost.  This is not intuitive.  Our intuition tells us that while we are in there, we might as well do three things at once, before buttoning the work up.  But software is not like physical construction.  Short, quick, and complete jobs not only cause less cognitive load, but also reduce the chance that uncompleted work will conflict with another person’s uncompleted work.
  • Never over generalize functionality. This is also known as “YAGNI – You Aren’t Going to Need It” .  While coding a particular class, programmers like to think with a small tweak this class might be used for several other purposes.  This is fine if those purposes are required by the current use case, but usually the programmer is thinking about uses which have not been invented yet, and which may in fact never be needed.  (This subject always reminds me of the classic Saturday Night Live skit about the product which was both a floor wax, and a dessert topping.)
  • Never use 3 lines when 2 lines would do. Succinctness in code pays every time someone else has to read it.  But don’t shrink the code to the point of being difficult to read.  Smaller, well written code can easier to maintain and easier to spot errors in, than verbose, ornately written code.  Always simplify as much as possible, but no more.
  • Never ever measure code by counting lines. The number of lines needed to do a particular task varies greatly from programmer to programmer, and from style to style.  The number of lines of code does not tell you much of anything about the completeness or the quality of the code.  Code quality can vary by a factor of 200, and this overwhelms any usefulness of the count of the lines.  Count instead functioning use cases.
  • Continually re-design and re-factor. Apply this cautiously because some code is brittle and difficult to change, but in general you should not be afraid to change the code to match the real use case.  A data member may have been an integer in the past, but when a use case requires it to be a floating point don’t be afraid to change it.
  • Delete dead code. There is a tendency to let “sleeping dogs lie” when it comes to large blocks of code that is not well understood.  One example is adding a new method to a class to replace another, quite often the developer will leave the old method there “just in case”.  Some effort should be expended to check to see if that method is needed, and delete it if there is no evidence that it is needed.  The worst offense is commenting out blocks of code, and leaving that commented code around.  Commented code should be deleted as soon as you know that the tests run, and certainly before checking it in.  It is easy to add code at any time, it is hard to delete code at any time.  Therefore, at a particular time that you have a good idea that something might not be needed, and small extra effort to verify this and eliminate the code will make the codebase more maintainable.
  • Don’t invent new languages. Programmers love to make text files that drive functionality in way configurable at run-time.  There are no end of configuration files to be able to change the behavior of the program without recompiling.  The advent of XML is driving an unending chain of specialized custom “scripting languages” that allow functionality to be “programmed” by the end user without having to compile.   The flaw in this reasoning is that the precise definition of the behavior of the operations almost never well defined outside of the context of a particular implementation, and these types of scripting languages are mainly useful only to people who have an intimate knowledge of the internal working of the code body in question.  Thus, real end users without detailed internal knowledge can never possibly know what is necessary to anticipate the effect of complex combinations of commands.   Scripting languages have a use, and cannot be eliminated, but the designer must take a very conservative approach and use existing languages as far as possible, and avoid inventing new ones.
  • Do not create a design until you are ready to implement and test the implementation. You should have some overall idea of where you are going, and a overview of the system architecture that will be aimed for, but no detailed design, no detailed description of functional implementation should be written down until the development iteration that will allow that design to be implemented and tests.  The detailed design should cover only as much as is needed to handle the current use case.  The biggest cause of waste in software development is time spend designing things that are not needed or need to be redesigned because of some mistaken assumptions that the design is based on.
  • Software is Plastic. Unlike physical manufacturing, software can be changed in significant ways very easily.   In fact there is plenty of evidence that software is easier to change than the design specifications that describe the software.  Furthermore, software communicates the design more effectively than the specification.  Therefore, you should spend the time to implement the design directly, so that customers can see the details of the design.  If you miss and have the change the design, it is easier to change the software than it would be to change the spec.   But most important, your information about what the customers wants is far better after they have seen the code running.
  • Take the time to code a complete description of the problem in the code that detects and reports exceptional situations. Programmers are often very lazy and throw exceptions with superficial descriptions of what is wrong.  Thinking that they are the only people who will ever see the problem, and they will remember the meaning of the problem from the vague description included.  But in fact more time is wasted in customer support situations because of inaccurate or incomplete error reports than any other cause.   Write every error message is if you are explaining the situation to someone who just walked into the room and has no experience with the code.  The customer, and the customer support team, after all, have no experience with the code.

Courtesy kswenson.

2009/9/7

Lessons Learned from the “Last Lecture”

I liked J. D. Meier's post about Randy Pausch's last lecture so much, I copied it verbatim.
 
 
 

In this video, the “Last Lecture,” Randy Pausch talks about his dreams, enabling the dreams of others, and what lets you get to achieve your dreams.  The idea of the last lecture is a hypothetical question, “if you knew were going to die, and you had one last lecture, what would you say to your students?”  For Randy, it wasn’t hypothetical.  He was fighting pancreatic cancer.  This talk is not about death, though.  It’s about life and how to live.  Specifically, it’s about achieving childhood dreams and about how you can try to achieve them.

Lessons Learned
Here are my lessons learned from the “Last Lecture”:

  • Have specific dreams.  Randy didn’t want to be an astronaut, he wanted the floating.  When he got older, he found a way to experience zero-gravity, without having to first become an astronaut.
  • Brick walls are there for a reason.  They let us prove how badly we want things.  Brick walls let us show our dedication.  “They are there to separate us from the people who don’t really want to achieve their childhood dreams.”
  • Be good at something.  It makes you valuable.  Have something to bring to the table, because that will make you more welcomed. 
  • When you don’t get what you want, you get experience.  Randy says it so well, "Experience is what you get when you didn’t get what you wanted."
  • Most of what we learn, we learn indirectly (or by "head fake")  Randy teaches us that we actually don’t want our kids to learn football … but we send our kids out to learn much more important things: teamwork, sportsmanship, perseverance.  “These kind of head fake learnings are absolutely important and you should keep your eye out for them because they are everywhere.”
  • It’s all about the fundamentals.  You’ve got to get the fundamentals down, because otherwise the fancy stuff isn’t going to work.
  • Have fun.  Never underestimate the importance of fun.  Choose to have fun.  Have fun while learning something hard.  Randy says, “I don’t know how to not have fun.  I’m dying and I’m having fun.  And, I’m going to keep having fun, everyday I have left, because there’s no other way to play it.”
  • It’s not what you say, but how you say it.  Randy shares an example, where two people say the same thing, but they say it in different ways: “I don’t know” is different than, “Well, I don’t have much information but one of my star faculty members is here and he’s all excited so I want to learn more.”
  • You can have your cake and eat it too.  Randy, wanted to be a Disney imagineer, but liked his life as a professor.  He struck a deal where he could consult one day a week with the imagineers.
  • Hand the torch to somebody who can carry it forward.  “When you’ve had something for 10 years that you hold so precious, it’s the toughest thing in the world to hand it over, and the only advice I can give you is find somebody better than you to hand it to.”
  • Get somebody to be reflective.  “The best gift an educator can give, to get somebody to become self-reflective.”
  • Never lose the child-like Wonder.  It’s just too important.  It’s what drives us.
  • There are moments that change your life.  10 years later if you know in retrospect, it was one of those moments, you’re blessed.  But to know it, *at* the moment …
  • Work and play well with others.   What goes around comes around.  You can’t get there alone.  Tell the truth, be earnest, apologize when you screw up, and focus on others, not yourself.
  • Apologize properly.  Apologize (properly).  A good apology has 3 parts: 1) I’m sorry.  2) It was my fault. 3) How do I make it right?
  • Never give up.  “Don’t bail; the best gold is at the bottom of the barrels of crap.”
  • Do the right thing.  When you do the right thing, good stuff has a way to happen.
  • Get a feedback loop and listen to it. When people give you feedback, cherish it and use it.  “It can be a spreadsheet of data or it can be one great person that tells you what you need to hear.  The hard part is listening to it.”
  • Show gratitude
  • Don’t complain.  Just work harder.   Jackie Robinson had it in his contract not to complain, even when the fans spit on him.  You can choose to take your finite time, and energy and effort and you can spend it complaining or you can spend it playing the game hard, which is probably going to be more helpful to you in the long run.
  • Find the best in everybody.  Find the best in everybody, no matter how you have to wait for them to show it. “You might have to wait a long time, sometimes years, but People will show you their good side.  Just keep waiting no matter how long it takes.  No one is all evil.  Everybody has a good side.  Just keep waiting, it will come out.”
  • Be prepared.  “Luck" is where preparation meets opportunity.
  • If you lead your life the right way, your dreams will come to you.  “It’s not about how to achieve your dreams, but how to lead your life.  If you lead your life the right way, the Karma will take care of itself.  The dreams will come to you.”

Decide If You’re Tigger or Eeyore
Decide if you’re Tigger or Eeyore.  You just have to decide if you’re Tigger or Eeyore.  Tigger finds the fun in every situation.  Eeyore wallows in self-misery.

Leadership Skills from Captain Kirk
Randy shares how he learned the value of leadership from Captain Kirk.  “What I learned that carried me forward in leadership later is that  he wasn’t the smartest guy on the ship.  I mean, Spock was pretty smart,and McCoy was the doctor, and Scotty was the engineer … and, you sort of go, and what skill set did he have to get on this damn thing and run it? … and clearly there is this skill set called leadership, and whether or not you liked the series, there’s no doubt that there was a lot to be learned about leading people by watching this kind of action.”

When Nobody’s Saying Anything to You Anymore, That Means They Gave Up
Your worst critics can be your best coaches.  It’s tough love.  Randy tells the story of one of his most grueling football practices.  When it was all over, one of the assistant coaches came over and said, “Coach Graham rode you pretty hard, didn’t he?”   Randy replied, “yeah.”  The assistant responded, “That’s a good thing … When you’re screwing up, and nobody’s saying anything to you anymore, that means they gave up.”

Randy’s take away was … when you see yourself doing something badly and nobody’s bothering to tell you anymore, that’s a very bad place to be.  Your critics are your ones telling you they still love you and care.

People vs. Things
Randy shares a lesson about the importance of people vs things.  His parents taught him early on the importance of people over things.  When he got his first convertible, he drove to his sister’s house to pickup his niece and nephew to watch them for the weekend.  While his sister explained to her kids how careful they needed to be in Randy’s new car, Randy slowly poured a can of soda on the back seat of his car, to make the point that it’s just a thing.  Randy says this was a good thing because his nephew got the flu and threw up on the backseat on the way back.

The point Randy makes is that he doesn’t care how much value you get by owning a shiny thing.  It doesn’t feel as good as he felt that his 8 year old nephew wasn’t embarrassed that he had the flu.

Additional Resources
Here are related resources:

2008/12/30

Random Tips

Best way to download mp3 from youtube

If you want to download music without getting into trouble I suggest you download the mp3 file from a youtube video, you can find most songs on youtube and you can download the mp3 at http://www.listentoyoutube.com/  I have tried several similar applications and this is the one that works better.

 

Health Tips

Combine cardio with weight training to lose weight.

Many people just focus on cardio exercise when trying to lose weight but it is way more effective to combine it with weight training, cardio will help you burn calories and increase your metabolic rate for a couple of hours but intensive weight training, on the other hand, has been reported to cause increases in metabolic rate that last for up to a couple of days.

Having a faster metabolic rate means that you can process calories easier and more efficiently than someone with a slower metabolism, that's why bodybuilders can eat more junk food without getting fat.

 

Never ever skip breakfast

My tip is NEVER EVER skip breakfast, no matter how guilty you feel because you have overeaten the previous night. Also, breakfast is the only meal when I will make myself eat even if I’m not that hungry. It really makes a difference because it is easier to lose wight and you have more energy throughout the day when you eat breakfast.

 

Let your muscles rest after a weight training session

You should let your muscles rest at least one day after your weight training session. You can workout daily (taking off 1 or 2 days a week) but don't exercise the same muscle two days in a row. Do this in order to avoid injuries and to let your muscles recover so they can grow.

 

Frequency is more important than duration when working out.

Frequency is almost always more beneficial than duration when working out. For instance, although theoretically you are burning the same amount of calories, five 30-minute workouts are going to be more beneficial to your health than two 75-minute sessions

 

Car Tips

Keep your car on good shape by changing the oils and fluids

If you want your car to last, you need to change the oils and fluids on a regular basis. It is recommended to make regular oil change services (not just an oil & filter change) at 3000 mile intervals, changing it at intervals greater than 3000 miles will harm your engine. When using synthetic oil it is recommended making oil changes at maximum 6000 miles intervals.

 

Finding a good mechanic you trust.

Finding a good mechanic can be difficult so when you find one you usually stay with that mechanic for years. A good way to start looking for a mechanic you can trust is using a local business review website like yelp.com, then after you find one near you with positive reviews you can still ask for references.

If you take your car to a mechanic that can't repair your car promptly or "repairs" your car but it keeps having the same problems or even new issues then you should cut your losses and immediately start looking for a better mechanic or else you may end up wasting a lot of time and money.

2007/9/18

Interview Puzzles

1. How many golf balls can fit in a school bus?

2. You are shrunk to the height of a nickel and your mass is proportionally reduced so as to maintain your original density. You are then thrown into an empty glass blender. The blades will start moving in 60 seconds. What do you do?

3. How much should you charge to wash all the windows in Seattle?

4. How would you find out if a machine’s stack grows up or down in memory?

5. Explain a database in three sentences to your eight-year-old nephew.

6. How many times a day does a clock’s hands overlap?

7. You have to get from point A to point B. You don’t know if you can get there. What would you do?

8. Imagine you have a closet full of shirts. It’s very hard to find a shirt. So what can you do to organize your shirts for easy retrieval?

9. Every man in a village of 100 married couples has cheated on his wife. Every wife in the village instantly knows when a man other than her husband has cheated, but does not know when her own husband has. The village has a law that does not allow for adultery. Any wife who can prove that her husband is unfaithful must kill him that very day. The women of the village would never disobey this law. One day, the queen of the village visits and announces that at least one husband has been unfaithful. What happens?

10. In a country in which people only want boys, every family continues to have children until they have a boy. if they have a girl, they have another child. if they have a boy, they stop. what is the proportion of boys to girls in the country?

11. If the probability of observing a car in 30 minutes on a highway is 0.95, what is the probability of observing a car in 10 minutes (assuming constant default probability)?

12. If you look at a clock and the time is 3:15, what is the angle between the hour and the minute hands? (The answer to this is not zero!)

13. Four people need to cross a rickety rope bridge to get back to their camp at night. Unfortunately, they only have one flashlight and it only has enough light left for seventeen minutes. The bridge is too dangerous to cross without a flashlight, and it’s only strong enough to support two people at any given time. Each of the campers walks at a different speed. One can cross the bridge in 1 minute, another in 2 minutes, the third in 5 minutes, and the slow poke takes 10 minutes to cross. How do the campers make it across in 17 minutes?

14. You are at a party with a friend and 10 people are present including you and the friend. your friend makes you a wager that for every person you find that has the same birthday as you, you get $1; for every person he finds that does not have the same birthday as you, he gets $2. would you accept the wager?

15. How many piano tuners are there in the entire world?

16. You have eight balls all of the same size. 7 of them weigh the same, and one of them weighs slightly more. How can you find the ball that is heavier by using a balance and only two weighings?

17. You have five pirates, ranked from 5 to 1 in descending order. The top pirate has the right to propose how 100 gold coins should be divided among them. But the others get to vote on his plan, and if fewer than half agree with him, he gets killed. How should he allocate the gold in order to maximize his share but live to enjoy it? (Hint: One pirate ends up with 98 percent of the gold.) 

(via Tihomir Nakov)

2007/4/28

कोशिश करने वालो की हार नही होती

An inspirational poem in Hindi written by Harivansh Ray Bachhan.
 
 
लहरो से डरकर नौका पार नही होती
कोशिश करने वालो की हार नही होती
 
नन्ही चीन्टी जब दाना लेकर चलती है
चढती दीवारो पर, सौ बार फिसलती है
मन का विशवास रगो मे साहस भरता है
चढकर गिरना, गिरकर चढना अखरता है
आखिर उसकी मेहनत बेकार नही होती
कोशिश करने वालो की हार नही होती
 
डुबकिया सिन्धु मे गोतखोर लगाता है
जा जा कर खाली हाथ लौटकर आता है
मिलते नही सहज ही मोती गहरे पानी मे
बढता दुगना उत्साह इसी हैरानी मे
मुठ्ठी उसकी खाली हर बार नही होती
कोशिश करने वालो की हार नही होती
 
असफलता एक चुनौती है, इसे स्वीकार करो
क्या कमी रह गयी, देखो और सुधार करो
जब तक ना सफल हो, नीन्द चैन को त्यागो तुम
सन्घर्ष का मैदान छोडकर मत भागो तुम
कुछ किये बिना ही जय जयकार नही होती
कोशिश करने वालो की हार नही होती
 
- हरिवन्श राय बच्चन
2005/11/10

Akshardham Complex, New Delhi

After 5 years of non-stop, round-the-clock construction, the massive and awesome Akshardham Temple Monument to World Peace was inaugurated yesterday. The Akshardham Temple in New Delhi, India, constructed by the BAPS foundation -- the builders of the various Swaminaryan Temples across the world, is truely a modern day Wonder of the World.
 
It is one of the biggest and most intricate religious places of worship ever constructed. Combining several completely different and contrasting architectural styles of Hindu temple architecture of northern India -- Rajasthani, Orrisan, Gujarati, Mughal and Jain -- the Akshardham Monument is entirely constructed of marble and the red-sandstone that Delhi is famous for, and that so many of her monuments are constructed of. It was completed in only 5 years a world record of sorts
 

So after years of waiting, the Temple was opened last week to the public -- and to photographers. Below is the New Delhi Akshardham Complex as seen through the eyes of a BAPS photographer. The pictures are a great many and will take a long time to load, but totally, totally worth the wait!
 
At its inaguration, it is widely being heralded as one of the greatest monuments India has ever produced. I hope you enjoy viewing this architectual marvel as much as I did.
 
Monument of Akshardham
 
The Akshardham monument, built without steel, is entirely composed of sandstone and marble. It consists of 234 ornately carved pillars, 9 ornate domes, 20 quadrangled shikhars, a spectacular Gajendra Pith (plinth of stone elephants) and 20,000 murtis and statues of India's great sadhus, devotees, acharyas and divine personalities.
 
The monument is a fusion of several architectural styles of pink stone and pure white marble. Pink stone symbolizes bhakti (devotion) in eternal bloom and white marble of absolute purity and eternal peace. The monument was built after over 300 million man hours of services rendered by 11,000 volunteers, sadhus and artisans.
 
It is the one of the wonders of the modern world, and the wonders of modern India.

2005/9/19

Seven Deadly Sins of Interviewing

The Ladders has posted the Seven Deadly Sins of Interviewing and a forum where you can share your own experiences.
 
You have years of experience, you've earned respect and accolades in your field, but any arrogrance will come back to bite you. Treat each person at the company with respect and kindness, or they might find a way to sabotage your interview.
 
Laziness, idleness and wastefulness
Don't wing it! Make sure to prepare informed questions. Be able to show knowledge of your potential employer, awareness of the industry, and the company's business strategy. The level of detail in your questions should match your experience.

An excessive quest for money and power
Remember, first you have to get the offer. Then, you can negotiate the terms. Never ask about salary and perks in the initial interview. Set aside those questions for later... much later.
 
The desire to consume more than you need
The interviewer is trying to learn about your skills, talents, experiences, and your ability to succeed in the job - not your whole life story. Taking 45 minutes to answer a single question will get you nowhere.

Feelings of hatred, revenge or denial
The person sitting across from you – who may be your next boss – identifies more with your past bosses than she does with you. Badmouthing old colleagues will leave a terrible taste in your potential employer's mouth.

The desire to do what you want, not do what you should
Don't dress for your comfort, dress for the situation. Always wear a suit to an interview, even if the dress code is business casual. You might stick out like a sore thumb while you're in the lobby, but you'll never lose points for being dressed professionally.
 
The desire for what you don't have now
Your "dream job" should the one you're interviewing for right now. If it's clear you really want to do something else, it's tough for an interviewer to believe that you'll bring all your capabilities and focus to the demands of this job.
2005/7/11

Have you got ICE in your mobile?

East Anglian Ambulance Service have launched a national "In case of Emergency ( ICE )" campaign with the support of Falklands war hero Simon Weston and in association with Vodafone's annual life savers award. The idea is that you store the word " I C E " in your mobile phone address book, and against it enter the number of the person you would want to be contacted "In Case of Emergency". In an emergency situation ambulance and hospital staff will then be able to quickly find out who your next of kin are and be able to contact them. It's so simple that everyone can do it. Please do. Please will you also forward this to everybody in your address book, it won't take too many 'forwards' before everybody will know about this. It really could save your life. For more than one contact name ICE1, ICE2, ICE3 etc
Some drawbacks to the proposed scheme come to mind:
  • The cell phone has to remain with the victim (or otherwise be indentifiable as his) in order to be of use. While most wallets and purses will contain some items bearing photographs that can be matched to their owners (such as driver's licenses), a cell phone doesn't necessarily provide any direct means of identifying its owner. And while any form of ID can become separated from the person bearing it, a cell phone is an object frequently carried in hand, greatly increasing the chances of its loss in an accident.

  • A cell phone can be damaged to the point that information stored in (or through) it is no longer retrievable. This is also true of other forms of identification (a piece of paper or a card can be rendered unreadable by fire or water damage), but non-electronic devices will generally survive falls or impacts that might otherwise render cell phones non-functional.

  • Cell phones come in many different brands and varieties, and how to retrieve stored information may not be immediately apparent to someone trying to work with an unfamiliar type of phone.
Still, whatever the drawbacks might be to any particular scheme, carrying some type of ICE information is better than none, so if this cell phone-based campaign prompts some people who aren't already doing so to start, it's a worthwhile effort.