Showing posts with label problem solving. Show all posts
Showing posts with label problem solving. Show all posts
Sunday, July 29, 2018
What do you do when a kid beats your solution?
We were asked, "Has a software engineering interviewee ever come up with a better solution than the expected best answer?"
The question told me that the one who posed it hadn't done many interviews. As an interviewee, I did this often, though it was often met with defensiveness from the interviewer.
As an interviewer, it happens to me all the time, and I've tried awfully hard not to be defensive as I'd seen so many interviewers become.
Once on the job, too, software engineers frequently come up with better answers than their managers, teammates, or team leaders knew and expected. Or, I must admit, better than their consultants.
When this happens in any of these situations, it's important for the interviewer, manager, team leader, teammate, or consultant to accept the answer graciously, thanking the person for teaching them something new.
Even if the new idea isn't "better," if it's new, it's an opportunity to learn, so you don't want to spend your efforts trashing the idea. Just take in into your mind and offer thanks.
When I was a little boy, my father challenged me to learn something new every day before allowing myself to go to bed. Learning new things all the time is perhaps the most important behavior in my life. It's certainly the most important behavior in our profession
Generally, the most powerful learning occurs when someone produces a better solution than you had imagined. If your ego cannot deal with “better” or even “different” solutions to problems you pose, you have no business being in a leadership position in software engineering.
Or maybe anywhere.
Labels:
consulting,
feedback,
ideas,
interviewing,
leadership,
learning,
listening,
managing,
problem solving,
teams
Saturday, July 21, 2018
Some Advice on Advice
I was asked, "I'm very bad at taking my own advice but love helping people with their own personal issues. Does that make me a hypocrite?"
You seem to equate “advice” with helping people, but there are many other ways to help people without offering advice. And, of course quite frequently, even the best advice doesn't help at all.
(Note that I wrote “offering,” not “giving.” You offer, but they need not accept. Nor do you have to accept your own advice. You test it in your mind, or with small actions, and either follow or not, depending on the test’s outcome.)
If you like helping, try asking people what kind (if any) help they want from you. Perhaps they merely want a friendly listener. Or a pat on the back. Or a kick in the rear. Maybe they want you to clean their house. Or carry their heavy package. Maybe they just want a smile.
Stop worrying about labels like “hypocrite,” and start seeking ways to help people the way they want to be helped. Forget the advice business. As Ambrose Bierce says in The Devil’s Dictionary, “Advice is the smallest common coin.”
Labels:
advice,
consulting,
feedback,
helping,
leadership,
listening,
managing,
problem solving,
relationships,
teaching
Saturday, March 24, 2018
How do I fix a really difficult bug in programming?
Here was the question:
"How do I fix a really difficult bug in programming?"
Here was my first answer:
There is no such thing as a “difficult bug.”
I suspect my answer requires further explanation. First of all, I doubt that you have experienced actual bugs in your computer, the kind with 8 legs that bite and swarm. I have, a couple of times, but they are rare, and usually not difficult to eradicate.
Perhaps you are talking about errors, but using inaccurate language. In that case, I will assert “there is no such thing as a difficult error.” The same error might be handled easily by a different person. I have seen that circumstance often. For instance, I once spent a month trying to pinpoint a coding error. When I finally asked the help of a colleague, she found it in less than two minutes.
No, there are no difficult errors, but there are people who have difficulty with an error. We have all been there, and we tend to want to blame the error rather than ourselves.
So, the first thing you need to do to handle a “difficult bug” is to ask yourself,
“What is it about me that is making this error so difficult to handle?”
Perhaps you are having difficulty because you are impatient, or think failure to handle the error will make you look bad to your boss or colleagues.
Perhaps pressure to handle the error is throwing you off your center, distorting your thinking.
Perhaps you do not know enough about the system with the error, or the language in which the program is written.
Perhaps your mind is on other things in your life, things distracting you because they are more important to you than this darn “bug.”
Maybe you should discuss this error with a colleague or two, What is it about you that is keeping you from doing that?
Anyway, good luck in your quest for resolution.
Take a look at Errors: Bugs, Boo-Boos, and Blunders
Labels:
bugs,
coding,
debugging,
errors,
failure,
problem solving,
programming,
testing,
thinking
Sunday, December 10, 2017
Do programmers really know how to program?
I was asked, "Do programmers really know how to program?"
I believe this question is unproductive and vague. What does it mean by “program”?
The person who asked this question seemed to think programmers were not really programming when all they did was copy some existing program, using it whole or perhaps pasting it in as part of a shell.
To me, programming a computer means instructing it to do something you want done, and to continue doing it as desired.
If that’s what we’re asking about, then yes, of course, some of us out here know how to program. (Some do not, of course.)
It is irrelevant how we do that. Whether we use genetic algorithms, cut-and-paste, or divine inspiration? Do we use Scrum or Agile or Waterfall? How about the programming language? C++, or Java, or Lisp, or Python, or APL? Well, none of those choices matters.
Then what does matter? How about, "Can we satisfy someone’s desires?" In other words, can we provide something that someone wants enough to pay what it costs, in time or money? That’s what counts, and we certainly know how do that—sometimes.
Sure, we fail at times, and probably too often. But no profession succeeds in satisfying its customers all the time. Did your teachers always succeed in teaching you something you wanted to know? Do surgeons know how to do surgery?
So what about using existing programs? To my mind, the first and foremost job of a programmer is knowing when not to write a program at all—either because the needed program already exists or because no program was needed in the first place.
In other words, not writing a program when no program is needed is the highest form of programming, and one of the marks of a true expert.
or Kindle for the book in paper or ebook format
Sunday, November 26, 2017
How Do I Decide Between appX and appY?
Hardly a day goes by without some developer or tester asking me about some tools or applications. These could be any tools or apps, so let's call them X and Y.
Usually, the question is simple, but asked with heart-stopping urgency:
"Is X better than Y?"
Rather than provide an answer, I tell them they would be better off not asking such "better than?" questions.
Software apps and tools are complex systems. Consequently any X-Y pair will differ on a number of dimensions. X will be better on some; Y will be better on others. Or both will be useless or poor for your needs.
If you're choosing a tool or an app, start with assessing your needs. Then, instead of asking which is better, ask
"Which fits my needs better, X or Y?"
If neither one fits you needs, then look for a third alternative, or a fourth.
In the rare case when both X and Y fit your needs, you might meaningfully ask, "Which is better—for me, at this moment?"
If X and Y still seem equal, then flip a coin. Heads, take X. Tails, take Y.
Then, while the coin is in the air, your mind will usually make the decision, not willing to allow the coin drop to make the decision for you.
But, if your mind doesn't decide, then let the coin drop decide. At that point, it shouldn't matter.
But if you reach this point, wait a moment before you choose X or Y. During that moment, consider the following two questions:
Can I take both X and Y?
What about Z? Is there some third alternative I haven't considered?
Indeed, instead of asking "which is better" questions, ask, "What is the problem I'm trying to solve?"
Sunday, October 29, 2017
My most challenging experience as a software developer
Here is my detailed answer to the question, "What is the most challenging experience you encountered as a software developer?:
We were developing the tracking system for Project Mercury, to put a person in space and bring them back alive. The “back alive” was the challenging part, but not the only one. Some other challenges were as follows:
-The system was based on a world-wide network of fairly unreliable teletype connections.
-We had to determine the touchdown in the Pacific to within a small radius, which meant we needed accurate and perfectly synchronized clocks on the computer and space capsule.
-We also needed to knew exactly where our tracking stations were, but it turned out nobody knew where Australia's two stations were with sufficient precision. We had to create an entire sub-project to locate Australia.
-We needed information on the launch rocket, but because it was also a military rocket, that information was classified. We eventually found a way to work around that.
-Our computers were a pair of IBM 7090s, plus a 709 at a critical station in Bermuda. In those days, the computers were not built for on-line real-time work. For instance, there was no standard interrupt clock. We actually built our own for the Bermuda machine.
-Also, there were no disk drives yet, so everything had to be based on a tape drive system, but the tape drives were not sufficiently reliable for our specs. We beat this problem by building software error-correcting codes into the tape drive system.
We worked our way through all these problems and many more smaller ones, but the most challenging problem was the “back alive” requirement. Once we had the hardware and network reliability up to snuff, we still had the problem of software errors. To counter this problem, we created a special test group, something that had never been done before. Then we set a standard that any error detected by the test group and not explicitly corrected would stop any launch.
Our tests revealed that the system could crash for unknown reasons at random times, so it would be unable to bring down the astronaut safely at a known location. When the crash occurred in testing, the two on-line printers simultaneously printed a 120-character of random garbage. The line was identical on the two printers, indicating that this was not some kind of machine error on one of the 7090s. It could have been a hardware design error or a coding error. We had to investigate both possibilities, but the second possibility was far more likely.
We struggled to track down the source of the crash, but after a fruitless month, the project manager wanted to drop it as a “random event.” We all knew it wasn’t random, but he didn’t want to be accused of delaying the first launch.
To us, however, it was endangering the life of the astronaut, so we pleaded for time to continue trying to pinpoint the fault. “We should think more about this,” we said, to which he replied (standing under an IBM THINK sign), “Thinking is a luxury we can no longer afford.”
We believed (and still believe) that thinking is not a luxury for software developers, so we went underground. After much hard work, Marilyn pinpointed the fault and we corrected it just before the first launch. We may have saved an astronaut’s life, but we’ll never get any credit for it.
Moral: We may think that hardware and software errors are challenging, but nothing matches the difficulty of confronting human errors—especially when those humans are managers willing to hide errors in order to make schedules.
Labels:
challenges,
computers,
crisis,
debugging,
error,
failures,
faults,
managers,
problem solving,
programming,
project management,
risk,
software,
software development,
testing
Wednesday, August 02, 2017
Writing without the letter "A"
We were tested to see if we could write blog entries without the letter "A"
Of course we could write them. We could write lots of them. Indeed, I use this exercise in my writing courses, not just with the letter mentioned, but with every letter in English. Try it. Your writing will improve.
By the bye, some people wrote whole books without the letter E.
Try this test. Choose some letter, some difficult letter. Post some whole blog comment without using your letter.
If you would like to improve your writing, try
Oh, look. I unconsciously wrote the book title without the forbidden letter. It must be some terrific book. Multi-published reviewers think so:
"Don't write your book–build it with Weinberg's Fieldstone Method." - D. Poynter, writer of The Self-Publishing Manual
"It's changed how I intend to write my next book." - P. D., children's writer
"Buy this book. Work through the exercises…" J.R., techie writer
Labels:
challenges,
exercises,
problem solving,
writing
Sunday, July 23, 2017
Get the Better You Bundles for Good Now!
It’s here! The Better You Bundles for Good is on sale now for four days only. Get over 6000ドル worth of personal development courses and books for only 97ドル. There are over 140 products in this amazing bundle! If you are interested in improving your life, there has never been a better selection of resources at such an amazing price. Just a couple of the products will more than pay for the 97ドル price.
The best part is that 25% of the proceeds from the sale are going to support Courageous Kitchen , a charity helping refugees in Bangkok. Your purchase will not only make a difference in your life, it will also help some of the most vulnerable on the planet.
Take a look at the broad range of personal development resources included in the Better You Bundles for Good. There are books and courses on goal setting, motivation, health, meditation, stress, productivity, business systems, habits, procrastination, mindfulness and much, much more.
(Visit the website for the final list and more information.)
Courses and Resources
Courses and Resources
Effortless Manifestation Live Life by Design Not Default - Chris Spink - Value 1000ドル fulfillmentmastery.com
YOU 2.0: How To Instantly Upgrade Your Life - 10 Strategies That Work! - Derek Franklin - Value 95ドル derekfranklin.com
There Is More Inside Self-Image & Attitude Development Program - S.Renee Smith Value 197ドル srenee.com
How learning The 12 Universal Laws Will Change Your Life - Camillo Loken - Value 200ドル one-mind-one-energy.com
How I Earn 5000ドル+ a Month Passive Income Selling E-books and Video Courses - Rob Cubbon - Value 199ドル robcubbon.com
Mindfulness for Success in 6 weeks - Change Your Destiny - Megan Jackson - Value 175ドル sinceretarot.com
Public Speaking: You Can Be a Great Speaker Within 24 Hours - TJ Walker - Value 297ドル mediatrainingworldwide.com
Get Shit Done: A No-Excuses Guide To Productivity - Dan Johnston - Value 113ドル DreamsAroundTheWorld.com
Confidence Cure- The Key to Confidence No Matter Your Weight - Lauren Bromberg - Value 100ドル SunshineYOUniversity.com
Get Thi̶n̶g̶s LIFE Done: Introducing The Action Map System - Derek Franklin - Value 95ドル derekfranklin.com
How To Create An Awesome Morning Routine: 10 Ways To Start An Amazing Day - Derek Franklin - Value 95ドル Derekfranklin.com
The Success Code - A Blueprint for Reaching your Goals - Lisa Metzgar, PhD - Value 55ドル BioFunctionalHealth.com
How To Be More Confident - 13 Ideas For Becoming Unstoppable! - Derek Franklin - Value 95ドル derekfranklin.com
Confidence Cure- The Key to Confidence No Matter Your Weight - Lauren Bromberg - Value 95ドル SunshineYOUniversity.com
Conflict Management: Find Resolution, Balance & New Insight - Alina Margineau - Value 90ドル alinamargineanu.com
Management - Leadership, Negotiating, Assertiveness, Sales - Chris Croft - Value 85ドル chriscrofttraining.co.uk
65 LifeMaps (1-page tools for teaching powerful ideas related to success) - Derek Franklin - Value 65ドル derekfranklin.com
Slim, Sexy, and Smart - 28 Day Weight Loss and Fit Program - Lisa Metzgar, PhD - Value 55ドル BioFunctionalHealth.com
21 Days to Learn to Embrace Being a Highly Sensitive Person - Lauren Stewart - Value 55ドル findyourmagichsp.com
Starting, Managing, and Scaling a Successful Online Business - Rob Cubbon - Value 39ドル robcubbon.com
Morning Routine: My 5 Step System For Morning Ritual Mastery - Adrian Landsberg - Value 25ドル thelifestylecompound.com
Goal Setting: My Exact Goal Setting Blueprint For Success - Adrian Landsberg - Value 25ドル thelifestylecompound.com
Books
Personal Development Simplified- Break Negative Patterns and Take Control of Your Life. Guaranteed. - Kshitij Prasai alifewellcreated.com
Quit Your Job And Live - A Beginners Guide to Building a Location Free Income & Travel Hacking Your Way Around the World - Adrian Landsberg thelifestylecompound.com
Optimize for Victory - A Simple Approach to Overcome Challenges and Achieve Your Dreams - Lisa Kardos optimizebooks.com
The Mindful Walker - Rediscovering the Simple Path to a Healthier, Happier, More Peaceful Life - Alex Strauss themindfulwalker.com
Take Your Power Back - Healing Lessons, Tips, and Tools for Abuse Survivors - Evelyn M. Ryan yourlifelifter.com
At the Core of Every Heart: Reflections, Insights, and Practices for Waking Up and Living Free - Dr. Gail Brenner gailbrenner.com
I, Mammal: How to Make Peace With the Animal Urge for Social Power - Loretta G. Breuning, PhD innermammalinstitute.org
The Impact of the Human Stress Response - The Biologic Origins of Human Stress - Mary Wingo, Ph.D. marywingo.com
The Ten-Year Turnaround: Transform Your Personal Finances and Achieve Financial Freedom in The Next Ten Years - Matthew Paulson mattpaulson.com
Long Term Person, Short Term World: How to Manage Time, Tasks, and Texts: Methods for Living an Ambitious, Authentic, Unapologetic Life: Goal Management and Personal Productivity in the Modern World - Michael Motta mjmottajr.com
The Fountain of Youth is Just A Breath Away: Breathing Exercises For Relaxation, Health And Vitality - Molly Larkin mollylarkin.com
People Centricity: The Incredible Power of Putting Other People First - Stephen Hewett kallistipublishing.com
Love is the answer: A Guide to Awakening the Heart and Stepping into True Authenticity - Zoe Davenport zoedavenport.co.uk
Vision to Reality - How Short Term Massive Action Equals Maximum Results - Honoree Corder honoreecorder.com
Turning Imagination into Results - Strategies to Elevate Your LIfe and Career - James McCrae shityouregosays.com
Simplify - 7 Guiding Principles to Help Anyone Declutter Their Home and Life - Joshua Becker becomingminimalist.com
Shut Up and Write - The No-Nonsense, No B.S. Guide to Getting Words On the Page - Mridu Khullar Relph theinternationalfreelancer.com
Write Your Way Out Of Depression: Practical Self-Therapy For Creative Writers. - Rayne Hall raynehall.com
Tick-Tack - The Story of Your Time - How to Tame TIME and Make Him Your Ally! - Alina Margineanu alinamargineanu.com
Getting a Grip on Leadership - How to Learn Leadership Without Making All the Mistakes Yourself - Robyn Pearce gettingagrip.com
Getting a Grip on The Paper War - Managing Information in the Modern Office - Robyn Pearce gettingagrip.com
Working With Todoist - Get Started with Todoist so You Can Get Better Organized and Achieve Greater Productivity - Carl Pullein carlpullein.com
Your Digital Life - Everything You Need to Know to Get Your Life Organised and Put Technology to Work for You - Carl Pullein carlpullein.com
If you haven’t signed up for the FREE Change Your Life! ebook, I recommend getting it soon.
Click Here to Get the Ebook
Dozens of contributors to the bundle have shared their best personal development advice. You’ll get a lot of value from that book alone.
I'm giving you this free ebook as a sample of the authors you will find when you purchase the Better You Bundles for Good. But whether or not you purchase, the free ebook is yours to keep and enjoy.
Don’t miss out on the Better You Bundles for Good. You only have 4 days!
Labels:
affirmation,
Agile,
art of change,
books,
career,
change,
consulting,
learning,
motivation,
problem solving,
success,
training,
writing
Subscribe to:
Comments (Atom)