It's basically three years that I have really being coding seriously, working on more side projects and learning more and more about computer science and software engineering each day , but one thing bugs me. It's the recurring thought that I know nothing even though I am learning so much. I really think my code sucks, I think I don't know enough programming languages even though I use more than 4 languages in different projects in a month, I still feel the architecture of the software I build lacks simplicity, I still think my designs are bad. I read alot of books and make sure I put what I learn to practice and have read the book "Clean code" by Robert C.Martin and "The pragmatic programmer" many times to improve myself as a programmer and still I feel I don't know anything. There are times I make sure my algorithms are working as efficient as I can but still, I am not happy. I make sure I do unit tests for all my code, I will forever be a slave to source control, refactoring and the pragmatic philosophy but will I ever be satisfied with my own code?

I have met many beginner programmers as well as old programmers who think they are legends in programming, some who might even consider themselves the best in the country, the best in their schools who openly will tell you that they are good programmers. If you asked me I would say "check my code" because I know my mouth wont count for anything. I can babble on and on about how good I am but does that actually mean I am good? I have grown with the hacker culture and mindset and I have adopted many of its philosophies and one of my favorites is that hackers should be judged by their hacking, not criteria such as degrees, race, sex or position. I believe the only real way to show that your a good programer is through your code so sometimes I get really irritated when people create videos about why you should come to thier meetup or event and try to "motivate" the viewers by blabbering on about how you should go to their event so that you can be with the countries "elite" programmers and feed of their "elite" knowledge which to my train of thought is a boat load of garbage. I believe each and everyone of us can and should feed of each other. Google is not made up of one "elite" software engineer but made up of many people who belive that they can improve each and every day and help change the world at the same time that is why Mozilla is the way it is because people belive they should learn and help make things better.

I will never be satisfied with my code and I think no one should. If you haven't refactored your code atleast 5 times your code is probably bad. If you have not done unit testing assume your code will fail somehow when some weird condition you have not checked for occurs. Assume your a bad programmer if you have not the simplest idea on how to code secure applications, assume the application you just put online is vulnerable if don't know what sql injection, xss or buffer overflow is, assume your a bad hacker until someone better than you says you are good one, assume you always have to learn something and you will be on your way to becoming a better programmer. Be humble and stay curious.