Learn your basics or steps to be a successful Junior Developer
Hello I’m Lucas, I started Web Development last year and I work now at my first web developer job. I started web development with HTML5/CSS3
and then moved on directly to PHP
and JavaScript
. Well this is cool but I realized at my job that I was really missing a lot of basics and foundations about computer science and programming in general. If you do not have a mathematical / engineering background sometimes this can be challenging at your first job, because you’re just missing basics. So I’ve decided recently to put my head around the basics concepts and foundations of CS and Programming.
I felt lost, not knowing where to start. So, after searching many resources and watching a lot of videos about this I actually took some notes and I want to share it with you guys.
Hope this can help someone out there in the same place as me 😃
Let’s start !
Foundations
1 — Embrace the correct mentality
It takes a good mentality, If we are just coding without interest or because we just want that salary at the end of the month, well our mental will tire us up. We need to know how to work and learn and actually liking it and giving it a real value.
A good book but a bit extreme for this kind of mentality is « Deep Work » by Cal NewPort. You can read it but don’t need to go into full deep work mode, just maybe fix some schedule in your agenda to work things and create an habit, and also try to spend less time in social media. Don’t need to quit social media of course, just disable notifications you’ll be fine. And if you’re really addicted just try to delete the app from your phone for a couple of days see if you feel a difference 💥
2 — The art of solving problems
The job of a developer/programmer it is not to make web pages, write some tags on a text editor. The real value in a developer’s job it is the art of solving issues/problems. For some people this kind of skills comes naturally, for others like me that are not that logical we need to work.
How do we work problem solving ? Well I think a good way is to practice algorithms. Practice it in your favorite programming language if you are confortable with it or even « better » in a piece of paper or in pseudocode, because this allows you to see things differently and not worry about your language syntax but truly worry about the solution for your algorithm(problem).
3 — The many types of data
Next, we need to know the different type of data. So what is a string, an int, a boolean, array, etc .. Learn a bit how to work with them, retrieve something from an array and then put it back in, reverse a string, those kind of stuff.
4 — Implement control structures
So control structures are conditions, loops, functions … This is basics you’ll find in mostly every language and you’ll use very often. This allows you to implement logic to your algorithms, your code.
5 — Learn some principles
Well, principles there is a lot of them, they’re concepts that are shared with multiple languages. It is still a bit vague for me but I can think of things like “What is a runtime ?” or “What are Asynchronous/Synchronous ?” for example.
There is also all the principles based on clean code and good writing:
→ DRY(Don’t repeat yourself)
→ YAGNI(You are not gonna need it)
→ KISS (Keep it simple, stupid)
…
This are principles you should try to follow.
Work Environment
It is important to a developer to know his tools and his work environment, feeling confortable with it.
→ So you need to learn how to work with your shell in your OS, learn basic commands like create files, delete them, create directories (folders), copy them, looking into them, open them…
→ Also if you have the time maybe do an introduction to shell scripting, it can be really useful in the future.
→ Choose an IDE/Text Editor and learn how to work with it.
→ Learn Git, basic git commands and understand how to add files to git commit and push them, create branches etc..
This will be useful to work with a team at your developer job 😃
Different styles of programming
Here you can learn the difference between imperative programming, object oriented programming or even functional programming.
Just to have a clear idea about the different styles of programming.
Those different ways of programming are called Programming Paradigms.
Learn a language (choose your path)
Now you can really choose and learn a language. Of course this depends also of what kind of development you want to do:
→ Web Development ?
→ Mobile ?
→ Software Development ?
→ Video Games ?
→ Data ?
→ What do you want to build ?
You can also choose languages that are quite versatile and can be used for multiple purposes, I can think of Python or Java for example.
Just choose what you feel like learning and you can then put all your basics and foundation into action by building programs, apps, whatever 🤩
Some resources to help you get started 😆
CS50: Introduction to computer science This is a free course given by Harvard , you can find it online easily.
CS50 2019 — Lecture 0 — Computational Thinking, Scratch
CS50’s Introduction to Computer Science
Learn enough platform. Here you can find how to work with your command line, git and other stuff
Learn shell Here you can learn more about your shell by practice.