Programming
What Self-Taught Programmers Often Lack Is the Skill of Knowing What They Don’t Know
Yes, there was such a thing.
If professionals don’t know what they don’t know, they can take on work they shouldn’t, or they can’t ask for help at essential points, causing problems for their customers. There was such a thing.
1. When designing a product sales system, a programmer deleted the “invoice amount” determined from the quantity, unit price, and tax rate from the database, assuming it was a value that could be obtained by recalculating it.
He thought that normalization could reduce redundancy. But under that system, this was something you shouldn’t have done. The billing amount is initially calculated. However, when he makes a “request,” it becomes data that is treated as a trail.
So, instead of asking for it in a recalculation when needed, it had to be recorded as a fact. This was an example where “not knowing” caused a severe problem that software testing could not detect.
2. There is an algorithm called Patricia Tree. It is used to search for strings within text. It’s not widely used, so many programmers don’t know about it, and it’s generally okay not to know about it.
However, when building a system in this field, there is a significant difference between knowing and deciding that another algorithm is sufficient for your system and not using it.
When given a problem in a particular field, you may produce a disappointing product if you cannot explore things you don’t know related to that field without knowing what they are.
When given the problem of “searching for strings in text,” you need the skill to arrive at an algorithm like a Patricia tree and the competency to investigate related technologies for the problem before that.
So, how can we know what we don’t know?
The following three points are key.
- Acquire systematic knowledge and ways of thinking
- Always be aware that there are things you don’t know
- Continue to update the knowledge and skills you have acquired
Systematic knowledge — like computer science or software engineering — provides information organized to cover an entire field. By following this system, you can determine what you are good at and what you don’t know. It is also helpful in analyzing business knowledge that has not yet been systemized.
Always be aware that things you don’t know are easy to say, but it can be difficult to put into practice.
For example, let’s say that a programmer who can do this reads the section above about the “Patricia Tree Algorithm” and thinks that he has never heard of it. He or she will look up at the “Patricia tree” in amazement.
If you have systematic knowledge, you can consider it in your mind. If you decide that the knowledge is unnecessary for the time being, you put it in the back of your mind as “things you don’t know.”
On the other hand, those who are not concerned about this cannot be “stunned’’.
It is the destiny of a programmer to “continue to update the knowledge and skills acquired so far.” No other industry changes so quickly. If you don’t update it, things you don’t know will multiply before you know it. A system once learned will soon become obsolete if left unattended.
A “formally educated programmer” should already have systematic knowledge.
Therefore, for self-taught programmers to acquire the same knowledge and skills as formal programmers, they need to gain systematic knowledge. It is also possible to do it by self-study.
(Also note that the term “formal” is a bit of an understatement, and you will not have acquired systematic knowledge just by taking a course on a programming language.)
The remaining two points are things you will learn on your own. Even after receiving “formal education,” many people fail to acquire these skills and disappear or end up in disappointing jobs.
Unfortunately, these “ways of wearing things” cannot be explained; they are different for each person, and I think you have no choice but to develop them yourself. Conversely, even self-taught programmers can excel if they acquire these competencies.
It is best to start with just one textbook to acquire systematic knowledge. If you search for computer science or software engineering, you will find sites introducing a vast amount of literature.
However, continuing to study on your own while working is different from spending years studying at university and graduate school. So, do what you can first, and use the knowledge you have gained to think about your next move.
Stackademic 🎓
Thank you for reading until the end. Before you go:
- Please consider clapping and following the writer! 👏
- Follow us X | LinkedIn | YouTube | Discord
- Visit our other platforms: In Plain English | CoFeed | Venture | Cubed
- More content at Stackademic.com






