In a company, there are a lot of really cool software projects. The ones that’ll give you a lot of knowledge (and experience) but unfortunately you’re working on some other project and you can’t just switch, at least not until the current one is done. But what if I told you there is a way you can contribute to these projects and learn from the complexities without actually writing a single line of code? Let’s get on with it then.
Step 1: Find someone in need and reach out
In software it’s not uncommon to find a co-worker working late nights or is under stress. The above picture is such a great example. We (developers) are so transparent about our mental state when we’re working on their code that just won’t work.
A huge problem with us is that we don’t ask for help as often we should. It leads to cascading effects, maybe a bad implementation or an over-engineered solution which might be prone to bugs.
So when you do see someone in that state just reach out. Let’s take Rob as an example
You: Hey bud! All good?
Rob: Oh yeah, why’d you ask?
You: Nothing was just about to head out and I noticed you sitting and working. I was wondering if something’s stuck since it’s quite late.
Rob: Yeah, this thing I am working on, the database query is turning out to be a bit of a mess and I can’t seem to figure out a way around this.
You: Can I take a look?
Rob: Yeah sure, why not!
Step 2: Listen to what they are saying
When they do share their problem and walk you through their code, understand their problem, their domain, go through the workflow, don’t jump to conclusions, and don’t break their flow. You can bounce off some questions that’ll better help you understand where they’re coming from.
Listening is often the only thing needed to help someone
Think about it, if you don’t really understand their problem, the solution you provide would be half cooked. It wouldn’t fit right into their issue, and there can be something that they haven’t shared that could change your entire solution. Also constant interruptions while speaking can lead to frustrations and all of this will lead to a lot of time wasted. They might just end up saying “Let it go, I’ll take care of it”.
Step 3: Propose your solutions and discuss the thought process
Now that you’ve understood their problem, suggest a solution. It can be as simple as breaking down a single complex database query into two smaller queries, which would significantly reduce the complexity of the problem and might just be faster too.
Share how you arrived at the solution, maybe it’ll help them come up with an approach that’ll be much more simpler and easier to maintain. If they do come up with another idea, don’t fight it but rather discuss that too because that’s where you’ll be learning.
If you present a solution and they say they’ve tried it, ask them what the outcome was, why it didn’t work. This is what I am talking about, instant feedback. You had a problem, you worked up a solution, and now you know the outcome of the solution and why it wouldn’t work.
If you weren’t able to find a solution just be honest and tell them. It’s important not to waste their time. Remember the problem and work on it in your own time, try to figure it out, maybe search it on the internet.
Step 4: Follow-up with them and collect feedback
So now that you’ve shared a solution and you’re not the executor, you need to know did your solution actually help? Reach out to them the next day or after a few days while getting coffee and ask them if they able to solve the problem?
Ask about the solution they went forward with. If the approach was different from what you had presented. Enquire about where did your approach fell short, don’t fight it but embrace it. This is the feedback phase where you gather insights on your solution, it’s shortcomings. Its the learning from their experience which matters the most here.
Step 5: Thank them and repeat the process
Be grateful to them for taking the time to test out your approach and share the results after all you have learnt something new from their experience.
Try to extract the essential meaning or most important aspects of the problem and the solution (distil it). So that the concepts you learnt can be applied to other problems
I’ll give you a spoiler, a lot of developers face the same type of problems just in different situations and domains so practically it’s pointless to wasting time trying to solve the problem that’s already has been solved by another developer, especially in the same company. What’s missing is a broker because they don’t know that someone else has already solved the problem.
So repeat the process, collaborate on problems and present solutions, and learn from your and other’s solutions. You can suggest your own solutions or even share a solution picked by someone else by saying
You know Bob was facing the same issue, so he tried this approach and it worked for him. Maybe because his approach works in this fashion
Most importantly if the approach doesn’t work for them then go deep into why does it not work? Because this is key, it’ll not only teach you how to tackle the problem but also the shortcomings of the initial approach and when not to use it.
So with this approach we discussed about advantages of collaborating with others on the problems they are stuck on and how you can take the learning from a problem and share it with others facing the same problems.
- You get to understand and collaborate on a project that otherwise you wouldn’t have any idea about.
- You’ll be able to learn from the experiences of others and apply them to your problems.
- You’ll be like a Wikipedia of solutions or rather a Stack-Overflow website in person where people can ask questions and get answers based on experiences of other people who faced the same problem.
- All this takes time and I’d highly recommend you try not to get too engrossed in the process that you end up falling short on your own responsibilities and deadlines.
I’ll leave you guys with this classic quote we’ve all been hearing since childhood:
A smart man learns from his mistakes while a wise man learns from the mistakes of others. ~ Unknown
Like this article? Follow @iam_Carrot on Twitter. Maybe click the 👏 button a few time to show your support ⬇⬇