Written by: CodeKristi
The trick is growing up without growing old. ~Casey Stengel
We lived on a farm for most of my childhood. We had all the normal farm things: huge yard (surrounded by an even bigger farm); geese and chickens and cows and a lot of dogs; a river with a dam built in it; tractors and fields with various crops in it; and borehole water. I was a free child, living in nature and spending time with my family; and I lived my happiest years on that farm!
Our farm was different than most surrounding farms, though, as for a few years we didn’t have any electricity there. Shocking, I know!! The connection fee from the municipality was really high, so we made do while my parents saved up to pay for that. We used a diesel pump for water; a gas stove and fridge; gas lamps and candles for light; and water was warmed by making a fire every afternoon. Basically, we lived in the Middle Ages for a few years..! Luckily, we had a generator which we used to run our washing machine on, and for emergencies when we really needed electricity, however, it was too small to use for a whole household’s electricity needs.
Due to this, I didn’t grow up spending hours on a computer or the internet. When we did eventually get electricity, my elder brother mostly used the only PC in our home for games, and as I was an absolutely devoted bookworm, I really didn’t mind. Computers were something I needed for my termly research assignments in Biology or Science, and that was about it!
You are cruising along, and then technology changes. You have to adapt. ~ Marc Andreessen
Then I got to university, and suddenly everything needed to be typed out in fancy fonts, and everything had to be researched on the internet, and written in a non-plagiarised format. That was a HUGE learning curve for me!
After a while, I figured out the finer details of using Office Word and Powerpoint, and I was able to do detailed research using Google and Google Scholar. And then there were the social media sites and different email providers that I learned to use. I still didn’t know much more and didn’t feel the need to learn much more.
Of course, the fact that I had a really old and slow PC didn’t help at all! Often times something (hardware or software related) would go wrong, and I wouldn’t have a clue where to start to fix it. And you only have so many tech-savvy friends you can call after 12 at night, or in the middle of the exam to come and fix your ancient computer…
So that was my first introduction to the behind-the-scenes part of computers: figuring out how to get the screen to work; or how to get rid of the very minor and annoying virus on my browser; or how to get the university software to display correctly on my screen…
Another interesting development in my life was the fact that my parents started treating me like the computer wizard – pun intended – of the family. This happened even though one of my siblings spent hours on a computer (as mentioned earlier), while the other two took computer-related subjects in high school. This left me as the least technologically educated out of the four of us. Regardless, my parents would ask me for help with everything: from editing a word document or sending an email, to buying new hardware!
The only true wisdom is in knowing you know nothing ~ Socrates
This belief of my parents that I knew everything, and the fact that I am in love with learning and knowing things, helped me to start improving my very little knowledge about the world of computers. My love life also undoubtedly played an important role in my knowledge development, as I fell in love with a software developer, and ultimately got married to him..!
An essential thing to know about my husband is the fact that he is completely and utterly passionate about programming. He goes to work every morning – as a software developer. Then he comes home late afternoon and he starts watching programming videos or read blogs / articles about the topic. Then after dinner, he works on his own programming projects, and if there’s time left, he will read a few pages from a programming book. Some evenings he will do something not programming-related, but most evenings will be spent in this manner.
Just like me, Christoph is a knowledge-enthusiast. Since the beginning of our relationship, we would spend hours talking about any and every topic. Naturally, our own passions and interests would come up, and thus software development has been discussed quite a few times.
As I had no background knowledge about the topic and didn’t understand the subject vocabulary, Christoph had to use concepts and words I would comprehend. He started explaining software development conceptually by using various metaphors and real-life examples. So even though I didn’t – and still don’t know anything practical about software development, I do at least understand some of the underlying concepts. Christoph is also very focused on coding correctly, which means he is constantly improving his coding techniques and researching best practices in the field. This is an important aspect for me as well – when I am going to learn how to code, I would want to do it right.
Another thing we have in common is that we both enjoy solving problems. Coding as a profession is mostly about figuring out and solving problems. Consequently, Christoph regularly asked me to learn software development – just as a hobby – to see whether I will enjoy it as much as he imagines I will. But my life was busy and full of other, more interesting things: my own hobbies, my Honours Degree studies, and then a new job with all that it entailed…
Don’t invest in anything that you don’t understand. Do your research first. ~ Paul Clitheroe
When I did finally seriously start thinking about learning code, I tackled it with my usual method: first, do as much as possible research about the topic; think about the first few steps to take; decide whether it’s possible and worth it; and only then, I will start doing it. As you can see, I use a very cautious and well-considered method…
Unfortunately for me, at Step 1 (my research phase) I came to an upsetting conclusion:
Learning to code from scratch and without guidance from a course or study program is next to impossible.
- Yes, there are thousands of blogs, articles, videos, etc. on the topic available on the internet.
- Yes, you can go to various forums and “ask me” pages to ask a question when you’re unsure about something.
- Yes, you can buy books and ask people to help you.
- There’s no guidance or tips telling you where to really start.
- There’s no-one who explains to you – clearly – what are the functions and purposes of the many programming languages (as they each were developed with a specific purpose in mind), and why you should rather want to learn these two than those three.
- Depending on which language(s) you decide to learn, there are very few people to no-one who will explain the first few fundamental concepts / content you will need to know in order to start.
- Then, of course, there’s another important decision (going hand-in-hand with deciding on a specific programming language). Would you rather learn a functional language or rather choose object-oriented languages?
(Honestly, I am still not a hundred percent sure what the difference is, but as soon as I figure it out clearly enough, I will write a blog about it.)
The point is, after my initial research I was so confused and overwhelmed, that I just left it!
I did ask Christoph questions about my biggest confusions, but to share his knowledge from his about 10-years-experience perspective with me with my zero knowledge, was really difficult – for both of us. So for a while there, I went back to my own busy life and forgot about the notion.
If you fail, never give up, because F.A.I.L. means ‘First Attempt In Learning’. ~ Dr APJ Abdul Kalam
As I mentioned earlier, I totally love learning new things and pushing my own knowledge limits. So the fact that I wasn’t able to figure out how to start learning about software development, really troubled me. Also, Christoph continued to ask me to try and learn how to code, and these two motivations led to me circling back and trying again.
Since my first round of research had been done, and as I had had time to think about everything, I was able to make a more informed decision as to what I wanted to do. In the meantime, I had also heard about a few possible options which I could explore.
- Solo Learn is a mobile app where you can learn different programming languages. They assume you know absolutely nothing, and thus they start from step 1. They also only teach you between one to three concepts per lesson, which means it is not too overwhelming.
- Udacity has free courses where you can learn a variety of things, including programming. They offer you the opportunity to upgrade to a nanodegree, which means by paying a fee, you get certification to prove you completed a course.
- Coursera is another option to look into. It’s a website which combines free online courses from universities across the world. You can then sign up for the specific course(s) you would like to do. As it’s university courses, it’s not always focused on the limited skillset of newbie programmers, but there might be useful and specialised courses available.
- W3Schools is another website focused on web developers, which has free tutorials and examples.
As you can see, all four these options are in a course / lesson format, which brings me back to my initial point: Learning to code from scratch and without guidance from a course or study program is next to impossible. Luckily for me, there are people who realised this and are filling this niche with possible options!
Paid options that might be worth looking into:
- Team Treehouse is an online coding school with courses made up of videos and quizzes to help you learn.
- Code School is similar to Team Treehouse, as it also has various courses you can sign up for.
- Pluralsight has not only IT courses, but also include creative courses you can sign up for.
We have a strategic plan. It’s called ‘doing things.’ ~ Herb Kelleher
I decided to focus my learning on the basic skillset needed for website development. This will ensure I stay focused on specific topics and that I can work out a general timeline with specific goals. Web development, in the context of software development, needs very basic and limited skills and knowledge. Another aspect that makes web development as an introduction into software development beneficial is that it is practical and useful almost immediately.
To learn the basics of website development, I need to learn the following three languages:
Currently, I am using the Solo Learn app to learn the fundamentals of each of these languages, and then I will have a look at what Udacity has to offer.
I am also considering using this knowledge to transfer to mobile app development. Christoph mentioned I should look into using Cordova or Android Studio for that. This is further in the future, so when I get there I will share what I learn with you.
For now, I have started with a 6-month timeframe. I am not sure how practical and realistic it is, but for the moment my goal is to be able to at least develop a really basic website in 6 months. I haven’t set any more goals at this time since I just want to get started and determine how quickly I am learning.
The purpose of this blog is to share everything that I learn along the way, share every hurdle and every tip I pick up, and to hopefully make this journey of learning how to code a bit less complicated for someone else.
If you are on a similar path, or if you have any tips / ideas to share with me, please leave a comment or get into contact with me. I would really appreciate it!