No success story is the same, we all have had our ups and downs in the learning process and things we wish we knew when we started out.
If you are a new, aspiring developer, these 65 things will prepare you for the long journey ahead. Use them as a shortcut in your own learning path.
Being a programmer is way more than sitting in front of the computer and randomly pressing buttons on the keyboard. It's a powerful tool to solve a lot of real-world problems and make people's lives easier. If you are capable to do it, you will always be looked after.
Each and every successful project starts with lots of planning. Make sure you identify the goal, define tasks, know your audience, etc. Use a pen and paper or any online wireframing tool and try to come up with a clear schema of what your solution would look like.
Without content your site is empty. If you are dealing with static content, make sure it is well presented. If the content is dynamic always try to project what type of content you will create or receive and design your layout, code, and database structures based on that.
Beginners may think that every project always starts with coding. It's actually just the technical implementation of all the planning that was done before and should be the last step of solving the problem.
It's not the 50s or 60s anymore, where you would have to go to the library to study some topic. All the info you need is within reach of the hand. Use your brain and the internet.
Cutting edge processor, massive amounts of RAM, and 5 monitors are all optional. A mid-range laptop is more than enough to get started out.
Coding has often been associated with some geniuses with a 200+ IQ, based on the movies we have seen. It could get math-heavy in topics like artificial intelligence, robotics, cryptography, etc, but in order to start, you need to know just the basic operations.
Each of us has different preferences. Experiment with different extensions and settings. It will take lots of time to understand what works for you and how to tie everything together. But it will be very rewarding for your productivity later on.
Saving in bookmarks is just a fancy word for procrastination. Your best bet to be productive is to do it now.
Sync all the browser and IDE/code editor extensions and settings on every machine you work on. It will assure that you work in the same environment wherever you are.
Once I started to code, I thought the logic in code is very strict and has to follow a certain pattern. In reality, the only strict variable is the syntax of the language used.
It might sound like an easy task at the beginning, but you will find out how challenging it can be, especially for larger-scale projects.
If you take any success story, you will find it's actually a continuous try and error pattern, persistence and curiosity are the keys.
When re-creating an existing app, you have a clear understanding of the layout and building principles of the project. And those are often the most challenging parts.
Wandering around from niche to niche will take you nowhere. Define your interest and research the fields available before jumping into one.
Always try to discover the under-the-hood stuff. Don't be enough with seeing stuff somehow magically working.
A man/woman is only as good as his/her tools. Invest time in creating a proper tool-stack as it pays off big time!
When it comes to side project ideas, pick something you are truly interested in. This will boost your motivation as you care for the end result.
The development space is constantly evolving, so prepare yourself for continuous learning. By starting too fast, you will get tired quickly.
Pay attention to the people you follow on social media. That dictates the quality of the feed you read and the information you take in.
Before jumping into the project, take a look at what other developers have used to solve similar problems. There should already be the solution for virtually anything, it's just a matter of how good are you at searching.
Being active in the community is a great thing, but be aware it will often lead you to discover more optimized technologies, more modern-looking UIs, etc. That does not always mean your current stack is bad and you should switch it.
Tutorials are mostly based on already pre-coded and re-factored code. Once you start comparing yourself to it, you get desperate, cause you can not come up with the solutions that fast and write as clean code on the first go. Be aware it's only a bright side of a coin and the creators struggled, too.
Watching or reading a tutorial might be good for getting an overview of the tech, but they will not help you to stand up on your feet. Try to read official docs besides to develop your analytical thinking and try to come up with your own solutions.
Each and every tech has it's own advantages and disadvantages. When in doubt, put your alternatives side by side, do some research on them, and compare how they tackle particular tasks.
When applying for a company, the chances are you are not gonna be familiar with their tech stack. What matters is not how many technologies you know but how fast you can pick up the particular tech you come across.
Clients often ask for previous designs and are undecided on features. Version control is a must to save you and also assures your code is always backed up.
Be prepared for challenging bugs that can take hours or even days to fix. You will be intimidated by the low productivity levels during those times but will be elevated once you fix them.
Nowadays it's easy to get confused in the vast ocean of technologies. Ironically, one of the best skills today is to learn what not to learn.
By writing your own code, you are reflecting on what you know. It's important to read code by other devs, to learn different design patterns and best practices.
Celebrate your achievements inside, but be humble about them outside. Bragging won't get you far.
Aiming for quality over quantity is a great thing. Tho don't over exaggerate, as you will end up with hundreds of unfinished projects.
From individuals to large companies, open-source has bloomed in the community. It's a wonderful thing and I believe together we are making better projects. Make sure you study the best practices and design patterns used by other people.
Clients often do not care about the diploma, but your practical ability to solve their problems.
Often times coming up with a solution may seem hard as the problem is too comprehensive. Break it down into chunks and tackle each piece bit by bit.
The heart of corporate companies is mostly CRUD operations. Learn and be ready to work with them daily, if you are planning to apply.
There will always be ways to improve and optimize each project. Think of it more like the project meets the requirements and is good enough for being shipped.
Whether or not you are working alone, always try to write code as somebody else will work with it. In trickier parts leave some comments, explaining the working principles.
I've seen people often asking what's the hardest language to learn. In reality, the difficulty is related to your experience.
Those resources are there for you to help. Don't be ashamed of Googling or reading SO in front of someone. Know for a fact, they do, too.
The code alone will not always determine your success. It's important to practice interaction with people.
Knowing all the cutting edge tech has no power if you do not know how to negotiate. They need you not the other way around.
Dozens of local projects have no meaning if no one knows about them. Build yourself a great online presence to promote them.
Keep in mind that the last 20% of a project takes 80% of the time. So think twice before reporting any progress updates to a client.
It's always a good practice to aim for a state where there are no more features to remove rather than add.
It is 10X more valuable to learn a tech that they are based on, this way you are all set to pick up a particular framework if the necessity arises.
Instead of trying to pick up and master everything, do some research on the field you are interested in, study the available stacks, pick one and master it to the core. Trying to become a jack of all trades will ultimately leave you a master of none.
Make a good habit of writing tests. Despite you might feel you are doing unnecessary work at first, they will help you save lots of time, especially in large code-bases.
Appreciate all those 'a-ha' moments when learning, finally getting challenging features to work, seeing people being amazed, and feeling valuable. Treat them as fuel for your motivation.
Find a fine line between choosing a problem of a scale, that is challenging enough for you to learn something new, but also narrow enough to be solvable.
It's easy to get frustrated if you compare yourself to the achievements of other devs. You learn at your own rate and it's perfectly fine.
Constructive criticism is valuable feedback, pointing out the mistakes or improvements you did not see yourself. Ultimately it will lead to a better quality product.
Don't worry about looking at the code you have written a few years back from now. It might seem like you don't believe your eyes and you might feel shame. Tho remember it's actually a clear sign, that you have progressed.
Try to work on one or a couple of projects at a time and try to follow the idea-execution pattern. Remember that deployed projects are those that count.
In order to teach others, you have to study the concept yourself. This assures you get to know the concept to the core and is a win-win as you share your knowledge.
Learning to code is a journey, not a destination, so you will always feel like being in the middle to achieve something. Don't let that fool you and apply anyway.
Be aware of the trends, but only to the point, where you understand their main working principles and use cases. That way you will know which problems it solves best and will pick up the actual tool just when the necessity arises.
Repetition is the mother of all knowledge and one of your safest bets to master something is to be persistent in practicing it.
Nowadays what matters is to find information fast. If you know what you need and where to look, it's only a matter of time to pick it up.
Develop a habit to learn each and every day in order to stay competitive and knowledgeable. Pay attention to whom you subscribe to. Seek quality over quantity.
If you will never say no to anything, others will start to take advantage of it sooner or later and you will end up working more than you should often.
Whatever you do and wherever you are, always try to track down your ideas. Create a back-log of information for the times you are feeling less inspired.
Try to dedicate some time to plan ahead. That way it is easier to identify all the tasks you deal with and prioritize the execution order of them.
If you get stuck, try to do nothing coding-related for a while. Spend time with your family, or practice your hobbies or go for a jog. Often times you will re-visit the project and come up with the solution easily.
When it comes to productivity, you will often do more with 8 hours of sleep and 4 hours of work, than the other way around. Combine it with regular physical activities for the full effort.
Writing has always been my passion and it gives me pleasure to help and inspire people. If you have any questions, feel free to reach out!
Subscribe to my Blog for more articles like this.