Advice to a novice software developer
Learning to code can be hard and later on frustrating but those who endure manage to strive. The best way to keep going even when you are not yet seeing light at the end of the tunnel is to have a passion for code. With passion you will go an extra mile in your learning and with time coding will become fun and part of you.
Software development or coding is very wide and it is nearly impossible to be an expert in all areas. It ranges from mobile, web, Artificial Intelligence(AI), Machine Learning(ML) and a lot more fields.
When you are starting out choose a section to start with probably web, but even before that, you need to know the basics and this requires you to have chosen a software stack to start with.
At times choosing a software stack is not easy because there are lots of programming languages and technologies of late. The choice most of the time is driven by what your peers are using in case they are already coding or some sort of research over the internet.
For web development, you even have to choose whether you are starting out as a Frontend or Backend developer. In case you choose web development over the rest here is a guide on the FreeCodeCamp publication that sheds more light on this. All in all you have to choose what to start with and then do not worry because when you learn one language it is easier to change or learn another language in case your desires or needs change.
After you have chosen a stack/language you then need an environment to work with on your computer. The best way to know what you need to install to get started on any language is to visit the official website of that language for there will be a guide to get you started.
Now that your coding environment is successfully setup on your computer, you need somewhere to write code and then run it so that you see its output. You need to choose whether to use a Text Editor or an Integrated Development Environment(IDE).
A Text Editor is easy to use since most of the time all you need is to download, install, open it and start writing code. Though with time you realize that you need to add more functionality to the text editor so that it can do more for you and you accomplish this by installing plugins. Some of the common text editors include VsCode, Sublime and Atom.
IDEs, unlike Text Editors, come bundled with many features which are meant to make the development process a breeze. There is a little adjustment needed to make it suit your programming needs. Though one of their downsides is that they can be intimidating for a new user since they have a lot of icons and menus. I personally prefer using an IDE since it takes care of all my development needs such as code completion, debugging and many others out of the box and I am only left with development since that is what tools are meant to do. Some of the common IDEs include Pycharm, PhpStorm, Webstorm, and Eclipse.
In the modern programming age, one cannot be a developer if they do not use Version Control Systems(VCS) when writing code. Therefore you will need to add VCS to your workflow and among them all, Git is the commonest and most popular. This will enable you to control versions of your code and also be able to efficiently host and share your code remotely.
Most of the time you will want to store your code somewhere so that in case you lose your computer you then easily recover it. Good news is that there are remote tools such as Github and BitBucket that provide a free plan for storing your code. Github is the most popular and also easy to use, on there you will also find very many OpenSource repositories.
After learning the basics of a language it is always good to go and check out some OpenSource projects on Github that use that same language. This is important because it can enable you to learn more about best practices and also how others approach or implement specific features.
Later on, after gaining some experience in your chosen stack or language, you can start contributing towards OpenSource projects. It is a way of giving back to the community.
Most new developers ignore code documentation whether official or not. This is not a good practice because later you will encounter unnecessary errors or even get stuck when writing code, yet if you had read the documentation this would not have happened. Make it a habit to always check out the official documentation for your chosen language and also try out the code sample or examples included within.
You should also check out other tutorials from sources such as Medium, Lynda, Codementor, Youtube and Udacity among others. Medium has many publications that publish technical content that you will find to be very useful and up-to-date. These publications include but not limited to FreeCodeCamp, Hackernoon and The Andela Way.
Another great resource used by many developers is StackOverflow. It contains many questions asked by a wide range of developers with different skill sets across the world. Most of the times when you encounter an error there will be a great probability that someone else already encountered it and that there is a solution on StackOverflow and a simple Google search may lead you directly to it.
When starting out do not be so much worried about the quality of your code. Quality comes with experience, the more you write code the better you become.
Though one thing you should keep in mind is writing clean code from the beginning for this will pay off in the future especially when you join a team. Writing clean code is more of following code styles and conventions for a given programming language.
One of the most important aspects of clean code I have come to appreciate is “code documentation”. You should(must) always add comments to your code, this is important because later when you come back to your code, you will be able to get a context of what you were doing. You should also note that the you today is not the same as the you tomorrow, therefore keep documenting your code.
When learning especially something new, the main goal should not be finishing but rather learning. Do not feel that you have not completed a project yet in your new stack or language, put more effort in learning as much as you can for you will later do projects and finish them.
Make it a habit to share your newly acquired knowledge. There are a lot of ways or channels you can use to share what you have learnt. One of the ways is to write about it on your blog or on Medium.