One of the most defining moments in a developer’s career is a realization that you can’t and should not know everything. I wrote about this in the past - namely the mental burden that is placed on someone who wants to know every possible technology, especially in a saturated field like web development.
Why do we even want to know everything in the first place?
I believe it is due to the flawed education system.
In schools, we get grades. The purpose of the grades is to quantify our knowledge and mastery of the subject. Unfortunately, for the vast majority of subjects, the way to earn a better grade is to learn and know more by heart.
We’ve all been there - to get a good history grade, you need to remember all the events along with their dates. To get a good math grade, you need to remember all the definitions and equations.
While I can somewhat understand this concept of grading for theoretical subjects like history and biology, I thought that once I started studying computer science, things will change - since computer science is a highly practical field.
Regretfully, the method of grading remained similar. For example, to get a good web development grade, we would have to remember every HTML tag, every JavaScript function, and all of the CSS properties and selectors. In one of the classes, the test was to build a user interface - but without internet access.
I think this way of teaching computer science (I can’t speak for other subjects) is flawed because it teaches the students two very bad things about software development (and life in general):
- To succeed, you need to learn everything by heart.
- You may not ask for help (if you try, you’ll be punished for it).
Appyling the (mis)learnings to real life
How we are taught in schools can have a big impact on how we behave in real life. Eventually, I realized that I’d have to unlearn a lot of what I had been taught for the last 15 years in school and university.
Learning to say “I don’t know”
Whenever someone asked me if I knew about a certain topic, I would be ashamed to say no, and would instead try to learn it as soon as possible. I felt like saying “I don’t know” was an embarrassment.
An ex-schoolmate once asked me for some advice regarding the hardware he was buying for his new computer. Truthfully, I know nothing about hardware - but I was too ashamed to admit that, so I spent 2 hours Googling and trying to give him some advice.
Instead, it would be much fairer to him if I’d just say “I don’t know” and point him to a person who would be able to give him proper advice. It would also save me the hassle and time.
There is nothing bad in saying “I don’t know”. In fact, it can make the situation easier for both you and the person who is asking.
Learning to ask for help (in the right place)
I felt like asking for help was a bad practice, so I tried to do everything on my own.
When I got my first job, I was afraid to ask for help even when it came to requirements. When I received a task that I didn’t understand, I was afraid to ask for details - so I ended up trying to accomplish a task without fully knowing what that task is. I attribute this to the fact that schools simply don’t teach students that it’s okay to ask for help.
When it comes to more general, technical questions, asking for help involves using Google and ChatGPT. In schools, this was forbidden and considered cheating.
Asking for help is okay and it speeds up the process - as long as we find the right balance between asking computers (Google, ChatGPT, …) and asking coworkers.
ChatGPT helps us realize that we don’t need to know everything
So, what does all this have to do with ChatGPT?
For developers, I believe that it solidifies the fact that we don’t have to know everything and that asking for help is something normal.
This is not new - developers have been using Google and Stack Overflow for years to find information. But ChatGPT takes this one step further - we can now ask the computer for help in specific situations using natural language.
It took me some time to discover the facts about learning that I wrote about in the previous chapter - I think that ChatGPT will help new developers realize these facts quicker.
ChatGPT solidifies the fact that as developers, we ought not to know everything, but rather be able to phrase our questions and problems properly, and use tools like ChatGPT to resolve them.
ChatGPT as a tool in modern education
What I’m hoping the teachers will learn from ChatGPT is that humans in the modern era are surrounded by tools that can make their lives easier and more productive. These tools are not replacements, they are just - tools.
I hope that teachers can view these tools as a way to transform their students into high-performing individuals, which will benefit the entire society.
What I am praying will not happen is that teachers will see these tools as evil cheating devices and forbid them. This will send the same message that has been sent to the students in the past: “Know everything by heart, do not rely on any tool”.
Am I saying that in the future people will be just proxies for AI and will not possess any of their own knowledge? No.
Did cars replace humans? No, they replaced an inferior transportation tool - a horse. But regardless of whether the horse or the car is used, both of these means of transportation still require a skilled driver in the front seat.
What cars did do is make humans more effective. It would be silly of us to still use horses for transportation nowadays (except for the fun of it), just like I believe it is silly for teachers to still require students to know everything by heart and forbidding tools.
In the ideal world, the tests in (computer science) schools would no longer test knowing things by heart. Instead, students would be presented with a non-trivial problem that has multiple solutions, which they would then need to solve, aided by tools. This would test how well the student can piece together information from their knowledge, and from external sources of information, like Google or ChatGPT - exactly what they will be doing in real life to build solutions.
Learning with ChatGPT
I recently decided to learn Svelte and Django. As an experiment, I decided to skim through the docs of both technologies, and then jump straight into building a project. Then, whenever I was stuck - and I was stuck a lot - I asked ChatGPT to help me - but not only with the how (the solution), but also with the why (the explanation).
My conversations went something like this:
Me: Hey ChatGPT, how do you X in Svelte?
ChatGPT: You do Y.
Me: Why do you do Y and not Z?
ChatGPT: an explanation of why Y works.
This is one of the main things that I’ve been missing from Google over the years - the why. With ChatGPT explaining the why, I have learned surprisingly a lot about Django and Svelte - just by chatting. I think that ChatGPT is a wonderful learning tool that can help feed a curious mind.
Conclusion
The future of learning and productivity looks bright - tools like ChatGPT can help us perform better and learn faster. I hope that teachers can realize this as well and work with these tools, rather than shunning them.
ChatGPT is a tool. Developers are drivers.