eng
competition

Text Practice Mode

12 Rules To Learn Code (part II)

created Aug 11th 2020, 16:09 by Muath Nasr


4


Rating

1773 words
4 completed
00:00
5- It's Ok to Not Know
Software engineers are purportedly the profession that has the largest population of Imposter Syndrome sufferers. Imposter Syndrome is a psychological phenomenon where people feel like frauds and massively underestimate their own skills and abilities. Programmers tend to be self-critical and constantly feel that everyone else is better at programming than they. If you’ve ever felt this way, you're not alone, as studies show that a massive​ ​70 percent of people have imposter syndrome​. I recently saw a post on the Q&A site Quora where somebody asked: ​Would I get fired at Google (or another big tech firm if I got caught using StackOverflow as a reference? He got a bunch of really great answers from engineers working at Google, Amazon and other major tech companies. Anybody who has worked as a software engineer will tell you that ​not​ looking at references is far more frowned upon. In fact, I challenge you to find a single Google programmer who has not used Stack Overflow. (If you're not familiar, StackOverflow is a collaborative Q&A site for programmers). A lot of new programmers are afraid that by checking references and asking people for help they will out themselves as a fraud who doesn't know to programme. Nobody can hold all the relevant information in their head. For example, this is the name of an iOS method: It's almost 400 characters! In iOS programming, there are over 800 classes, 9000 methods and growing. In web development, there's a new framework every week. No one will expect you to be able to remember the code. This is the precise reason why we are programmers, we can get the computer to do the boring stuff for us. For example, the code for recording sound is only a short search away, why would you need to memorise it? The skill that most employers look for when recruiting is the ability to think. Knowledge is valued in a world where information is hard to come by. In the 1800s, only the rich had access to good books and good teachers. Now, everyone has all the information they had and more at the tap of a mouse. Information is losing value, the ability to think is the stock to buy. So don’t be afraid to search, to ask on StackOverflow or to find resources to help you solve your issues. The best programmers do it. The skill you need to hone is in asking good questions and understanding the answer. There is no point copy-pasting code from a StackOverflow answer if you have no clue how it works. Because StackOverflow works on a reputation system, it’s in their interest to be as clear as possible in their answer in order to be marked as correct and collect upvotes. In most cases, it doesn’t make sense to start searching StackOverflow whenever you get stuck. The first option should always be trying to figure it out yourself. So your program doesn’t do what you expected it to, but before I typed the last 3 lines of code, it was working fine. So let’s figure out what in those last 3 lines broke my app? If you really can't figure it out, start with Google. Search for your query or if you have a bug paste the error codes and the error message. Chances are that as a beginner, your programming woes will be very common and somebody might have even taken the time to write a clear and concise tutorial to help you understand your bug. As you grow more skilled in programming, the problems you’ll encounter get more and more obscure, but hopefully, if you followed the other 11 rules, you will also be a more capable programmer and figure it out yourself or know exactly where to get help. The other reason why you should start with Google is that StackOverflow’s search algorithm organises questions and answers by recency and not popularity. A lot of the problems you will encounter while starting out will have been asked and answered years ago but still massively popular. So ask wisely and you will reap the benefits from the community. One day when you yourself become a code master, you’ll be giving back to that same community and helping the next generation of programmers.
6- Be a Copycat
At the beginning of my coding journey, I thought the way to learn to code was to read a whole bunch of books. I bought books on C++, C#, Java and loads more. You name it, I had it. But they didn’t do very much other than making me confused. I read. I highlighted. I forgot. I fell asleep. Books are good as references. If you want to dive deep into delegates and protocols, read the chapter on that. But if you want to learn, ​make something​​. But what do you make? Lacking in ideas? Be a copycat. Make your own notepad, make your own MSPaint, make your own piano. If you’re into games, make minesweeper, make Tetris, make Flappy Bird. Not only will they be sort-of useful, but they’ll also be the perfect opportunity for you to figure out how to do things and get experience in finding help. Something that is brand new to the world like holographic smartphone projections, no one will be able to help you with. By making copycat apps or programs, you’ll be treading in the path that many have walked before you. This way you maximise the chances that someone will be able to offer you help and advice when you get stuck.
7- Be Accountabl
Be accountable to someone. Show your work. The biggest problem with online coding courses is the lack of accountability. No doubt there are loads of great Massive Open Online Courses (MOOCs), such as Coursera, Udacity, Udemy, Skillshare. But what are the consequences of not doing your homework or missing a month’s worth of lectures? Nothing. Nobody cares. Let's face it, internal motivation is not strong in any of us. We can always find a reason why we ​deserve​ to “Netflix and chill”. I can’t even count how many online courses I’ve signed up to and subsequently not listened to a single lecture or completed a single piece of coursework. You need accountability and commitment to learning. Think back to your university days, would have bothered to finish that essay at 3 AM if nothing depended on it? Would you have gone to any of the lectures if you didn’t care about passing or failing? This is why we try to introduce accountability into our courses. We’ve realised that matching up students with a buddy helps. Someone else who is a beginner, at the same level as you who sometimes helps you and other times needs your help. Sometimes, as people’s learning rates diverge or if you’re paired up with a lazy bugger, you can swap it up and get a new buddy. Because this system is entirely voluntary, there a degree of self-selection for people who work well in teams and are motivated by others. Just as you’re more likely to go to the gym if you sign up with your partner, you’re more likely to learn if you have a coding buddy.
So if you’re not on our course then find your own. There’s plenty of Facebook groups dedicated to those who are learning to code. There’s an entire subreddit (r/learnprogramming) dedicated to this, I’m sure you’ll find like-minded people somewhere online or offline.
The next thing I’m going to tell you will be controversial. We believe that people don’t value things that don’t have a value. This is the reason why Coursera is taking down a large number of their free courses. They saw that millions of people were signing up for it but no one was taking any of the classes let alone complete any of the projects. It was actually detrimental to students’ learning to offer a free course. We all have a degree of hoarding tendencies and it’s very easy to signup for a bunch of stuff that the future-you can suffer through. There’s always tomorrow, she says. So if you are driven more by external motivation than internal, try to use a little bit of financial motivation to drive your learning. Think about how much a life skill is worth to you and put your money where your intentions are. See if you’re engaging with the course content more with or without the financial commitment. There are plenty of places where you can pay something affordable to motivate yourself to start a regular learning habit. The final part of this rule is to try and find ways of getting assessed. Ok, so getting assessed is right up there with death and taxes in terms of how much people enjoy it. But when learning anything, it’s always important to get feedback. You will get an objective assessment of your current skill level, instead of feeling like an imposter or brimming with false confidence. Coursera has a system where the students mark each other's’ work. At the App Brewery, we use Github education to test your code and look for bugs and problems with your code. But if you’re on a coding course that doesn't have a system like this, then it’ll be worth your while to find a code mentor who can review your code and give you feedback. Only what's measured can be improved.
8- Keep Learning
Being a good programmer is a bit like being Madonna. Don't run out and buy your cone-shaped bras just yet. What I mean is programming will keep evolving. In order to stay relevant, you have to keep re-inventing yourself. There's always new trends, new technologies and new languages. Great programmers relish in learning new things, even if it means they become a beginner again.
The world will keep moving, if you stay in one place, you’ll eventually be left behind. I know programmers who never learnt anything else apart from Fortran. I know Objective-C programmers who can’t persuade themselves to make the leap and learn Swift, even though Apple is telling developers that Objective-C will be phased out. We all know that Apple never makes threats that they don't carry out, just look at the optical drive (and soon the headphone jack?). Don't be the optical drive. Or rather, don’t be the laptop that’s still trying to play CDs. If your needs change, learn to use a new tool. Keep learning, stay relevant. Are you a web developer who always wanted to get into mobile development? Pick a platform and learn iOS or Android.
 
 

saving score / loading statistics ...