Tuesday, April 5, 2016

Ask that "Dumb" Question, and No You Aren't Dumb. Or maybe if you are, that's OK.

I found this blog post called "Being a 'Dumb' Girl in Computer Science" incredibly awesome, so I have to share it with everybody.  As someone who wants to see more women in STEM (Science, Tech, Engineering, Math) in school and in the workforce, I'm encouraged to see how brave and resourceful, and actually totally not dumb, some of the young women in university these days really are.

University was a long time ago for me, but there are some things that haven't changed whether it's school, or the workforce.  A really big problem I have seen in the workplace, is when people don't ask questions.  We leave people behind. We don't get buy-in, we don't have a shared understanding of the problem domain. We all lose. The company loses. The customer loses. The team is less effective. The software product quality suffers.

Ask the dumb questions. They are not dumb questions after all.  One of the comments on the issue puts it perfectly:

20-year veteran here, CTO of my company, yadda yadda yadda. It’s my publicly-proclaimed policy to ask the “dumb” questions. Get those answered and there seldom remain any “smart” questions to be asked. Skipping the “dumb” questions usually means asking irrelevant ones. Beware the “geniuses”—they write the worst code. At first you’ll feel dumb not understanding it, but you’re blaming the victim. Simple, easily-understood code is the product of hard work more than cleverness. Mysterious code is a menace. I hope you keep your beginner’s mindset. You’ll learn far more and be a better team player.
This fits perfectly with something that Confucius said a long time ago:

If I am walking with two other men, each of them will serve as my teacher. I will pick out the good points of the one and imitate them, and the bad points of the other and correct them in myself.

Don't be the person who thinks he's a "genius" and has nothing more to learn. Learn from Cat that you should ask the question.   Learn how not to be the people in her class that made her feel bad for asking the question.  Correct in yourself the pride and smugness you find. You are like a full cup, and you can receive nothing more.  Begin with the knowledge that you know nothing, feel free to call yourself "dumb", just don't call other people dumb.  And know that if you learned something, it wasn't a dumb question at all.   Maybe someone else at your workplace or your school wanted to ask that question and didn't understand at all either, and needed you to step forward.

I went through a phase where I preferred to write the most inscrutable code, and considered that great.  If people can't make powerful concepts simple, and build useful systems out of understandable parts, and share knowledge, then our schools are failing, and our companies will fail soon after.  Ask the question if you have it. Give the answer if you have it.  The knowledge economy is a gift economy.


  1. I've expressed disappointment in the past that no owner of Delphi, David Intersimone VP of Developer Relations, etc. have ever done anything to bring more female developers into our community. Do you have any thoughts on how we might do that?

    1. David has been passionate about encouraging women to work in tech and software development longer than I have and has in fact a good record on that. I would suggest you send any ideas on what can be further done. Perhaps Embarcadero as a business unit of Idera could sponsor Girls Who Code chapters in the USA. Personally my philosophy and I believe Davids also is to think globally and act locally. If he mentions stuff he does I am sure he risks accusations that he is tooting his own horn and if he doesn't he will get flack for not doing enough. Instead of critiquing others lets all just do what we can. David is good people. Give him a break k?

  2. You guys want to bring more women into community? First thing you should do is stop writing articles like this one here. What is wrong with this article?
    The way it is written it is giving impression as if only women can ask these "dumb" questions which is not true.
    Every beginner and every newcomer WILL BE asking these "dumb" questions regardless of their sex.

    The real problem is that most experienced and seasoned programmers won't bother answering these "dumb" questions or would answer them with useless answers like:
    - "go read some beginners book to learn basics" Again it would be nice if you could at least provide info on where people can find these. But again very few people do this.
    - "learn debugging to find your problem" If you would at least provide some reference to locations where people can learn about debugging this answer might be acceptable. But nobody does.
    - "make an MCVE" This is the answer that I hate the most. Granted in many situation having an MCVE is necessary. But while creating an MCVE for seasoned and experienced programmers is no big deal creating an MCVE for a beginner can be a nightmare. Therefore such answer would only serve as motivational killer.

    And now if we go back to women. Why aren't there so many of them present in Delphi community or even in other programming communities?
    That is because women have generally lesser tolerance for bad attitude. So when you refuse to answer to one of these "dumb" questions or give one of those useless answers it will kill their motivation much quicker than you would kill men's motivation.

    BTW since I mentioned beginners books before.
    Why isn't Marco Cantu's eBook "New Object Pascal Handbook by Marco Cantu" available for "academic licenses"?
    They are the ones that would benefit the most of it. And with them our whole community as well.
    Because if we don't manage to bring enough big influx of new people sooner or later the whole Delphi community will die either of becoming to old or because of becoming even less attractive to newcomers.

    And only with new blood can we expect for some new and unique approaches to be developed with Delphi rather than Delphi to always limber behind other languages by always implementing new features that were invented in them.

    You see those people who haven't fully adopted existing programming approaches have a much bigger chance for finding new and perhaps even better programming approaches.

  3. Why do they have bigger chance of finding new approaches?
    This is like with a three path choice problem.
    Let's say there is a crossroad with three possible paths
    Path A is a dead end
    Path B reaches the destination but is not most effective
    Path C reaches the destination in most effective way
    So the first time you reach this crossroad you are choosing between all three paths so you have 33 percent chance to take the most efficient one.
    Now let's say you chose the path A. Because it is a dead end you will have to backtrack it to get back to that crossroad.
    Once you reach the crossroad you will now be choosing only between path B and path C since you now that path A is a dead end. So your chances to chose the most efficient path are not 50 percent.
    So now let's say you now chose path B. It will bring you to your destination but you don't know whether it is the most efficient way or not.
    Now when you will come to that crossroad again you will most likely to chose the path B again. There is probably about 90 percent chance that you will chose path B because you know it leads to your destination.
    But if you send a new guy on that journey without any information about existing paths once reaching the mentioned crossroad he has 33 percent chance of choosing the most efficient path.
    And if you provide him just with the information about the fact that path A is a dead end he now has 50 percent chance to chose the most efficient path.
    In any way his chances to chose the most efficient path are in most cases better than yours.

    And that is why bringing new blood into any community is necessary as they are still searching and choosing between all possible paths and not only those that they now to already lead to their destination.

    1. That makes no sense. In each case, both people have the same chances. You said it yourself. First time: 33% Second time: 50%. That's simple math. For the sake of these percentages, how they got there doesn't matter.

      Now, if they had more information on the issue before they started, then that improves their chances. Again, regardless of who that individual is. Someone may try to be helpful and tell you not to even try the first solution. But was he really helpful? Why not try the A solution? What would be the consequences? Or what design flaw prevents it? Or how would that break other affected behavior?

      If you didn't know that A was a bad solution before you started, it would be a good learning experience for you to figure that out this time around. It'll save you a lot of time next time an issue is found in related code.

      There is a _HUGE_ learning curve from making the mistake of choosing the wrong solution. A developer that doesn't learn from their mistakes, often better than any other teaching resource, probably isn't a decent developer. (I've worked with those that don't learn from their mistakes. I suspect most experienced developers have.)

      So yes, the first question I ask a newbie is to ask what they have tried already, rather than simply giving an answer. Based on what they have already tried, I'll give additional suggestions. I know a lot of seasoned developers, and I've seen them do the same.

      Unfortunately, the answer is often easily obtainable by searching the source code or other maintained documentation, or even a Google search. But the newbie hasn't even tried. :(

      Sorry, but I see this more often than a newbie that is eager to jump in and figure out everything they can and then ask questions to help them pursue that goal. I've seen those too, and I love seeing it.

      I still don't understand where the gender issue came from. I've thought about holding back a question because I thought it was a dumb question. I'm also a 25 year veteran developer who recently left a job of 15 years and threw myself into a completely new environment. So there is a lot that I don't know. And some of it that I feel like I should, so I feel dumb. But I do ask.

      So you're saying that a woman in a similar situation would not ask due to the anticipated answer? In that case, I wouldn't expect her to do a very good job.

      After proofreading, much of my post sounds egotistical, which was not my intention. I truly enjoy teaching, mentoring, and leading new developers. But only if the new developer has a passion for computers and software development. I've tried helping those without that passion and it is just a waste of time. One particular scenario may have led to your distorted opinions about the software development workforce.

    2. This comment has been removed by the author.

  4. Thanks for Sharing, Silvo. Your approach sounds rather fractious and specious. "Hey guys listen to me, I know best, and everything you guys say is stupid, just stop it!". You sound like the problem, not the solution.