Running into a collection or colloquial of problems for a recent project, one of the main challenges that ran into me was the idea of having people around me who just didn't have the same level of domain expertise as me, or just not the same level of idea or broad scope that I had.
Which meant often that the simplest of tasks seemed next to almost unimaginable to my team mates, which would lead to further confusion and overall the project would suffer because of bad organization. Being as clear cut as possible, this does not mean a bad team. A team might only be as effective as the culture, organization, domain knowledge, scope, goal, and perhaps some would say the weakest link of the team.
This could mean a lot of things, for example
- This would mean that helping your team mates to be better at analyzing problems
- At helping them explore things more on their own and giving them more confidence on what paths to follow
- At figuring out personalized learning to see the better and the overall perspective of the big picture
- That if limited to just a single individual with a domain level expertise, the whole team suffers dramatically, as other people will just not see that perspective on their end
- This would mean that other team mates have restricted growth, which can mean that a project that does not help individuals grow, may not help them learn
- And which means they may not be able to tackle a problem better which they might encounter in the future
So I, with the help of my friend, decided to answer some questions that would seem relevant to me and to help mitigate the problems described above. I've compiled the answers, and I hope they help you to. The questions are the following, and they have their own sections as answers,
- How do you expect someone to help you out? Why do you need someone?
- How would you guide someone to learn and do something that basically has next to zero experience?
- What about "the less someone knows, the more it can be worrying"?
- What is the expected outcome?
- How would you cater to the individuals on how to help them?
- Can organizing meetups help?
How do you expect someone to help you out? Why do you need someone?
Answer: Because it feels and seems unwieldy to take on a project this level and scope, and have to do it all by myself. Having people around me would make that burden lighter, and having people who I can share ideas, perspectives, thoughts, motivations with, would allow for quick and rapid growth of the project
The truth is that there are a few unknown unknowns, and I would like to take on the process about what it means to get something like this done on a larger scale with many people
So what am I expecting? That the end expectation is that we can remove those unknown unknowns, and slowly and meticulously turn it into something that is worthy and feasible for our time period
How would you guide someone to learn and do something that basically has next to zero experience?
This requires very granular break down of each and every task, and to assign/allocate/share whatever knowledge I have with the rest of the team.
Clear communication helps out a lot.
The end goal is not to have just code written, but rather that the tasks assigned to people come with a clear context of what the problem actually is, and through whatever function call is made, there is a clear sense and direction of why and how a code is written, and what purpose it should bring.
The more unknowns and not understanding how things work, the more worry and concern. Clear mitigation of the expectations of a task or an end goal would help out a lot
Clear separation of knowledge into three categories,
- Known known - it is clear what the solution to a problem is, how it can be done, and how it can be approached
- Known unknowns - it is clear what tools can be used to solve a particular problem, should they come up, but the complete path to finishing that solution is not 100% clear and needs further exploration/research/discussion, that is, more thought or pre-planning needs to be given to this
- Unknown Unknowns - it is not clear what measures need to be taken to solve a particular problem, neither it is clear what the end goal is, neither it is clear what an organized structured path looks like, neither it is clear what the best practices to solve the problem are. All that is known is the problem statement, but with the vagueness of what needs to be tuned and fined to even get started needs to be first looked up for feasibility before it is even approached on implementation and system level
What about "the less someone knows, the more it can be worrying"?
It helps to have background knowledge, prerequisites, cherry-picking sources as needed for that specific task and allocating them to different modules
Thus, there should a clear explanation of what tasks need to be done and how they are to be allocated to individuals. This means there should be a handpicked selection of information catered for a specific individual and how it helps them to approach a problem
The end outcome here is to have a clear picture, representation, and idea should exist, with very simple directions on how something is done, why, and what can be grown on top of it
What is the expected outcome?
- A complete implemented level of outcome for the project, from a software perspective
- A documentation that shows the research work we went into to understand the problem, what it took to solve a particular problem, what challenges and problems, from a documentation perspective
- A research level implementation of the project to show what was done to actually replicate the results of the research paper attached, from a research perspective
How would you cater to the individuals on how to help them?
- Organizing meets whenever possible to help that individual
- Breaking down tasks further, or looking into how something can be done on a more basic level
- Finding a step by step measure on how to solve problem
- Suggesting possible solutions, or at least why a problem is occurring if the exact answer to the problem is not available, and breaking that argument even further to simplify where possible problems can jump up from
Can organizing meetups help?
- Yes! Teams should not be based on specialization always. What this leads to is insufficient domain context knowledge, and it does not help when you want others to understand what perspective you're talking about. It is thus important to let other people know your background, what problems you personally are running into, and what is something you can base yourself on. Sharing your personal problems, aims, and desires can help others grow with your knowledge and experience and better utilize that
- Having a single person perform a specific role, and not have others input to that leads to inconsistent brainstorming sessions where you can't seem to see other people consider your perspectives and problems with something
- A solution would be to sit down and perform tasks together on how to expand this section of broad knowledge, and think about problems that work together or against to mitigate a problem. Pair programming might help!
That's all for right now. I'll probably would like to write a followup in June about how this approach turned out to be. Stay tuned! ( I guess )