I have been writing code for over two years and looking back, it amazes me the number of things I don't know yet. It's a rat-race trying to catch up with the industry, the more you try hard to catch up, the further you realize you are behind. I want to use this opportunity to list out some programming technologies I don't know.
This is kind of a journal for me to see what I don't know as of 2018. This by no means undermines my capabilities as a web developer but only shows I'm humble enough to admit what I don't know something yet
- Linux, Unix and Bash command: Ironically, I use a Linux machine but I only manage to do the basic stuff on the terminal, the rest I just google, copy and paste. I have never done SSH before.
- Webpack/Bundlers: I have only heard of Webpack and what it can do but I have not used it. Never bothered with Parcel or Gulp.
- GraphQL: This has got to be the hottest topic in web development right now and I know jack about it!
- Databases: I have never used any relational DBs such as MySQL, PostgreSQL, Sequelize and even non-relational DBs such as DocumentDB, Cassandra, Coachbase, HBase, Redis, and Neo4j. There are so many Databases I can't even list them all. The only databases I have used are Firebase and MongoDB.
- Node Frameworks: Even though I'm more backend inclined, I have only used Express. I haven't used Koa, Hapi, Sails or any other node framework to write my backend code. Also, not familiar with Vue framework like Nuxt.
- Testing: I have never written any test before, this is something I know I should learn but haven't gotten around to yet.
- Electron: Nope!
- Web Sockets: I haven't used it before. I only know what it's used for.
- Devops, Docker: DevOps is another huge field on its own and not something I intend to get into for now. Containers, Kubernetes, Azure are just buzzwords I hear every day but don't really know what they are used for. I haven't tried Continous Integration or Continous Deployment as well.
- Data Structures and Algorithms: This is a topic that seems to be controversial. I only know a few simple algorithms and data structures but to be honest, I don't think I have ever applied any of the knowledge in real-world development.
- Deployment, Web Servers and AWS: I don't know to deploy applications using Digital Oceans or any other hosting platforms like Heroku, etc. Never tried any of AWS to deploy my applications.
- Design and Graphics: Don't even go there!
- Networking: Funny enough, I did networking for almost a year before I picked programming but I have forgotten most of the stuff I learnt back then. I still remember little but wouldn't go far, TCP, UDP, Packets, HTTPS, SSL, etc.
- Frontend Technologies: There are so many technologies I still haven't come to grasp with. They include, accessibility, Animations, Browser rendering, PWA, etc
This doesn’t devalue my knowledge and experience. There’s plenty of things that I can do well. For example, learning technologies when I need them.
This article is largely inspired by Dan Abramov article on the same topic. Dan is an industry leader and writing something like this goes a long way to encourage other programmers that it's possible not to know everything and still be relevant in the industry.
If you find any error or typo in this article, please feel free to edit on Github.
If this was helpful, interesting, or caused some other positive emotion, please share!