Hey everyone!
Starting today, I'll be sharing some small programming lessons, mostly based on game development as a way for me to find a proper format to share technical knowledge and also help people interested in software development to get started.
In this first post I'll be sharing a "survival guide" for introducing new developers with what they should know and be aware of, mind that these are my personal opinions and might not apply for you, you can believe them or not, you're the one that should find the right answer.
With that said, here's my pearls of wisdom.

You're in golden time

If you want to start learning programming today you're quite lucky.
Technology has evolved so much that you're able to use almost anything to write and run code. Also, many high-level programming languages are available for you to learn, easier and faster than ever, along with a large community and lot of contents at your fingertips.

There are no geniuses

Programming is only for nerds? No way! Even kids can learn to code and you're no exception, there's no right time or place except for now and today.
As long as you're capable of thinking and speaking, you're capable of coding too.

Free as in beer

Nowadays, you can learn anything you want for free, the time of costly books and courses has ended.
If you find something for sale, you surely can find the same information at the cost of nothing elsewhere too.
I work as a developer daily and, ever since I was a noob, I haven't spent a single cent, ever.

The editor doesn't matter

"What editor do you use?"
"Can you do X with editor Z?"
"Would Y still work if I use editor W?"
These are some of the questions I've been asked in the past, and my answer is always the same:
"It doesn't matter, as long as it can edit text, everything is fine."
Some editors includes cool features like auto-completion, linting or symbol trees, it's all cool for sure, but you actually need much less than you think.
If you're pondering about buying a license for using a certain editor, you should think again, even a notepad is a better tool in comparison, and I used that too.
What you should really look in any editor is:
  • Syntax highlighting: To have your code easily scannable, some people don't even need this.
  • Quick file switching: Your project might be made of hundred of files, you need to jump on any of them quickly
  • Responsiveness: Hopefully, it's obvious that writing words in a plain text file shouldn't take more than a single moment to show an output, yet I had so many bad experiences with famous editors I've tried in the past...
  • (Optional) LPS Support: A Language Server Provider (LSP) is a standardized way of implementing code-completion and linting, using it simplify debugging and help on writing code faster, but it's not required, as long as you know what to do, having it is just an extra

Don't delegate beauty

Writing code is just like writing poetry, it need a good structure and rhythm.
In code this structure has no rules and it's often decided by the developer, the general rules depends on the language and how the syntax works, this freedom can lead to a big mess, especially if you work with others.
Luckily there's usually an official style guide for each language that define strict rules for how things should be named, spaced and more.
But there's a catch, some editors and utilities allows you to auto-format the code for you, personally, I see this as a bad thing, because if you work long enough in software development you'll end up in an environment where those tools are not available, and it's tiring to fix unreadable code made by people with seemingly much more experience than yourself.
What I recommend is: use a linter, it'll show you what is wrong and YOU have to fix it, entirely by hand, this way you'll slowly learn how the code should be formatted and you'll be able to write beautiful code even on a rock with a your nails.

If you feel shame, you're getting better

Coding is like painting, the more you do it, the better you get.
As time goes by, you'll notice that your previous code will look bad, that's just because you have learned more and you start to notice the difference.
In the beginning, you should go for really small and quick projects, you'll be greatful later to not have started building you dream project too soon.

Please use your own brain

AI powered tools have changed the way we think about everything, some claims to be able to replace many human jobs, software development included. I'm pretty sure it'll be fine for at least some decades.
AI tools are only good at one single task, tell us what we want, they don't reason on the implications of their replies, if they do, it's just a database of keywords that take over any nasty things the AI might actually reply with.
If you use an AI to generate code it almost feel magical, but it's just a copy and paste from somewhere else, after analyzing the structure and adapting to your request.
If you're trying to learn to code don't let an AI write the code for you, use your brain.
You can use AI though, but in a different way:
  • Code review: Have it analyse your code and ask what might go wrong
  • Inspecting: Take code from others and ask for help understanding what it does
  • Idea generator: If you're missing that something to take things from good to awesome, ask it for ideas
Here's a secret, you can let an AI write code for you, but only what you can write yourself, an AI shouldn't replace your thinking, but it can replace your hands.
If you know how to do something you can avoid boilerplate code or writing complex algorithms by letting an AI write those for you, just be sure you understand what the code does, you wouldn't like having code that is slow, broken or potentially dangerous.

You'll live with bugs

Code without bugs don't exists, the moment you touch your keyboard you're potentially breaking everything that was written before.
Just accept this fact and think well of the output and every possible errors you can have in your code.
Even the most experienced developers leaves bugs behind, maybe less than average, but surely not zero.

More obedient than a dog

A computer is basically a giant calculator, it reads input, manipulate data and show an output.
If your program doesn't do what you want, it's because you haven't told it or you made a mistake in how you did, that's it.

Eat your own dog food

If you want to make good software, you should be your first user. As you code, you'll create a biased and distorted view of the final product, you can only notice your shortcomings by using what you made in your daily life.
There's hundreds of companies and individuals that upped their products quality by doing this.

If you're stuck, go touch grass...

Writing code requires a lot of thinking and often you'll find yourself stuck on a problem that seems to not have a solution.
When this happens, stop thinking about it, leave the code behind and do something else, go outside, play a game, watch cat videos.
Not having your hands on the code helps you think at the whole picture instead of smashing your head on the same nail over and over again.

You can cheat

You're not at school, remembering everything perfectly is not required and often not even possible, just open your browser and look up everything you need at any time you need.
Often the questions you might have are already answered on StackOverflow or other online programming websites, just look up for an oversimplified description of your problem and you should find everything you need.

One language is not enough

There are many programming languages and each of them has set purpose, learning only one of them is good at the beginning, but you'll soon need to learn more than one.
Luckily, every single one of them follow the same core concepts, creating variables, functions, conditions, loops, etc. Some things may change a bit for each language, but once you learn one you can learn any other without too much work.

Everything is optional

There are many concepts and patterns you can learn and use, but what really matter is just what the language offers, don't overthink about how things should be made, focus on making it works, you'll naturally notice how the code can be made better and nothing stops you from going back and fixing it.
The only rule you should follow is KISS: Keep It Simple, Stupid!
The programming world is huge, really huge, and many new things happens almost daily, to keep your sanity you should avoid following trends too much, watch them from afar and try to understand why they became popular, see what sticks and if you think it's worth it, go for it!
Of course, nothing stops you from playing around, just make sure to understand the pros and cons of everything.

Code is just a tool

Remember that code is just a way to make something, if you code with no objective you'll go nowhere, think of what you want first and use code to achieve it.
As you learn more about programming you'll learn that often code is not the main focus of them.

If you can't track it, it doesn't exists

This is what thousands of people never learn, even in big ass schools.
"Version Control"
Your code is useless if you can't track it properly, and the way it's done is through version control, the most widespread to this day is git.
I see this as a "learn or die", no company will want someone who can't share their code in a sane way, to me, this is more important than being able to code.

Your skills are everything

To work in a programming related company you need to know how to do things, doing special training is not required, showcasing some good projects is more important than showing a certification.
In interviews, many companies will ask you to build something to prove your knowledge so be ready.

Overclock your brain with music

This is an advice I've never seen anywhere, but music has a much bigger influence that you might think.
Not only it can affect your mood but your body too.
When you work, listen to fun and upbeat music, your heart will try to sync to the beat, leading to better blood flow and mental clarity.
Go for a chill and relaxing music instead if you're planning or designing, when you're less focused you're more creative, you can also listen to white noises like nature sounds or ASMR when you feel like music is too much.
Just make sure to avoid music with vocals or languages you understand, this is to avoid getting distracted, that's usually the reason some people can't listen to music when coding.

You're not alone

The world of developers is a warm one, there so many people who desire to share and help others, just look at how many open source projects are out there.
There are so many ways to share new discoveries, ask for help and learn more.

It's a journey

Learning to code has many ups and downs, like everything else in life, just hang on and build something amazing!
Cheers!
this territory is moderated
Thanks for sharing!
reply
You're welcome!
I'll be sharing more soon. 🤗
reply
When you get conversate with any editor, it just get better debugging errors
reply
Yes, most languages offer great tools to debug natively, instead of relying on the editor, you should learn to use those.
reply
I work as a developer daily and, ever since I was a noob, I haven't spent a single cent, ever.
This is how I learn new things every day
reply
Exactly, that's the way to go! 😉
reply