EppsNet Archive: Problem Solving

What Does a Programmer Do?

8 Oct 2017 /

I was asked to give a talk last week to a high school computer science class on “What Does a Programmer Do?” (I’m indebted to Jim McCarthy for the “lords and ladies of logic” section.)

 

Programming is problem solving.

Programmer

At the highest level, the problem that programmers solve is that people want to be able to do things with computers that they can’t do. And by computers, I don’t mean just the kind of computers you have on the desks here, I mean phones, watches, cars . . . more and more different kinds of devices are running software.

So one good thing about being a programmer is that pretty much every field of endeavor now uses software and data.

You can work at a tech company like Microsoft or Google or Twitter or Facebook, but you can also work in healthcare, finance, education, sports . . . you can work on cancer research, you can write video games . . . everybody uses software and everybody hires programmers.

Programming is a good job if you want to be learning new things all the time, if you don’t want to do the same things over and over.

The dark side of this is that it can be daunting trying to keep up with the pace of technological change. It can be overwhelming.

I was asked once in an interview, “What’s the coolest thing you’ve learned in the last week?” If you haven’t learned anything in the last week, it’s hard to answer that question, let alone if you haven’t learned anything in a month or a year. It’s easy to let your career slip away from you.

Programming has been a good job for me because I’ve been able to make a living doing things I like and things that I’m good at. I’ve always liked solving problems and building things.

To me that’s a good job: you do things you like and things that you’re good at. I don’t think most people can say that. Most people seem to be like “I hate Mondays,” “Thank god it’s Friday,” “Thank god it’s Thursday because it’s almost Friday.” If you spend a lot of time doing things you don’t like and you’re not good at, that’s a bad job.

As a programmer, you’re given problems to solve and a set of tools with which to solve them. You need to be able to figure out “what do i need to do, what do I need to learn, to be able to solve these problems with these tools?”

Self-reliance is good. Persistence is good. Floundering is bad. Know when to ask for help.

Asking for help is a no-lose strategy. Worst case, you ask for help and someone can’t help you or won’t help you, but you’re not any worse off than you were in the first place.

The demand for programmers exceeds the supply and it doesn’t look like that’s going to change anytime soon.

Nearly 30 percent of Americans ages 18 to 24 cannot locate the Pacific Ocean on a map, and 25 percent of Americans think the sun goes around the earth. Those people are not going to be programmers.

In a time of ubiquitous software and intellectual lethargy, programmers are like the priests in the Middle Ages. We are the lords and ladies of logic. We’re in charge of rationality for our era. We’re bringing common sense and sound judgment and aggregated wisdom and glory to everyone.

That’s our job.


The ‘Why’ Technique

16 Feb 2014 /

The usual purpose of ‘why’ is to elicit information. One wants to be comforted with some explanation which one can accept and be satisfied with. The lateral use of why is quite opposite. The intention is to create discomfort with any explanation. By refusing to be comforted with an explanation one tries to look at things in a different way and so increases the possibility of restructuring a pattern.

— Edward de Bono, Lateral Thinking

Challenge Assumptions

15 Feb 2014 /

General agreement about an assumption is no guarantee that it is correct. It is historical continuity that maintains most assumptions – not a repeated assessment of their validity.

— Edward de Bono, Lateral Thinking

How to Be a Genius

11 Mar 2011 /

You have to keep a dozen of your favorite problems constantly present in your mind, although by and large they will lay in a dormant state. Every time you hear or read a new trick or a new result, test it against each of your twelve problems to see whether it helps. Every once in a while there will be a hit, and people will say, “How did he do it? He must be a genius!”


One Problem After Another After Another

29 Aug 2010 /

I could see life being a long sequence of one problem after another after another. After quite a while of thinking I decided, “No, I should be in the mass production of a variable product. I should be concerned with all of next year’s problems, not just the one in front of my face.” By changing the question I still got the same kind of results or better, but I changed things and did important work. I attacked the major problem — How do I conquer machines and do all of next year’s problems when I don’t know what they are going to be? How do I prepare for it? How do I do this one so I’ll be on top of it?

By changing a problem slightly you can often do great work rather than merely good work. Instead of attacking isolated problems, I made the resolution that I would never again solve an isolated problem except as characteristic of a class.


Why People Don’t Succeed

12 Aug 2010 /

In summary, I claim that some of the reasons why so many people who have greatness within their grasp don’t succeed are: they don’t work on important problems, they don’t become emotionally involved, they don’t try and change what is difficult to some other situation which is easily done but is still important, and they keep giving themselves alibis why they don’t. They keep saying that it is a matter of luck.


Thought for the Day

13 Apr 2010 /
Thought

Sometimes it is worth trying to find a way to solve problems that doesn’t involve more structure, more meetings, more roles, more documents, more setup.


Drop an Assumption

19 Dec 2009 /

Link: http://creativethink.com/8dv


Twitter: 2009-12-18

18 Dec 2009 /
  • RT @capricecrane: "Twitter" was the most used word of 2009. Numbers two and three were "I'm" and "broke." #
  • RT @Aimee_B_Loved: Sometimes I drive between lanes and pretend my car is Pacman gobbling up the dashed lines. #
  • RT @FakeAPStylebook: Use "can of whup-ass" only, as whup-ass is not sold in jars, squeeze tubes or resealable bags. #
  • RT @RogervonOech: Never state a problem to yourself in the same terms as it was brought to you. [More at:]
    http://j.mp/cthirsh #
  • RT @HarvardBiz: Government Health Care: Like the Postal Service? http://bit.ly/4IzozI #
  • RT @capricecrane: I don't know how your car got dented. Maybe it's God saying you shouldn't have cut me off for that parking space. Or me. #
  • RT @diablocody: Eating a gingerbread house for breakfast. A new low. #
  • RT @capricecrane: According to Billboard: "Nickelback: 'Band of the decade.'" That's all. Enjoy the apocalypse. #
  • RT @TheOnion: "Why do all the girls I like think of me as just a friend? And why isn't there a term to describe that relationship?" -Plato #

Urgent vs. Important

20 Jul 2009 /

From the Lean Enterprise Institute:

  • Are we all clear on what is really important for our organization in order to solve customer problems and succeed in the long term? (Or, stated another way, can we get past the merely urgent?)
  • Are we agreed on what big problems we need to solve as a team?
  • Are we sure what obstacles are in our way and their root causes?
  • Have we — or will we now — assign responsibility for determining the best countermeasures and removing the obstacles?
  • Critically important, do we have a way of surfacing and resolving all of the cross-function, cross-department conflicts that stand in the way of resolving all major problems in any multi-functional organization including ours?