Limited Resource Mindset — How it Helps Me Become a Better Developer.
This is a personal story, and is not intended to be objective or scientific.
I started learning about software development when I was 15 years old. I live in a small village where internet is a rare resource. The only connection I got at that time was 24–48kBps, and often not working. The nearest internet cafe is 15 minutes away and the speed is only 100kBps and sometimes lower.
I was involved in some forums to discuss about local event. At that point, I am interested about what if I was able to create my own forum. ProBoards was very popular at that time.
Dealing with administration and moderation, I am interested to know how this kind of thing works. So I ended to know that this kind of thing is built with programming.
At that time, I do not know anything about programming, but somehow I know about Virtual Basic (yes, Virtual Basic, and when I do Google search it corrects me and points me to Visual Basic).
So I ended on this website and starts learning about it. I started my journey by downloading a portable version of Visual Studio 6, then you probably guessed it, I downloaded the tutorial website page per page, that time I do not know anything about website grabber. This so I can read it later at home.
So I went back from the internet cafe, and started to read the tutorial and playing with Visual Basic 6. I was so happy when my first program runs. I created a program that calculates trigonometry stuffs for me, so next time I got homework, I done the homework real fast. I created a sh*tty anti-virus and installed on my school computer, yes sh*tty because it actualy does nothing but I just want my program to be installed and at least I leave something before I graduated.
After learning about Visual Basic 6, I learned about HTML, JS, CSS, and PHP. I was using Macromedia Dreamweaver at that time (yes, Macromedia), and my first client was my friend who wanted to create a website to upload Symbian Java games. Well, he paid for the internet cafe fee and I uploaded the website for him. I was using Byethost, the free plan.
So I encountered jQuery, I love how it simplify my codes, but then an issue come out. Yes, internet speed and the size of jQuery. Mainly I only use jQuery for getting an element reference, and the size of jQuery at that time is still considered large and slow for my connection.
Then I began to wonder:
What if I have no internet connection? Will I still be able to code? Will I still be able to work?
Starting from this question, I reinvented the wheel. Yes, I learned about how jQuery works, and try to do everything without internet connection if possible. I learned how to create my own $(‘element’) function.
Then I began to wonder again:
What if I have nothing of these resources? No Dreamweaver, no Visual Basic, no Windows?
At that time, most of the time I spent was for reinventing the wheel, learning how stuff works from the very root of it. I learned how to use notepad to actually code, and then it introduces me to Notepad++ and other possible editors and IDEs.
I even learned how to code with ASM, how to code my own OS, how compiler works and how to code my own compilers. All of these things just flow, and I enjoy learning about it because one reason that almost everyone encountered before: “Scarce of Resources”.
Rather than trying to get as many resources I can, I think about how to do it with the only resources that I had. This mindset helps me understand more about software development.
Today, whenever someone asked me how ABC works, I would read about ABC and drawing from the roots of what I learned, I could guess how ABC works or at least how I implement ABC.
Today the internet is better, I moved to town and 1MBps is everywhere (though sometimes, there is connection issue that makes you can not work at all), I no longer have to save pages to read later. But yet the mindset of having limited resources still floating above my head. In fact, I do still collect resources offline even though there is package manager for it.
Reinventing the wheel is bad, but if you have the time to do it, do it for learning. Always be curious about how thing works, it will helps you understand more about it and anything related to it.
Sometimes you will be facing the situation when you have a very limited resource (yes, there is a client that ask for pure PHP website implementation without any framework, and Bootstrap is a no), and when you already get used with this kind of situation, you will be ready for it.
As Steve Jobs said,
Stay Foolish, Stay Hungry