…..My Journey !!! So Far…
To give context and better frame how I became a programmer, I want to give you a bit of context on my journey so far.
Since a young age, I had an interest in technology and computers. I remember when I watched Hackers for the first time in 2000. It was a couple of months before my 10 birthday. Before that point, I thought of computers as another platform where I could play video games also working on DOS and paint that time. I had no idea of the capabilities of a computer and soon enough, after watching that movie, my imagination was captivated. It wasn’t until some four years later in 2004 that I would have access to a computer on a regular basis.
I was in my second year at High School, and I had access to our school’s IT labs. Almost every single day after school I would make my way to an IT lab and explore the Internet.
Being a video game fanatic, I’d always be visiting and hanging around video game websites and online communities. At this point, it hadn’t crossed my mind that you could build this stuff. It wasn’t until I saw a few of my friends begin the process of learning how to build them that I was immediately compelled to do the same.
Back in 1999, websites were graphic-orientated and so my original line of thinking was to learn how to create these graphics as a part of the website building process. A friend of mine gave me access to his licensed version of Adobe Photoshop, and I started to teach myself how to create graphics that I could use online to construct these websites.
While I spent my spare time teaching myself how to design, my friends were already building simple websites with their knowledge of HTML. I remember looking at HTML back then and feeling intimidated by it. Regardless of intimidation, I quickly found out that you couldn’t design something, slice the design up into individual images, put them online and call that a website. I had to understand the fundamentals of what makes a website work.
8 Years Later
So, it’s 2007. In the last eight years, I graduated from High School with enough grades to go to College. I sat a two-year course at College and graduated with a 3-year National Diploma in Web and Graphic Designing , now I am doing four-year degree in Computer Sciences .During these eight years, I never once stopped designing and coding.
Before making any decision, I always asked a handful of web-related developers ,
“What do you value more in a web designer or developer; a degree or industry experience?”
Unanimously, they all replied with,
I decided to make the jump. In May 2008, I left teaching job of IT and start seeking full-time employment as a web designer while working as a freelancer in the interim.
It was this month that Apple launched the very first iPhone and I couldn’t have been more excited to get my hands on one!
Since Apple’s iPhone announcement in January, OS X Developers were determined to write native software for the device. Apple responded to this by showing developers that they could build amazing web apps specifically targeted to the iPhone platform. For me, this was great! I had taught myself the necessary skills to jump right in and start hashing out some super-simple web apps for iPhone. Still, this wasn’t enough. By January 2008, Apple announced iPhone 3G, iPhone OS 2.0, and as we all know the App Store. The App Store changed everything.
The App Store Influence
In 2008 during Apple’s worldwide developers conference, Apple demonstrated how developers could take their knowledge of OS X development and bring it to the new iPhone OS platform. Apple released the same toolset that they used to create the apps that shipped with iPhone, and I couldn’t wait to get my hands on that toolset!
No sooner had I downloaded Xcode, I realized I might be in for a bit of a steep learning curve. Not only did you write code in one app and design the UI in another, but I also found out that developing apps would require a little more than mastery of these development tools. It would require knowledge of the programming language “Objective-C”. I knew straight away that if I wanted to build apps for iPhone, I had to learn how to program.
During 2010, I landed my first full-time job as a web designer. I felt such a wonderful feeling — I was being paid to do what I love! Even though I was hired to design, I wanted to start building apps too. I decided to learn Objective-C in my spare time via various online resources.
Anyone learning to program for the first time realises soon enough that this isn’t something that you can learn overnight. Far from it! It would take countless amounts of reading, note-taking, practice and more to learn not only how to program but the concepts and paradigms that come with programming. It would be a few years until I realised, you had to learn not how to program but how to think.
It wasn’t long after I attempted to teach myself Objective-C that I felt this was something I couldn’t do. I wanted to be a programmer. Soon enough, when I came across things like Integer, Double, instantiation, inheritance, and countless others, I honestly felt like I was too late in life to learn this. Not to mention, I was in the first year of my career.
On and Off
2008 to 2010
During these couple of years, I noticed a pattern emerge. At least once a year I would dedicate a few days to teaching myself Objective-C. Each and every time, however, these few days would end in the same way. I’d stumble and hit a brick wall in my learning. Regardless of how simple the app was that I wanted to build, there would always be some part of it that would take me down a path of new learning. I’d start reading about a new concept that I had to understand to be able to implement something. No sooner had I realised this, I felt like I knew nothing at all and that programming as a whole would be something that I’d be passionate about but have to forgo being able to do. Upon reflection, there’s a reason for this that I’ll go into a little later on in this article.
In 2010, I purchased a book called Programming in Objective-C 2.0 by Stephen G. Kochan. If I thought I knew a little about how to program before I bought this book, no sooner had I started to read it, I found out I knew nothing about how to program. Without realising it, “failing to understand” would become a pattern and it would still be a few years until I realised what was happening here.
When I reflect on this period, I always remember the example that Kochan gave in his book to explain instantiation. It’s the example that I use today to explain this concept to friends and colleagues who are learning how to program. It’s funny how something like that has stuck some five years later even though I had no idea about this concept at the time!
Making A Choice
During 2013, I worked for a marketing agency as an in-house web designer. The company had decided to outsource their digital requirements. I was left without a full-time job.
To some, this might have been a scary situation. To me, I felt that this was an opportunity. The pattern of learning and then failing to understand a key programming concept hadn’t changed in the last three years. I reflected hard about what I wanted to do and what my priorities were. It was in May 2013 that I decided that I wanted to pursue becoming a programmer on a serious level. I made a 60/40 split. 60 percent of my time would be spent learning and practicing Objective-C and the remaining 40 percent of my time would be spent working with startups.
While I could write Objective-C and build some basic apps, little did I know that sitting Douglass’ course in Objective-C basics, would be the epiphany for me. A break-through. The single point in my life that I would be able to say,
“hy ahsan… I totally get this!”
Now I am a programmer but at that time this is my first step …..
Without a good understanding of C and Objective-C it is not possible to be a competent and productive iOS developer.