I’ll be a Self Taught Software Developer — Part 1
Journey without a degree.
One of the first nights where I realized there is something important than a good night’s sleep. Not saying you shouldn’t sleep. Please sleep well.
The first encounter with a computer that I remember is seeing my brother play IGI.
I spent my childhood playing Pokemon on VBA emulator. I only knew how to open the emulator and play it. I used to wait for my brother to come and extract the zipped game file because I thought you needed to be really experienced in computers to do that.
First Time Coding
The first time I did some coding (not actual programming languages) was in around 6th or 7th Grade in school. We were taught to use MS Logo Turtle Program. You just gave simple commands to move around and create lines.
Encounter with Linux
In 9th/10th Grade, one of my classmates told me about Kali Linux and how it can be used for hacking. At that time Watch Dogs had come out so I was excited to try this thing out.
I was a script kiddie, just copying & pasting commands from the internet and having the feeling that I’m Aiden Pearce (game protagonist).
One day, out of curiosity, I was thinking what Kali Linux means. In our language, Kali means something black but I was interested as to what the Linux part means.
I then googled and realized there’s something called Ubuntu and that it’s a Linux Distribution, just like Kali Linux. I then had a flashback to when I was in 8th Grade:
Our Computer Science teacher asked us what Operating System we used and there was this girl that said she used something called Ubuntu that she downloaded from the internet.
When I heard her say that, I raised my fist and said Windows Is The Best.
at that moment: Girl: 1, me: 0
I tried out Ubuntu and instantly installed it as my main Operating System. I never used Windows on my laptop since that day.
I then distro-hopped a couple of times and one distribution caught my eye, Arch Linux. I learned most of what I know about Linux by using this distribution. It’s my daily driver now.
I then used Linux without doing any coding.
When I actually started learning to code
During my 11th Grade’s Final Exams, I decided I’ll try out programming.
I chose to start with Python as that’s what seemed a good language to start with. I downloaded a bunch of PDF’s on learning Python but never really read them.
I started watching tutorials on YouTube and that’s where I started writing my first lines of Python code.
Once I grasped basic concepts of Python, I started thinking of a small project to do to get an idea of data structures (list, dictionaries etc).
I thought of making an application which would store the location of items in my room as I used to forget where I put stuff, so I started building that.
I built it, it worked as I wanted it to work. I got a good feeling of accomplishment doing that.
My First Real Project
Once I thought I had a good grasp on Object Oriented Programming and Python, I decided to build an actual project. You know, something that someone would say is useful.
I was at my friend’s house and his father had an academy open. They were looking on building a software for managing tuition stuff. I heard that and thought that it would be a good project to work on. So I asked them and we agreed that I’ll try building that.
I started working on that project soon after. The project is on GitHub. It’s not very useful but it’s near and dear to me because this is the project that I believe taught me most of what I know about Python (and software development).
I’m pretty sure I spent a full year and a half developing this software. I know, I can now build it in a month but I was learning which is why it took me this long to do it.
Here’s the fun part, during the initial stage, I was thinking of how I would store data to the disk. I thought of binary data, pickling etc but eventually I saw JSON and stuck with it. I knew there were databases and stuff but JSON was working well at the start for me so I thought why change it.
As time went on, the data I needed to store got complex and I started thinking if I should try out databases. I did and settled with SQLite as there was a built-in library in Python.
I also hand coded the GUI because I thought it would make me understand better. It wasn’t a great experience because now we really don’t have software that use native graphical Tool-Kits but instead are switching to web apps but it was a good experience nevertheless.
Ze magnificent desktop application
At that time, I thought this was my masterpiece and felt that it is so well made.
Now, I definitely think it’s not a masterpiece or that it’s well made. I’ve archived it for these reasons but it’s my first project so I’ve put it up.
My First Internship
After my 12th Grade result had come out, I was at home and had made up my mind of not going to a university. I was dead serious on becoming a Self Taught Software Developer.
My beloved Father got me an internship at the company he worked in. I didn’t work on any of their projects but instead I learnt what they used and stuff.
Since it’s a corporate company, it was all JAVA.
I built a simple web app in Java that didn’t do much. I only focused on the back-end as I didn’t have much interest in front-end stuff.
I showed it to the Manager and he said
that’s nice but make it look professional.
so I came up with this masterpiece
The most professional website you’ll ever get to see
sadly, the one below didn’t make it (so it’s crying)
Ash left him there
So that was that. Although I made all this, I absolutely didn’t want to code in Java. The project was all spaghetti code and I really started hating Java due to my lack of experience with it, which sounds strange as I spent 1–2 months building it.
After I built this, I started working on other things. I started focusing back on Python.
My Second Real Project
I started being comfortable with databases so I looked at some stuff and came across temporal tables/history tables.
I instantly started searching if SQLite supported these and realized (to my knowledge) that it didn’t. So I decided to develop it.
I then developed this project. I also learned RegEx while developing this project because I decided to use it in it.
I had fun developing it because it was something totally different than the old Tuition Manager project that I was accustomed to.
My Second Internship
It was in a Mobile Operator, which was a subsidiary of the company in which I did my first internship. I was able to get to the interview with the help of my father’s reference.
I would call this my first real Internship because this is where I worked on something that was a real project in the company.
My interviewer was the Project Delivery Manager. It went good and I was selected on becoming an Intern. I’ve also written a blog about the internship.
I was told to research on GSMA Mobile Connect. Again, I wrote a blog on it.
I had to work with Java. The first 2 days of development weren’t too bad. I was getting a hang of Java.
Then something strange happened, I started to like Java. I mean I really started to like Java. I hated it because I didn’t know really well how to code in it but when I actually started coding in it, it felt awesome.
I then went into full dev mode and spit out a bunch of commits everyday. So much so that one day I was so into it that I didn’t see the whole day go by. It was weird, I would normally fall asleep at around 9pm but that day it felt to me like only 2 or 3 hours passed by when in reality the whole day had gone by. I was totally in the zone that day.
I then finished the project. Well not really finish but built the base which they could use later.
I’d say working on the project made me become very comfortable in Java, all in just one month. I already had experience in developing software so changing languages doesn’t take much time anyway.
So this was the phase of my life where I started learning to code up to my internships. Hope you liked it (or get inspired by it :D).