My Journey So Far: Mistakes Made, Lessons Learnt
About a year ago, I wrote my very first program (“Hello World” of course! what else were you expecting? …lol). Despite an unavoidable break of about four to five months between those twelve months, I still have learned a lot but have even a whole lot more to learn. In the course of my learning, just like every other beginner, I have made some mistakes, and learnt some valuable lessons which I’ll be sharing in this write-up.
In 2014 I applied for the NIIT Scholarship Program, wrote the exam and passed excellently. I decided to choose a programming course despite knowing absolutely nothing about it, but only then did I find out that it wasn’t a full scholarship. Although the discount was quite good, I still couldn’t afford the expensive fee. Fast-forward to December 2016, I discovered that I could teach myself how to code, my joy knew no bounds!
Before embarking on a journey, especially if it’s to a place you’ve never been before, it’s only wise to make your findings about where you’re headed beforehand. The distance, terrain, climate, people, food, culture etc., are some of the things you ought to know before setting out. The same is the case with programming, before you dive into this “world” you should do some research.
When I was about to begin, I started with a simple Google search of “Computer Programming”. I read from different websites and forums about what it entailed; languages, technologies and tools used. At this point, I already knew the areas of programming I was interested in and what I needed to learn to achieve it. I found out about StackOverflow and GitHub, signed up for an account even before running my first program (although I’m still inactive on them, but you get my point, right?).
The world of programming is one where it is all too easy for beginners to get overwhelmed, confused and discouraged by the enormous amount of information they have to take in. Now this is where having a mentor(s) comes in handy. Be it real life or virtual, having a mentor helps beginners to work their way up with much ease, by giving them the much needed direction and helping them stay focused and motivated.
These mentors are senior developers who have “seen it all, done it all” as it were and have a wealth of experiences to share. Why make all the same mistakes again yourself when you can learn a lot from them, both from their mistakes and achievements? A real life mentor will be preferable to most but a virtual one is equally good to have, or better still you can have both (why have one when you can have two?). One thing about these mentors is that they may not have the luxury of time to “spoon-feed” you or be with you every step of the way, but those few times they step in and come to the rescue are invaluable.
Meanwhile, programming communities are a blessing to beginners as you meet people of like minds who come to one’s aid when stuck and continuously reassure you that you’re not alone on this programming journey of yours. And with the numerous programming websites, forums and communities out there, one is spoilt for choice really.
Define your learning curve
Having someone you adore and look up to is one thing, wanting to be an exact replica of the person is another. It is okay to admire your mentor(s), but you’re not under compulsion to be an exact replica of them. I used to be guilty of this, I was so impressed by a mentor of mine that I wanted to make my learning curve the same as his, the languages, technologies and tools he used, everything! Then I realised that I had abandoned my own “journey” for someone else’s. It is important to remember that we all have our different areas of interest, strength and weaknesses, hence it is advisable to ply YOUR “route”.
As a beginner, if you do not have a definite learning curve and stick to it, you’ll likely find yourself jumping from this to that without grasping anything or being productive with them. Before picking up a framework or library, make sure you’re already well versed with the rudiments; first things first, basics first!
See opportunities not obstacles
Sadly, I find myself in a part of the world where power supply is unstable and internet data bundles are expensive. Of these two, buying data bundles has been my biggest challenge. With lots of materials to download, videos to watch, software to install, tutorials to access online etc., data is just never enough! But then I observed something about when power and data were available and when they weren’t.
I realised that when there was power and internet data, I was always in a hurry to learn as much as possible and devoted little time for assimilation, thinking and practising. But reverse was always the case when there was no power or data. So I stopped seeing unavailability of either power or data as an obstacle but as an opportunity to devote more time for assimilation, thinking and a lot of practising.
Keep your motives in check
Barely two months after writing my first program, I got to know about a job opening through a mentor of mine. The job entailed a bit of data administration. I soon misplaced my priorities, I abandoned the language I was learning and began familiarising myself (more like rushing through) with Microsoft SQLServer which was required for the job. Only after a week or so did it dawn on me that I had needed to be proficient with C# and ASP.NET MVC before jumping into SQLServer! I felt stupid and was disappointed in myself because I knew deep down that my motive for wanting the job was for money and not for facilitating, aiding or complementing my learning path.
As a total novice, the last thing on your mind should be to make money from something you barely know, seeking internship will suffice in the meantime. Patiently go through the learning, practising and failure, and experiences gathering process, the money will come much later.
Slow but steady
Feelings of inadequacy start to creep in at some point and you start to doubt if you’ll ever be good at this programming of a thing. Or perhaps you’re not satisfied with the pace at which you’re moving or what you’ve achieved so far. Sometimes the self-teaching path can also become lonely and boring as well. There are times when you just don’t feel like writing even a single line of code, you just want to see a movie, be on social media all day, play some games, go out, take a much needed rest/sleep or the only screen you want to look at is a TV screen!
These feelings are normal in this field as I’ve come to realise. While it is good that you know you can do more, be realistic with the goals you’ve set, try not to be too hard on yourself, “slow and steady wins the race” as people say. If you see the need to take time off to rest or take a break, please do, “health is wealth”. Get rid of feelings of inadequacy by doing all you can to keep yourself motivated. Read tech stories, start-ups stories, follow developers who inspire you on their social media accounts, read inspiring stories about people’s journey how they started off as a beginner just like you and gradually rose through the ranks. These are some of the things that help me stay motivated and keep my eyes fixed on “the bigger picture”.
Document your journey
You know that nostalgic feeling you get when you look at some old pictures of you and start to smile sheepishly? Yes, that is the same feeling you get when you document your programming journey and few years down the line you stumble on a post you made years earlier when you were struggling to wrap your head around a basic concept or labouring to solve a simple problem, then you smile or even laugh out loud and wonder how on earth you didn’t grasp it at first glance!
The beauty of documenting one’s programming journey is that it helps you see clearly how far you’ve come and appreciate your growth and achievements so far. Others also benefit from reading about your journey. People might come across your well-detailed post, answer or solution about a problem they’ve been battling with or better still a discouraged beginner might be inspired and motivated by reading about how you gradually went from being a rookie to being a pro.
I happen to be a person who is not too open and prefer to keep a lot to myself, but I’m now taking baby steps to correct that and gradually crawling out of my shell. This is my first of many more write-ups to come, hopefully. Programming is a field where we’re all beneficiaries of lots of things because someone somewhere decided to be “open” with his/her idea, opinion, innovation, invention etc. How would you have easily found a solution to a problem, an answer to a question, or read about people’s stories if they had kept it to themselves? Be it on a website, forum, blog, or whatever medium you prefer, start writing!
After all being said and done, the past few months of learning programming have been challenging yet interesting. I am not where I want to be yet (badass) in fact I have barely scratched the surface, but I’m definitely not where I used to be (total novice). Going forward, I have goals I intend to achieve, improvements I want to make, procrastinations I intend to stop (e.g. learning how to use Git and GitHub and of course start pushing meaningful projects there) and challenges I want to overcome. I love to see programming as a journey, one that never stops and not as a destination, that way I’ll keep reminding myself that there’s always room for improvement and more to learn. If I’m to summarise my journey so far in three words, they’ll be: Goals, Growth, Grateful.