Why I love programming?



Extended title: 

"Why I love coding/programming, software development, software engineering and everything in this field of work?"





I am a guy who easily gets bored of stuff within short span of time. In this context, I have a brain like that of a 2 years old kid who craves for something and when I get it I abandon it away within no time. But it's exactly the other way round when it comes to anything in computers.

I first saw a computer at the age of 15 when my first cousin got one for a post graduate program. I, for that matter anyone of us kids, were not allowed to touch it initially. After a few months of pestering we were allowed to play games and MS Paint.

Eventually, not by choice though, got a seat in computers and information science branch for my engineering course and my dad got me my first computer. I am including the spec just to know how much we have progressed since 15 years.

- Pentium III processor cased inside a cabinet with intel inside sticker on it
- 128MB RAM
- 20GB HDD
- MS Windows'98 operating system
- 800x600 resolution CRT monitor
- CD ROM and Floppy disk
- PS/2 Mouse with a ball and mechanical Keyboard with heavy click sound
- without ethernet card, without graphics card which are defaults now
- A UPS to give a 10 backup in case of power down just to save anything and shutdown the system

I was so delighted to have my own computer!! My first few games were Road Rash, Dave, Pinball, Solitaire. My favorite was Road Rash. Looking at the graphics in the game and things that can be done I was amazed! This created a strong liking to know stuff in and out of this box. I decided whatever I do in life it would be in and around this amazing box of wonder.


That month I joined C-programming class at a private institute nearby. After some basic theory sessions, I was introduced to Turbo-C software which compiles and runs C/C++ programs. 




Loved writing the programs. As the sessions passed learnt printfs, scanfs, conditional statements but then came the loops and advance concepts. There was an assignment given to print:

* * * * *
* * * *   
* * *      
* *         
*            

I was not able to write it then reality struck - I am not able to understand loops none of them. This was horrible no one could explain me how loop works for more than a year even in engineering. I literally used to mug programs and if its more than 25-30 lines I screw up.

My state worsened more when I had Data Structures classes. And I got a single digit in one of the internal lab exam. Thats when it struck: "why am I not able to get this? I wanted this thing, I love spending time on a computer,  I want to make a living out of it, this is what I loved the most. So I have to understand each and every bit & byte of computers."
The juncture I was in that day was very much helpful in my career when I look back and start connecting the dots. I failed at a thing, I arrived at the cross roads not knowing where to go. Now only option left is listen to your heart and follow one path no matter what. With my experience I can tell you for sure in such a state There is no right or wrong paths. Its taking a decision that matters and then you will stick with it. There is no right or wrong paths

For the next 10 days I went to the college library got couple of text books on programming and data structures. Everyday 5-6 hours for next 10 days were the foundation of my career. That's when I started loving to code, write programs, solve problems, create tiny things. Just loved it!

Fast forwarding to this day, even after more than a decade why do I stick to it? Why did I not get bored of it?

Apart from my daily bread and butter there is something which is pulling me towards it.. what is it?

Some say automates routine work. I see it as the magic that takes place every time you use a developers’ creation. It solves realtime problems we face people in our day-to-day life.

Create: Software engineering gives you enables you with the Power to create something beautiful useful. Its a creative process. It involves 
- deciding the tools
- planning your solution 
- breaking down the solution to bits and pieces 
- prioritizing these bits 
- ordering them to manage dependencies 
- bringing the bits to life
- make them talk to each other
- feel the magic happening

At the heart of all the steps is programming. You do it in right or wrong way, your solution is efficient or not, your approach is right or wrong, everything can be taken care of. But is programming is the core of all these. Beginners either from college graduates or new enthusiasts generally have these feelings which is the biggest obstacle. Do not hesitate to make mistakes just don't repeat them. Learn from them but keep programming.

Communications: How do you find mistakes or problems in the solution you built. Communicating! Yes, talk to people who have been around for a while in the space. They can be at a remote place or nearby you physically. Talk to them explain them your solution. When they ask questions you will find loop holes in your product. Communication gives many advantages:
- Product gets evaluated at different level
- Communication and presentation skills improves
- Social network grows
- People approach you for suggestions as you did for you solution
- Ideas are shared
- Happy and peaceful world
TeamWork: TeamWork mean understanding and trusting each others responsibilities and be clear on the deliverables. Respect your own and others' time. Help co-developers when they are stuck with understanding of the product, technical challenges, optimizing the code, etc. This definitely does not mean that co-developer must sit with you and help you code line by line. Everything must happen in tandem to converge all the bits and pieces into one beautiful outcome.

Learn: Another reason I started loving this place is because there is endless stream of knowledge and ways of solving a problem. The more you learn the more you get enlightened. The more you are enlightened the more you feel like learning. Its just unstoppable irresistible to hold yourself back.
- new tech everyday
- new frameworks/libs making things easier
- new gadgets (which can be bad too… you know what I mean (;)
- new programming languages

Community & knowledge sharing: The best part of software development - sharing the knowledge. There are many developer conferences which happens around the world. Attending these will definitely give more insights in the community, get to know other developers and most importantly understanding the tech in depth. People share what they created, what they understand and people learn from it. Everything wont be right all the time, but that's fine, learn from it. You start sharing and people are courteous enough to point out where you went wrong. Improve on it. Move on. 

Side Projects: This is one of my favorite past times. I used to do experiments with whatever tech I work on in my day job. Definitely that improved my existing skillset but not to a great extent when compared to the time I spent. May the quality of time I spent on it was not good enough. Then I realized why not put some extra effort at work to improve myself there and try something new at my leisure. So I started learning and experiment of completely different things. The results are mind blowing you are out of your cocoon and your perception about things will take new direction. You learn see a problem and solve it in different way all together. You have wider range of possible answers. Side project / experiments also indirectly helps lot in your day to day work.

These are few things I could jolt down on why I love this field so much. Jump into this, dive deep and you will have many more reasons to love it and share it. Now when I see myself a decade and half back, I would have never thought of loving it so much.

Muchos Gracias! Adios till next time ;)

Pic courtesy: Internet Search | Not my own.
http://www.pngall.com/
https://beginnersbook.com
http://www.tutorsonnet.com/
https://netmatze.files.wordpress.com
http://www.studytonight.com/
https://fossbytes.com
https://www.rockpapershotgun.com/

Comments

Popular posts from this blog

Rotate Scale Flip - NSImageView

Tint an NSImage view