6

Background

I've been working as a Software Developer for about 4 years now, 3 of those being in an apprenticeship (Germany). Things are going very well for me. My direct supervisor is very happy with my performance, and I've managed to build a good relationship with my colleagues.

Work-wise I'm mainly responsible for a product that's being sold to some of our customers. That means I have to take care of

  • actually writing the code
  • designing new features
  • discuss with colleagues if changes have to be made in another module (e.g. frontend)
  • analyze feedback
  • support
  • creating presentations
  • presenting them to customers

I love it, and it's really going into the right direction where I want to be at some point.

Current Situation

All the things above come with the fact that I discuss almost everything with my supervisor. He's the person who gives the final 'okay', e.g. when I've finished a presentation, when I've created the concept of a new feature and so on.

Problem

During those discussions I've noticed that most times my ideas go into the right direction, but there are always some things I didn't think of and that's why that idea won't work.

As an example

Me: 'To fix the bug A I thought about doing B, because C'

Supervisor: 'Hm, A is not a good idea because in some situations it caused trouble and doesn't work, you should rather use D'.

And, to go on, because we're in the same 2-man office, I usually notice when he's discussing with other colleagues.

Now, if someone shows him a concept or an idea, in my mind I try to find reasons why it's a good idea or why it will/won't work, or questions I would ask, simply to see if I was correct. Until now, my supervisor always has had some questions I didn't even remotely think of or had some objections I didn't even consider.

I assume that's all because of the experience he has, especially when it comes to asking intelligent questions or considering things, basically seeing the whole thing from a totally different (more open) view.

Questions

How can I improve

  • my ability to view things from a different perspective and therefore considering things I initially didn't think of?
  • asking (intelligent) questions when it comes to discussing topics and therefore contributing something useful?
5
  • ...I didn't even remotely think of or had some objections I didn't even consider. Are we talking about things based on information you knew or things you were unaware of? Like, if he said, "That's not compliant with regulation 123", would it be that you forgot to consider whether your idea would be compliant or would it be more like you unaware of the regulation altogether?
    – BSMP
    Sep 10, 2020 at 9:10
  • 1
    A mix of both. Those are mostly things I somehow have already heard of but I didn't know that topic A is related to topic B in that specific way.
    – devsmn
    Sep 10, 2020 at 9:22
  • Not the answer you're looking for, but only experience will fix this. You seem to be very diligent and inquisitive - so you're pretty much doing all you can.
    – morsor
    Sep 10, 2020 at 9:47
  • 1
    @morsor: experience is not at all enough. Understanding the experience and extracting lessons is even more important. And that is what OP needs to understand and learn how to do. Actually, experience = things happening.
    – virolino
    Sep 10, 2020 at 13:18
  • This question basically boils down to "how can I become more experienced at my job". And that's a question which is far too broad and open-ended for this website.
    – Philipp
    Sep 11, 2020 at 10:58

6 Answers 6

4

You are asking in regards to software-industry, so i am going to answer in that context.

"How can I improve my ability to view things from a different perspective and therefore considering things I initially didn't think of?"

A few viewpoints you can "check" for most problems:

  • Is this urgent, important or both? (Compare to other items, and do not trust what you have been told by the affected party.)
  • How much (work-time) will this cost the company? (And how much money is that?)
  • Are there hidden and/or follow-up costs?
  • What differing views will the boss/customer have on problem/solution? Is it worth challenging those views?
  • Will anything about the problem/solution affect your standing/career in the company?
  • Can you learn something from a particular approach, even if it takes longer?
  • What solution will be easy to understand by (less experienced) colleges in the future?
  • What is most elegant/performant/fancy solution?
  • What is most fail-safe security-wise?
  • What kind of quality-standard is not as necessary as usual?
  • What cost/benefit ratio does boss/customer like?

This list is incomplete, of course. You might add additional points over time :-)

"How can I asking (intelligent) questions when it comes to discussing topics and therefore contributing something useful?"

Simple: When you have used above checklist for a while, you might notice when some important point is missing in a discussion.

4

Recently I've been in a similar situation, except that I'm the "manager" (senior dev, in reality) working with a junior coworker who fails to ask the right questions. Although it sounds like you're in better shape than my coworker, it's clear that the underlying challenge still applies, based on your comment that:

I've noticed that most times my ideas go into the right direction, but there are always some things I didn't think of and that's why that idea won't work.

The underlying challenge is how to have foresight into technical tasks/ideas. It's something that many developers struggle with early in their career. It's true that experience will help, but you don't need to wait for that to happen.

Whenever you get a task or are evaluating an idea, there are some main categories which you should think about. Purely considering if the idea "will / won't work" isn't enough. You might not have the answer for every category, and not every category will always be relevant. But if you start thinking in these terms, it'll become a lot easier to identify potential issues, add insight into discussions, or at least demonstrate that you've considered multiple angles with your proposed solution.

Here are the categories (some are more applicable for products, some for presentations, etc):

  • Scalability - what happens if this product is suddenly used by 400 million ppl? Can the product handle that? Can this product/idea scale smoothly with the business as it grows?
  • Flexibility - If the business requirements change, how hard would it be to change the software/product/solution to reflect those new needs?
  • Long-Term Maintenance - Who will be maintaining this solution in the long-term, and what resources would those people need in order to maintain it?
  • Performance Efficiency - Does this app/product load fast enough & perform well?
  • Delivery Efficiency - What type of developer effort will be necessary to deliver this product/solution? Are there ways to help the developers be more efficient (ie. tools,etc)?
  • Costs - Are there any costs associated with creating or owning this product/idea?
  • Reliability - What types of backup servers or redudancy can we provide to prevent the software from "going down" for more than a minute or two?
  • Security / Privacy - Does this include PII data? Is GDPR relevant? Is the product secure, or how can we prove that it's secure?
  • End Users - Who will be using this product/idea? Are we meeting their needs and anticipating how they would typically interact with the software?
  • Business Worth - What's the value in having this product/idea? WHY should we move forward with it?
  • Your Audience - For presentations: What does my audience care about? How can I help them see that they shouldn't have concerns? (Note that this applies for ALL types of presentations: public ones, but also the super informal discussions with you manager. Think about it from his perspective & you're likely to come up with a new angle to the problem.)

I'd suggest taking this list of categories and hanging it up near your desk. Whenever you're about to discuss something, glance thru it. Eventually you won't need the list at all - it'll become second nature to you.

Note that the "Business Worth" category is extra extra important when you're talking with anyone who's in a senior-level position (C-suite, upper management, etc).

And if you've thought about these categories, and your manager still has a new angle that you didn't think about, don't feel frustrated - There's tremendous value in discussing ideas with a more experienced person and new angles/suggestions means that you have a great manager with a lot of foresight! It's great for your products/ideas and it's even better for your learning growth. You can categorize his/her comments and add them to the list for future reference :)

2

You said that your direct supervisor is happy with your performance.

You've demonstrated that you're using your own experience in the business and of software development by spotting advantages and disadvantages of certain approaches to problems.

You've demonstrated that you're capable of learning from the wisdom of your peers when they point out that a different approach would be needed because of some factor you did not know about.

This is why being part of a team where ideas can be discussed and challenged is healthy so just carry on enjoying your job and keep on doing what you were already doing!

It's good to reflect on this stuff and review our past performances but don't do it to the point where it destroys your confidence as it sounds like you're doing a great job.

1

There's no easy answer to this other than experience, but it's worth keeping a list of things that caught you out in the past because it's likely to be longer than you can easily keep in your head.

With experience, as soon as you start thinking about A, a mental bell goes off to tell you to check B. When you don't have that experience, you can't rely on intuition but a quick key-word search can often find an area that needs investigation.

1

Learn detachment. That's a hard one. Whenever people ask something, I can have this "genius" level of insight. This is easy: I get presented with a lot of work already done, with a lot of facts already garthered. Because I am not the one doing the problem, I can easily have a high level view and spot whatever is missing.

When I myself solve problems and am right in the middle of it, I know all the right questions, right? But still, because I am so focused on details, I often enough forget them, or only remember later. It's easy to get shortsighted when everybody wants things from you tomorrow. To balance the need of right now with the need of the future is a very hard one, and I still catch myself getting into a mess. Then thinking this is not right, how should I solve this. Then realizing I just should have done X, but I didnt see it earlier.

This is why having a good team is so great: More people to bounce ideas around, and usually there is someone who is familiar enough with your work but detached enough from your urgent task to help you.

How do you learn? The fastest way is to become a person others seek for advice on their work. When they tell you their problem, you are detached. A nice way to try this is to go to lunch with people from other teams, and when they tell about their problems, ask questions. Your first goal is to understand their problem completely. Also ask: What have you tried or thought of already? This is important for context. Then you can start asking questions ala: Have you thought of X, have you tried Y? Important: Make sure the other person is in the mood to do this, otherwise you might come off as condescending!

Also, speak to coworkers outside of your own team. The better you understand where all those sales/marketing/other non technical people come from allows you to better understand their needs and wants, and improves your ability to balance technical with non technical requirements.

0

How to improve ability to ask intelligent questions

Actually, you need to learn how to intelligently ask questions. And this is actually the first lesson: always pay attention to all the details. Carefully choose your words, and their order in the sentence.


As a strategy, you need to learn a few basic but essential skills.

  • do a breakdown structure of the problem. A big problem is composed of smaller problems, which are composed of smaller problems... (You might want to read actually all the links from the disambiguation page.)
  • find the root-cause(s) of the problem. One of the possible tools to use: 5-Why;
  • prioritize: of all the details, try to understand which have to be dealt with first, and which can be delayed;
  • do a fault-tree analysis;
  • foresee the consequences of every action as far ahead as possible (the reverse of 5-Why above);
  • remember that most problems are complex, even if they seem simple. An apparently simple software problem can actually be tightly linked to hardware, networking, databases and data structures, marketing, budgeting, updating user manuals, agreements from high management and / or customers...
  • always find all possible details and ramifications. Do not stop just because you found the first one - first problem, first solution... Always make an effort to find all of them.

Some of the above can be done mentally; others might require writing down (on paper or computer) some of the information. In complicated cases, the proper analysis can be done only by a team of people - especially if different skills are needed and different knowledge areas have to be covered.

Before asking anyone for any help, do all of the above yourself. In some cases, you will find the answer by yourself, even before asking. And if you still need to ask, you can easily show that you did your homework, that you understood things up to a level, and you just need another "pair of eyes".

Of course, you will not be able to learn and do all of these in 1 day. Or even in one week. But gradually, you can improve to reach the level that you desire.


Until now, my supervisor always has had some questions I didn't even remotely think of or had some objections I didn't even consider.

These are examples showing that you did not follow the plan I suggested above. The plan to think yourself about everything, before asking someone else.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .