One of my favorite memes “I have no idea what I’m doing” dog. Could there be a better role model than a Golden Retriever trying to do science experiments? :) Does he care that he has no idea what he’s doing? Of course not. Whatever is trying.
I love this meme. Look at this dog once in a while and say, “You and I dog, we’re struggling with something new difficult.” I think. And there is always something new tough standing in front of me.
The tech industry doesn’t talk much about learning. This is a strange situation because learning is our most important skill. It is impossible for us to be successful without it. The technology is enormous, there are so many different things we need to know, and they’re all constantly changing at an incredible pace. Every day a new framework, a new architecture, a new tool comes out or changes. Suddenly, brand new technologies appear in a new name, and we are constantly grappling with the thought: “Did I miss an announcement? Where did this new stuff come from?”
Staying up to date in the software world means we are constantly learning. We cannot do our job without learning. But for some reason we don’t talk much about this issue.
It is a problem. When we don’t explain how we know what we know - things - we don’t admit how much work it takes to obtain that information. This situation creates unrealistic expectations for new people in the industry. When everyone around you magically seems to know a lot of-things-and you don’t know those-things-you may feel like they’re not good enough. You may feel like you shouldn’t be there.
This is just like everybody’s life seems effortless, perfect Instagram Problem. We don’t see the irregularity before a nice looking photo, the pain, the other 20 photos taken until we find the right one. We see people using their knowledge, but we don’t show the information obtained. We cannot see incredibly unreasonable documentation, wrong paths, first horrible prototypes, ideas that existed for weeks before they were published.
We are not telling new people that learning can be slow, frustrating and sometimes difficult, but it is really “normal”.
If learning is the # 1 skill, probably the 2nd is persistence. And unfortunately some things take time.
In a speech we made recently, I told someone to ask stupid questions in order to have senior engineers.
- “Wait a minute, what does this word mean?”
- “Can you explain this as if I was 5 years old?”
- “Why are we doing this?”
- “What problem are we trying to solve?”
- “There is no such thing anyway?”
Sometimes he asks questions in meetings for which I already know the answer and I’m sure most other people don’t. It is always less scary for more experienced people to ask such questions. :)
Learning is a skill in itself. It’s something you get better at the time of practice and the more you understand what works for yourself.
For example; I was trying to find the “best” place to start on a topic, trying to choose the most important aspects of the new topic I had learned. Thinking that starting by reading an arbitrary article would be as good as reading a Wikipedia page on the topic, I picked something I didn’t understand and kept reading about it. If I continued to do this for a few hours, I was sure I would have a picture in my mind about what was important.
“As everyone says, a monad in X is just a monoid in the category of endofunctors of X; product x is replaced by the composition of the endofunctors and the unit determined by the identity endofunctor. Understood.” Photo by Hal Gatewood on Unsplash.
I’ve learned that if the subject I’m working on is a boring or difficult topic, I need to use everything I’ve just read IMMEDIATELY to make it interesting (for example: writing a blog post or a blog post that summarizes what I just learned). I have endless patience to read and do research on topics I am curious about, want to write about, or teach someone.
Coding exercises and small projects have the same effect. Theory can be learned forever, but there is nothing like using it in a project to consolidate knowledge and make it permanent.
I think the most important difference in technology is that everything can be learned. Really everything :) Some of these may be difficult and too many details to know, but learning them would not be possible with a magical touch. In the worst case, it just takes a while.
If you are an inexperienced person and it feels like there are many things you don’t know about, don’t feel bad. Because this is very normal. There is a lot -things- you need to know. Familiarity is something that will develop over time, but it won’t last forever. You will enter a new area and you will have no idea what you are doing again. As you continue to learn how to learn a piece of information, new concepts will be understood a little faster each time.
If you are experienced, please show that you have learned. Share your resources, ask questions, and tell people what you’ve just found. If we recognize that the # 1 skill is learning and that it takes a lot of time, we can make our industry better.