Pointing newbie programmers in the right direction

·

9 min read

No idea where to get started on your programming journey?

Have a read through this and learn how to avoid the most common mistakes newbies make

I spend an inordinate amount of time moderating, chatting and... trolling on a bunch of large programming servers on Discord. During my time in these servers i’ve seen swathes of newbie programmers joining the server and hijacking conversations with any number of the exact same questions every single time.

I’m well aware that just writing a medium hashnode article about this sort of thing won’t solve the problem but perhaps i can help provide some answers to these common questions that never stop coming.

What language(s) should i learn

Before you start pondering about what language(s) to pick up, you should ask yourself what it is you actually want to do. I’d estimate that 99.99% of the time when you ask a newbie (who asked this question) what it is they want to do, they have absolutely no idea.

A harsh reality that a lot of newbies don’t seem comfortable with is that no 1 language stands alone, you’re going to need to pick up multiple languages to get the job done in almost every scenario.

Here’s a few off the top of my head that’d be worth checking out;

I want to build websites/web apps Look into HTML, CSS and Javascript.I’d also recommend investing some time into one of either PHP, Ruby, C# or Java.

I want to build mobile apps Look into Java for Android and Swift for iOS which are used for building apps natively for that specific platform. The industry is largely heading towards frameworks that allow you to build 1 app which can run on many devices however so i’d recommend looking into Flutter (Dart) and React Native (Javascript) as well

I want to build games Look into C# which is used by the Unity Engine and C++ which is used by Unreal Engine and CryEngine.

How do i find “Good” resources

The first issue with this question is that there’s no one “Good” resource for anything online, let alone programming. You’re going to spend a lot of time trawling through outdated, incorrect, and flat out stupid resources before you come across one that works for you.

Nobody is the de facto “Authority” on anything programming, so it’s very important you learn how to find your own resources that help you get the information you need.

The second issue with this question is that Google exists, seriously. Stop waiting to be spoonfed information, jump on google and punch in the thing you want to find into the search box.

That being said, if you’re wanting to get into web development a few of my preferred learning resources in no particular order are;

Newbie Lock-in

This is a phenomena i’m seeing an awful lot in the land of Javascript lately. Don’t be the guy that identifies themselves as a “Newbie” and won’t go anywhere near a resource that isn’t plastered in terms like “Beginner” and “Newbie”.

You don’t build muscle by lifting weights you could pick up in your sleep, you build muscle by lifting weights that make you pull strange faces while trying not to turn your pants a funny colour.

I’m not saying immediately run off and try writing a compiler, but stop tunnel visioning on in the “Beginner” stuff because you’ll never get any better. Have a go at something that’s been posted, if you don’t get it that’s absolutely fine. Programming isn’t about doing it perfect first time, it’s about iteration after iteration, making it progressively better each time you do it.

How do i get a job/learn a language in [insanely short timeframe]

This question is rarely met with a response that isn’t openly hostile because many people in Discord servers that have been programming for many years find the concept of someone wanting to speed through things quite disrespectful.

Programming is an art as much as it is a science, it’s a craft that many spend their entire careers perfecting.

To actually answer the question, you don’t. You may well see claims all across the internet that you can watch a video, buy this course, read this book and “be a [LANGUAGE] expert in X hours!”, well it’s all complete and utter Bulls*.

You’re going to have to pour some serious time into your craft to get good at it, there’s plenty of information out there that will help guide you in the right direction but there’s no shortcuts here, be ready for that.

How do i know i’m good enough to get a job?

Another question with an unfortunately short answer — “you don’t.”

There’s no arbitrary point where you’re suddenly good enough to get a job doing this kind of thing professionally. The best advice i can give you is just try it, apply for jobs, do interviews, see what people say. Since employers will be the ones paying you to do this for a living, they’re the right people to ask what kind of skills you need to be “Job ready” — just be prepared for a lot of different answers since no 2 employers need the exact same skills at any one time.

I want to learn X but i already learned Y…

This one is really frustrating to see, far too many people seem to have the idea in their heads you only ever learn 1 programming language and that’s it, you can never learn another one ever again, which is just… why?!

I’ve got no idea where this idea came from but it’s absolute poison, and whoever’s perpetuating it needs to kindly leave the internet. It’s not like your brain operates on a credit system and you used them all learning Java, there’s absolutely nothing stopping you picking up more languages along the way. I thoroughly encourage you to learn multiple languages, it makes you a more versatile programmer who’s capable of identifying the most appropriate language for the problem.

The only caveat to this advice is don’t language hop, don’t jump between languages after writing a successful hello world because you don’t understand the language yet. Pick a language you like, or you’re somewhat familiar with, learn your way around the core concepts and features, solve problems by building solutions with it then move onto picking up another language by solving the same problems with it.

The core concepts of programming transfer over really nicely between most languages, it becomes a question of just learning the syntax and style of how another language does things.

I need project ideas

My standard answer to this question, which i’ll include here, is build an app that spits out app ideas.

I’m not joking, i’m not “meme’ing”, this is a legitimate answer. Regardless of what you actually build, in just about any scenario it’s a case of Data In, Data Out.

Build an app that lets you add project ideas to a list, and then shows you that list, or maybe it shows you a random item from that list, maybe you can search the list, maybe you can filter and sort the list, maybe you can build a web API for the list so other people can get your list of ideas.

You see where this is going.

And finally, last but not least;

Learn how and when to ask questions

Knowing how to ask a good programming question, and when to ask it is a very important skill that newbies need to pick up as early as possible.

A good programming question requires context, it requires explanation, you can’t just dump a 50,000 line block of code onto the page and expect someone to go Ah! THERE’S the problem!

Likewise you can’t just spam question after question at a community, because they’ll get tired of you quickly and stop answering your questions… or ban you, whichever.

Posting a snippet of code, and an explanation of what you’re trying to do should be your last resort — it’s your nuclear option. Ask just about any experienced developer and they’ll tell you the same thing, it’s a last resort.

As for why it’s the last resort — when you’re doing this whole programming thing for a living, while you’re at work you’re most likely not dealing with your own code anymore, you’re dealing with a company’s intellectual property.

You might have written it, but it belongs to the company, and posting said intellectual property without going through all the hassle of getting permission can land you in unbelievably deep trouble. Your default mode for finding answers to programming questions should be Google, you should be a freaking Google ninja, you should be able to find a grain of salt in a bag of sugar with the sheer power of your Google-Fu.

That being said, at some point you’re going to be at your wit’s end, you’ll have visited page 3 of the google search results, you’ll have tried every solution you can think of and you’ll still be getting absolutely nowhere, so it’s important to know how to ask a good programming question.

Step 1

Clearly explain, in the simplest and shortest possible terms what it is you’re trying to achieve;

I’m trying to filter this list of Sales items down to only sales items that were created between 2 provided dates

Step 2

Give a brief overview of things you’ve already tried and the results;

I’ve tried using Array.map and Array.filter but it seems to return every record regardless of what dates i give it

Step 3

Provide a snippet of relevant code (anonymised and stripped out of course) where you’re attempting to solve the problem, if you haven’t provided enough code or there’s other parts that might be necessary the community will ask you for them, so be prepared to dig those out and strip them down for posting if necessary

const salesItems = this.salesService.getSalesList();
function findSalesItems(date1, date2) {
    return salesItems.filter((a, b) => { //... });
}</span>

Step 4

If you get an answer that works, Make sure you thank the person, and mark their answer as the best answer if you’re using Stack Overflow, your question will help any future programmers that happen to be stuck in a similar sitution to you, so make sure you write any comments/responses in a professional fashion and make everything clear.