DEV Community

Cover image for 3 Things You Can Do to Improve as a Developer
John Papa for Microsoft Azure

Posted on • Updated on

3 Things You Can Do to Improve as a Developer

cross posted to

We Solved It! But What did We Solve?

As developers, we are faced with complex problems daily. The good news is that we're problem solvers by nature. But what problem are we solving?

A solution to the wrong problem, however clever it may be, isn't solving the right problem.

It is our job as technologists to make sure we truly understand the problem so we can offer the appropriate help.

Not only is this a critical success factor for developers, but it is also a crucial part of being effective in Developer Relations.

So how do we identify and solve the problem? Here are three things you can do to target and answer the right problems.

Ask Questions

You have opinions. Sure, you know what you know. Your experience got you where you are, and that is incredibly valuable. Be proud!

Now, when someone asks you a question about technology, how do you answer? Does your opinion immediately come out? Are you sure you know what they are asking you? Is the question really what the person wants to know? Do you know why the person is asking this particular question?

OMG! That's a lot to think about! (yes, it is)

Imagine the following scenario playing out.

Them: What JavaScript framework should I use?

How would you answer? We could say React, Vue or Angular - but would we be helping that person? Maybe. Why are they asking this question? Let's imagine this is how the conversation goes if you ask "why."

You: Why do you ask that?

Them: After using gobbledeegook.js (yes, I made that up) before, my team members are torn on which newer framework one for our new project.

You: Why are you considering switching?

Them: We know gobbledeegook.js well, but we hear the others are all better.

You: How do you classify better? What's wrong with what you are using now?

Them: Our current solution doesn't solve our problem. We need that.

You: What is that problem and why is it essential to your project?

Them: Because our current app is slow loading, and we want it to be under 2 seconds to load.

You: Why is it taking so long today?

OK, this is a bit of a fabricated story, but you get the idea. The original question was the result of a set of experiences that the person asking has acquired over time. In other words, they have a context that you do not have!

An excellent resource for this exercise is learning more about The 5 Whys

The good news is that you can gain that context by asking "why." Once you learn that context, you are much closer to being able to help the person asking the question truly. And sometimes, they even solve the problem while talking it out to you.

Ultimately, asking "why" leads you in a different direction that the original question might have led you.

If you are working in Developer Relations, this type of deep insight can be invaluable in providing product feedback and helping the customer.

Listen and Observe

While listening sounds quite simple, in practice it can be difficult. OK, don't make that scrunched up face at me. Imagine you are helping someone write code. You're looking at their laptop as they type and you see them doing it a different way than you would. They didn't define that function before using it. Now they move on to another set of code that gathers user input. Why aren't they fixing that function? Now they are writing a Dockerfile and hard coding environment variables. This is bugging you. Do you stop them and jump in? What do you do?

Carefully observing how someone works and solves problems can be one of the most illuminating ways to learn. There are reasons why we all approach things the way we do. If our goal is to help people solve problems, we must first understand how they are thinking. Consider what is going through their minds.

We can watch, listen, and ask open questions such as

  • Where do you want your docker container to run?
  • How will you test your function?
  • How will the user know what to do when this event occurs in your app?

Notice these questions don't precipitate a yes or no answer. Instead, they are intended to provoke the other person to share their thoughts on why and how they are thinking. Armed with this knowledge, we can then learn common patterns in how they work and solve problems.

Maybe, just maybe, we can turn this learning into feedback for our software and make it easier for them to come to a solution.

If someone bangs their head against the wall, it's not the wall's fault. We don't move the wall. Instead, we solve the problem that caused them to bang their heads.

The best way to learn why and how people solve problems is to really listen.

Seek to Help Actively

We are in a fantastic career field. Technologists struggle and solve problems every day, and we share these struggles and solutions with our colleagues. That's a community. A helpful community.

You may have heard something similar to this next statement before, so forgive me.

Don't provide a solution to a problem they don't have, find the problem they do have and craft a solution for that.

Once we understand and connect with people, this becomes much easier to do. And this has a great side effect of making all of us feel good inside.

What Next?

When you solve a problem, share it. Figure out what your preferred way to communicate is and own it. You may prefer writing, recording a video, creating tooling such as VS Code extension, creating OSS, or talking about it on a podcast. The way you share it is up to you.

All of this applies whether you are on a team in developing software, developer relations, or solving any technical problems.

When we ask questions, we listen, and we observe - then we can take that feedback and genuinely start to offer helpful solutions.

  • How are you asking questions?
  • How are you listening and observing?
  • How are you seeking to help others?

Please share your thoughts.

Top comments (12)

walkingriver profile image
Michael D. Callaghan

Do you have any advice on how to ask "why" in a way that avoids the other person feeling as though you're challenging them in a negative way? Some people react negatively to a "why" question, especially when they may never have considered why they are doing something.

john_papa profile image
John Papa • Edited

This is a GREAT question, Michael!

You're right that the way we ask is just as important, if not more important, than what we ask. Nobody wants to feel threatened or having to defend a position on the spot.

Maybe I'll write a post on this, but here are some short techniques I use:

  1. ask "Yes and" instead of why. This affirms the point as being good instead of moving right to the question

    Yes, and I wonder how we can help the user know what to do next on that screen?

  2. ask "how" instead of why. We just did this above, too ... asking "how" offers a thought provoking way of thinking through the scenario.

  3. Thank the person for sharing their insight or solution to a problem before asking for more detail. This is just respectful and if you do it sincerely, it helps people open up and reduce the chance of making them feel defensive.

    Thank you for thinking this through so extensively and sharing it with us. I love the direction and I have a few questions.

  4. Take your time to appreciate the other person's point of view, listen, and be aware of body language.

  5. Most importantly - be sincere about wanting to know more and help.

jbristow profile image
Jon Bristow

I love the five whys, but once you get used to it, you tend to find that layer 2 or 3 is almost never a single thing, and it tends to spider out from there. Balancing the razor point of the 5 whys against stepping back and taking in the big picture is where I still have trouble.

If you’re trying to decide how to turn the titanic earlier, following that rabbit hole too closely will not solve the (arguably much more important) problems of “we want all the bulkhead seals to close properly” and “we need enough lifeboats” and “someone needs to invent radar” and “proper supply chain quality control for materials”. (Thanks to @swiftonsecurity for this example.)

Being able to know when you need to switch from your loupe to your panoramic mountaintop view is a skill that I am finding difficult to practice intentionally. It’s more of a “gut feeling” right now.

john_papa profile image
John Papa

Yes - absolutely! This can spider out in a few directions. I feel that this is OK, because as long as it is on topic, it helps really validate and reaffirm that the strategy is solid. Or it helps validate that we need a little more design to make it solid.

The key is to not let this stop you from iterating either. Create something, gather feedback, and adjust - quickly.

kovah profile image
Kevin Woblick

Speaking of my experiences, asking for help and providing help for others are the most important things one can do to improve yourself if you reached a certain level of knowledge. Discussing and trying to solve problems that you or somebody else has enlightens me every once in a while, maybe because these problems are mostly edge cases where very specific knowledge and "thinking outside the box" is necessary.

john_papa profile image
John Papa

great points!

marek profile image
Marek Zaluski

Hey John, great stuff about asking questions and the importance of "why".

Lots of deep insights come out if you pause before answering a technical question, and first try to figure out why the question was asked in the first place.

Then you can get closer to finding out what problem they're actually trying to solve.

iamsbharti profile image

The idea of helping others in accomplishing their goals is really satisfactory,you have very well captured that empathy in your writings.I often choose to help others(professionally),although sometimes the environment is not so friendly or doesn't believe in helping others in achieving their goals.
As a developer ,I am always in pursuit of solutions to some problems ,post reading your blog ,i am persuaded that often I am in search of solutions to unwanted problems that may be because I am addicted to my method and zest of solutions building.
However I have not yet achieved the idea of sharing my findings or way of problem solving that's not because I don't want to but may be still undermining my capabilities.
Hope similar findings and blogs from developer community will help me accomplish the leftovers.

john_papa profile image
John Papa

I'm glad this got you thinking :)

Believe in yourself - you have skills and experience unique to you. Share them when you are ready

netfirms profile image
Taweechai Maklay

Really inspire me, cool. thank you guy!

kalebhuddleston profile image
Kaleb Huddleston

Really awesome insight, John! Thanks for sharing!

jmscavaleiro profile image

You can always help as being a professor!