I am well aware that it is far from the first one who did not start the development path right away – simply because she did not really understand where to start.
A huge number of options, on the one hand, provides rich opportunities, and on the other, it can scare you away from the very first steps. For those who are just thinking about which direction to move, or those who have already begun to waddle slowly – these are 10 things that I would like to know before starting my thorny path.
This article is supported by EDISON Software.
We have a clear idea of how much the intern’s work costs and we well know how to determine the level of professionalism of a developer.
The first one. It is important to choose the right language.
There are many programming languages. Each has strengths and weaknesses, as well as its own areas of application.
Although the very first PL will almost certainly be the hardest to master, the basic foundations are the same for almost all languages (variables, loops, branches, etc.). It is worth spending a certain amount of time and effort to analyze and decide which language you would like to use.
Ease of programming is something that you should definitely pay attention to. Be honest with yourself – do you feel confident with this language or not? Failure to choose a complex language will ultimately lead to a loss of time. Perhaps it is better to choose what is simpler and what will be more pleasant to program on?
Another important factor. Ask yourself: why do you even study programming? If you have an idea for your own application, start by thinking about its logic in the early stages, its scope, and see which languages and technologies are best suited in this case.
If you want to get a job as a software engineer, make a list of 10–20 companies that you don’t mind joining, find their vacancies and see what languages they use.
The second one. We always remember that there is official documentation (thanks, Cap!).
Languages are not just created and immediately thrown into the outside world in the hope that it is immediately clear to everyone how to work with them. Languages, frameworks and libraries are carefully documented, from basic concepts to complex use cases. For example, here are some links with detailed docks:
The third. Google is your best friend.
Almost every developer starts googling as soon as he reaches a dead end. Any newbie does this and you are unlikely to ever stop using Google.
It is unlikely that you are the first to encounter some strange error message or find a specific bug during the development process. If you are lucky, then there were already those who stepped on the same rake, switched to StackOverflow or some other site, got a feedback there and solved a similar problem.
When developing software for moving along the project trajectories from point A to point B, Google and other auxiliary web resources cannot be dispensed with. It’s much easier and more efficient to reach your final goal with clean code examples, best practices, and scalable algorithms.
Fourth. No magic – only informed solutions to problems.
Very many people perceive programming as a kind of special witchcraft. It is clear that this is not so. These are hundreds of thousands of lines of routine code, carefully debugged, both for executing a separate functionality and ensuring the flawless operation of the application as a whole.
Any programming language can be learned, by and large. At first, this will seem like an occupation without meaning – how the French or Chinese language being studied for a non-native speaker is perceived for a while by an absurd gibberish. And with languages, everything is the same: step by step, learn to broadcast your message using syntax and diction, and learn how to transfer everything you have on your mind with the help of another language.
Fifth. Do not embrace the immensity.
You will never know everything you need to know about software development. Moreover – you will not even comprehend everything about any one programming language.
This is partly because there is too much information. And also because knowledge is constantly becoming obsolete and new ones are replacing it.
New versions of languages with new functionality and updates are regularly released. There are new frameworks and libraries that at some point become so popular that almost everyone wants to use them. Through trial and error, more convenient practices are discovered that replace current ones.
Again and again emerging changes and ongoing development – this is all that is constantly under development. And the sooner you accept it, the better.
Sixth. GitHub is power!
Github – remote version control system that works with Git, local version control system.
To use this tool for your pleasure, you should create an account in the system and spend some time exploring the possibilities.
When working on projects, situations often arise when it is necessary to solve a problem, but it is not entirely clear how. Or you just need to try something out and see where it leads.
Git allows you to make changes without risking breaking the working code. This is achieved due to the fact that you can create a branch from the main project, creating, in fact, a separate version of the code that you can play with without affecting the master branch, and also allows you to select a branch with the changes that you want to see in main project.
Git allows you to test different ways to solve the problem, and the test versions will be saved separately. And until you make a git commit for the selected branch, the changes will not be saved in Git.
GitHub is simply a system for remotely storing your local Git repositories (this also means that for each project you will need a local Git repository and a GitHub repository). Imagine this is DropBox for software code. No matter what happened to the computer, the precious code will be safe and sound.
Seventh. HackerRank, LeetCode and CodeWars
These three sites (as well as, of course, others like them) provide the opportunity to participate in endless code-challenges that allow you to develop qualifications.
Once you master basic things at the very least, you can go to one of these sites (or even all three), and learn to solve problems using code. This will strengthen the knowledge of the syntax of the language, and at the same time increase the programming skills.
Personally, I love LeetCode. There is real feedback on the quality of your decisions, and not just reported whether they have done or not. I also often use HackerRank, simply because I like the tasks there.
The eighth. Practice makes the programmer more perfect. Or at least more capable
Not to become perfect and not to comprehend everything. But the importance of practice, practice, and once again practice cannot be overestimated.
Everyone knows this – trying to deal with something, but it doesn’t work out. This is often so distressing that you put up with defeat and move on to the next step. But I guarantee that if you persistently continue to practice, even if you feel that nothing is coming out – ultimately enlightenment will come and everything will fall into place. Suddenly, everything will make sense. Getting to the bottom of the story is sometimes oh how difficult, but worth it.
The ninth. Languages are not frameworks, but frameworks are not libraries
Libraries and frameworks are add-ons for programming languages, but they also differ from each other. They take the language to a new level of abstraction, thereby offering universal solutions to standard problems. Often this happens in the form of providing common methods so as not to reinvent them every time you create a new application.
And finally, the tenth. Knowledge of a language is not limited to knowing its syntax
Software development is much more than just knowing the syntax of a language.
Programming so that everything works as expected is achievable. But knowing what is happening inside the language, which allows us to vouch for the correctness of the code, is also significant. A deep understanding helps in solving complex problems.
It is advisable not only to see that
The nuances of each language, an understanding of how each line of code works, are very important. Ignorance can lead to unpredictable consequences.