I’ve always been interested in computers and tech, and for the past couple of years, I’ve been having an on-and-off relationship with coding. This time, however, it was different; I was serious and I decided to start my development journey by learning extensively. After doing lots of research, learning from a variety of sources online and offline, going to Meetups, networking, applying for jobs etc. I can now firmly say that I’ve learned a lot — not all there is to know, but enough to say what’s what, and to avoid you from facing the bad or harder experiences I’ve faced.
I took the time to write these tips on what I’ve learned so far to save you or someone out there some time and frustration. This took a couple of weeks to write so I hope that all of these tips are as useful to you as they are to me.
When you start programming it’s like opening a door to a dark room that’s not only unknown to you, but you also don’t know where the light switch or anything else is. Don’t think of it as a room in a horror movie though. That might give you a slight relief, but it’s up to you how far in you go, how much you stumble and how long it takes for you to find the light switch. It’s also up to you to keep replacing the lightbulb after finally turning the light switch on. And so, you keep proceeding to the other dark rooms, steadily acknowledging and learning from your weaknesses and recognising patterns that can help you as you advance.
Programming is not hard
Despite what people say, it’s not really that hard, and no, you don’t have to be a math genius. I hate math, I was terrible at it, but here I am, I understand and so can you. It does, however, require lots and lots of dedication and practice. Khan Academy offers tons of free courses and guess what, you can practice your math on their website for free.
Find what you’re interested in and stick to it
Designer, front-end, backend, full stack? When you’re at the “I don’t know yet”-phase, make sure you research a lot and always try out free sources, the best ones are Free Code Camp, Codecademy, Udemy and YouTube of course.
Regardless of interest though, one of the first things you should do is learn the Command Line and Git, and upload your files to GitHub or some other platform. Why? GitHub is — in simpler words — a web-based Git repository, which is used for (mostly but not exclusively) code. If your computer breaks down, you’ll still have a backup and you can even access it from other computers. And you can collaborate with others and make changes at the same time — afterwards, you can easily merge your work (version control). It’s essential to know, fairly easy and quick to pick up and you can learn from a variety of places online for free, here’s one. Before you know it, you’ll make your first commit. Make sure to always leave a message when committing, so you, your future self and/or your colleagues remain on the same page.
Use learning techniques to focus and practice every day
Try Pomodoro/focus timers or use the “Facebook-effect” or the “anything you like doing-effect” — why not use what ruins productivity to be more productive? Trick your brain, focus and practice, practice, practice. Get organised, code by a schedule or any free time you have. Try to manage and increase the time that you code, and try to maintain that schedule for over a month; only then you’ll know if you can do this for a living and keep up. Most developers work 40-hours a week and when they get home from work, they spend some more time freelancing, doing projects or learning. My focus timer of choice is Tide.
Don’t over-practice though
Take regular breaks, rest and you should also keep an eye on your health.
When coding, it’s hard to keep a sense of time. And most of the time you don’t want to be bothered so you spend extensive hours sitting in front of your computer, eating things that are easy/quick and drinking coffee or energy drinks to stay awake and keep momentum. Eat healthily and drink plenty of water, I know you heard it somewhere, but it’s the truth.
Furthermore, if your computer does not have this feature already, make sure you install f.lux in order to protect your eyes from blue light exposure emitted from your screen.
It’s okay if you don’t understand
You will make lots of mistakes. Most developers don’t know things out of their heads, most of them also get stuck, most of them make typos and the simplest mistakes — a key skill that all developers have, though, is the ability to search thoroughly online. Use this opportunity to do some research and get more information.
If you get stuck, try being a bit stubborn, learn to solve things on your own. If that’s not possible, get the info needed to become unstuck and proceed. But whatever you do, make sure you don’t copy paste; there’s more value in attempting something on your own and failing, than doing it successfully by copying. You are lying to yourself and will get even more stuck. In this case, search no further; MDN and Stack Overflow are your friends.
It’s not always easy
Okay, this might be a bit contradicting to what I’ve said earlier but bear with me. You will find times where you really don’t understand something, even though you have searched for it all over the Internet. It’s easy to become stressed, overwhelmed and anxious to the point you just burn out, so it’s important to remain calm and work through to get unstuck. Try doing something else, maybe your favourite activity or meditate (start with this one and thank me later); not only will it keep you mentally sane, but healthy as well. Going to Meetups, and networking with others also lessens the tension sometimes.
It’s important that you document these mistakes since they can help you when you get stuck again with the same or similar issues. Heck, document your whole journey, because documenting things gives you a sense of control on your performance, hence giving you the opportunity to improve. Don’t trust your brain to store your documents, our brains are really powerful but with all the other stuff we deal with daily, it might become really crowded up there and as a result, distort the documentation of your journey.
Don’t compare yourself to others
Look, there are kids who are born coding and then there are you and me, don’t let the progress of others discourage you. It’s not a race, even if it were, you know how quickly things can change. But this is an ongoing process, you’re never too old to start and you’re never done learning. You don’t have to have it all figured out and let me emphasise this one, you don’t need a CS degree. In fact, a lot of people quit their stable jobs and careers to become self-taught developers. There isn’t a straight path or a right path to anything — if it’s smooth sailing for you, take a step back and analyse where and why you stopped challenging yourself.
Write clear, clean code
Know the difference between DRY and WET code — some folks argue that one is better than the other, make sure you know why, but really it’s up to you, implement the one you prefer into your coding style and be sure not to overdo it.
Write code that not only you can understand right now, but that your future self will still understand. Don’t assume, don’t leave anything for interpretation; write code that you can be proud of, and that if something were to happen to you, that others can still understand. Do this by writing comments in order to make things clear, write the purpose of the lines you type out.
“A comment doesn’t say what, a comment says why, or alternatively, if you’ve had to write a line of code that could be confusing, you could explain how.”
— Kyle Simpson
Better your workflow
Once you know some stuff, work on your efficiency. Don’t approach your work the same way, use shortcuts or even better, use tools and frameworks. Download or make yourself a cheat sheet — it saves you time and creates space in your brain to learn new stuff.
Having the right mindset is nothing if you don’t stay humble
If you managed to learn a language, don’t become insulted just because someone tries to teach you something you already know, or underestimates your knowledge. Don’t brag, stay humble; there’s always something new to learn. Keep on relearning and reviewing. It’s a continuously ongoing process.
Don’t stay at the surface, push yourself to go deeper and further; don’t learn just enough to keep up or to get by. There’s no half-baking in coding, if you’re skipping through, you’ll most likely get stuck at some point. A lot of people might disagree with me on this one, and I kinda disagree with myself a little bit as well, but thing is, it’s better trying to master one thing, rather than half-baking your way through things and being a master of none.
Tip: Reverse engineering existing websites
You don’t always have to be behind your computer
Coding doesn’t necessarily mean that you have to be behind your computer 100% of the time. Listen to podcasts, research, read articles, books and download apps on your mobile that you can learn from on the go. Enki is one of my favourite mobile apps; it’s a flashcard app that tests your programming skills every day.
Other useful mobile apps: Py, DevSlopes, Mimo & Lrn.
Don’t think that the courses you have taken are irrelevant
Put courses, projects, hackathons, boot camps on your CV/resume/LinkedIn, so employers can see that you are serious and you mean business. It’s good for them to see that you are busy investing time in coding in your free time. If you don’t already have a LinkedIn, make sure you make one and follow the instructions in this video for further tips.
Getting yourself out there
While I’m at it, I think it’s important to mention that you shouldn’t wait to be ready in order to apply for jobs. As mentioned earlier, you will never be done learning, but that doesn’t mean that you have to be all depressed about it. Get yourself out there, build your portfolio, network, apply for jobs — don’t forget to mention your availability to relocate.
Most job requirements out there are basically a set of hopes that a company has, it doesn’t necessarily mean that you have to have all of them because most requirement combinations are not even realistic for the position you are applying for.
You don’t have to get a job, you can just start out as a freelancer, but my advice is to just get a job first, get your feet wet, gain some more knowledge and after a couple of years you can choose to spread your wings.
Looking for a job in tech is really hard and can quickly become extremely stressful. When you apply for jobs, as a beginning developer, be ready to be rejected a lot. Something I picked up a while ago is that no matter what, send the company what I call a “rejection-email” thanking them for their time and consideration, expressing that you are a bit sad or disappointed for not getting the position and asking for feedback on how you can improve for the same or a different company. It’s very rare and it shows the company that you really care, besides, what harm can an email like that do? At the end of the day, we’re all humans.
Do yourself a favour and don’t take the easy way out
It might be tempting sometimes not to take the easy way out. Challenge yourself to get hired because of your skills, not because of luck. In other words, don’t take the easy way out and go work with/for people you have some sort of familiar/friendly/romantic relationship with.
What I mean with that is; if you have a family member or a friend that owns a company, don’t go work for them — it’s not a real challenge to yourself. I know, I know, who wouldn’t want to take the easy way out? But the thing is when working with/for people you already know, you’re not improving in any way. Family or friends sugarcoat things and accept you just the way you are — you don’t get to have the real experience, you don’t get to experience people being insensitive to you, hence limiting your ability to grow.
Now I’m not saying don’t make things for them — when starting out it’s great to make basic websites or programs for the ones close to you — it’s all about gaining experience, however, in the long run, you should avoid that as well. Working with family and or friends is not a good idea, period.
If you are a girl, fear not
It’s going through some changes, but we all know that it’s still a male-dominated industry, and sadly there are places where people look down on you, assuming that you are just tagging along with your male colleagues. It’s up to you to step up, show your skills and make them realise that you are capable. Depending on where you are in the world, which company you land a job at, you will or will not have to work harder but make sure that you always believe in and stay true to yourself.
And last but not least…
Give back to the community
Become a volunteer, mentor someone, share your knowledge, start a blog, tell others about your experience, help out with open-source projects on GitHub, join a community, you name it. The possibilities are endless; anything, as long as you don’t keep it to yourself.
Free Code Camp — http://freecodecamp.com (free)
Codecademy — http://codecademy.com/ (mostly free)
Pluralsight — http://pluralsight.com/ (paid subscription)
edX — https://www.edx.org (mostly free, pay for certificate)
Udemy — https://www.udemy.com (a couple of courses are free)
Udacity — https://www.udacity.com (mostly free, pay for certificate)
Khan Academy — https://www.khanacademy.org (free)
Eduonix — https://www.eduonix.com (a couple of courses are free)
SoloLearn — https://www.sololearn.com (free)
Code School — https://www.codeschool.com (paid subscription)
Code College — http://codecollege.ca (pay per course or paid subscription)
Dash General Assembly — https://dash.generalassemb.ly (free)
Skill Crush — https://skillcrush.com (mostly free)
CSS Tricks — https://css-tricks.com (free)
Quora — https://www.quora.com (free)
Stack Overflow — http://stackoverflow.com (free)
Lambda School — https://lambdaschool.com (a couple of courses are free)
Launch School — https://launchschool.com (paid subscription)
Hacker Rank — https://www.hackerrank.com (free)
Coderbyte — https://coderbyte.com (free)
Egghead.io — https://egghead.io (a couple of courses are free)
Coursera — https://www.coursera.org (a couple of courses are free)
Firehose Project — https://www.thefirehoseproject.com (paid subscription)
Hack design — https://hackdesign.org (free)
This was me giving back to the community for the first time; I really hope that all of the above are as useful to you as they are to me. As these tips are written during a time in which I’m experiencing burnout symptoms.