I am a self taught programmer. It started out as a journey to explore the world of computers, the digital world. I started off with the fundamentals. I can say that my entire learning was a fruit of all the questions I’ve asked myself. Questions like, how does the internet work ? I started programming just to answer this question How does a c program make a computer do some work?.
Every moment is a learning opportunity.
In schools and colleges they've always taught us how to write c program in an editor, then compile and run. But I wasn’t able to connect the dots. How could this be making a computer work? I used to think. I found the answer to this. It was Turbo C, which by providing user friendliness was hiding something. Only after I used gcc, I understood the process. There can be two sides, one is user friendliness and the other is transparency. Take the example of windows and linux, windows is user friendly but hides a lot about what’s happening inside. But linux is very transparent in terms of what is happening. You can see the code for yourself. This is one of the reason's that made me believe ok C program can make computer do things. I never said no to anything related to computer after that.
Computers do what we program them to do. It's both a pro and a con.
I started with GUI programming in GTK. No wonder I started with GUI, as I was a windows user back then. After a couple of months I replaced windows with ubuntu. Using linux was very different. It gave me the feeling of a hacker. Typing commands in a console, I felt like, I was actually interacting with the computer. Suddenly I felt empowered. I started learning about networking. Wireshark, tcpdump, airmon-ng etc. Using these tools I got to know what happens behind the scenes. I learnt a few things about networking, which previously, I took for granted. One day when I was using this tool Scapy, I got very much interested in Python. So I started learning it. The name was also very cool too. It was very easy to learn. I opened the official docs in browser and in terminal I opened python, and started typing commands. Actually I was programming Interactively. Then I started out with Interview Street. It is a platform where you can solve programming challenges. It was fascinating. Later Interview Street became Hackerrank. By solving those challenges, I got better at the way I think. I still solve challenges in Hackerrank. It’s good for my mind.
Then I got to know about Git and Github. It was intriguing, to know how Github works. Distributed collaboration using git, remarkable. Open source is a world that is always special to me. All I understood was that I can learn things fast.
My brother was doing MBA in Information security at that time. So I got to know about Nmap, Netcat, Snort, Nessus, rainbow tables etc. I configured snort in my laptop and also wrote a simple plugin for Nessus.
Programming made me confident. I was very much in love with it, so much that I wasn’t thinking of anything else. It made me believe that I can do things. Actual things that can be useful to others. Above all, it makes me very happy. It changed the way I think. I started to approach things in an efficient way, Thanks to programming. I am very grateful to the community. I have never seen anything like this before. Great pioneers are part of it.
That feeling you get when you break barriers, when you achieve something which you thought was impossible, that particular moment, that moment of realisation, that moment of innovation, is the best moment someone could ever have. By programming I got to experience what that’s like. Once you get the taste of it, there’s no stopping you.