65 Things I wish I knew when I started to Code 🌱🚀
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.
1. Coding is about problem-solving.
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.
2. The golden rule is planning.
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.
3. The content is king.
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.
4. Coding should be the last phase of a project.
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.
5. You have everything at your fingertips.
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.
6. You don't need extreme hardware to code.
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.
7. You don't need to be great at math.
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.
8. Finding the right workflow is not easy.
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.
9. The perfect timing is now.
Saving in bookmarks is just a fancy word for procrastination. Your best bet to be productive is to do it now.
10. Syncing makes you mobile.
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.
11. There are multiple ways of achieving.
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.
12. Naming things is hard.
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.
13. Take mistakes as lessons.
If you take any success story, you will find it's actually a continuous try and error pattern, persistence and curiosity are the keys.
14. Recreating is 10X easier than writing ground-up.
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.
15. It's important to find your niche.
Wandering around from niche to niche will take you nowhere. Define your interest and research the fields available before jumping into one.
16. Be curious about why things work.
Always try to discover the under-the-hood stuff. Don't be enough with seeing stuff somehow magically working.
17. Tools are your keys to productivity.
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!
18. Passionate projects keep you going.
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.
19. It's a marathon, not a sprint.
The development space is constantly evolving, so prepare yourself for continuous learning. By starting too fast, you will get tired quickly.
20. People you follow are the information you consume.
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.
21. Do not reinvent the wheel.
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.
22. It's easy to get carried away.
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.
23. Tutorials often mislead you.
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.
24. Tutorials won't make you independent.
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.
25. No tech is perfect.
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.
26. Your ability to pick up stuff matters.
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.
27. Version control is a must.
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.
28. Bugs can be really intimidating.
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.
29. Learn what not to learn.
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.
30. Reading code makes you better, too.
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.
31. Be humble and others will respect you.
Celebrate your achievements inside, but be humble about them outside. Bragging won't get you far.
32. Being a perfectionist will slow you down.
Aiming for quality over quantity is a great thing. Tho don't over exaggerate, as you will end up with hundreds of unfinished projects.
33. Open source is awesome.
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.
34. The diploma is optional.
Clients often do not care about the diploma, but your practical ability to solve their problems.
35. Break it down when you get stuck.
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.
36. Corporate companies need you for CRUD apps.
The heart of corporate companies is mostly CRUD operations. Learn and be ready to work with them daily, if you are planning to apply.
37. The project is never fully finished.
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.
38. Good code is easy to read and maintain.
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.
39. The first language is always the hardest.
I've seen people often asking what's the hardest language to learn. In reality, the difficulty is related to your experience.
40. Googling and using Stack Overflow is acceptable.
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.
41. Communication skills are underrated.
The code alone will not always determine your success. It's important to practice interaction with people.
42. Sharpen your negotiation skills.
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.
43. Having an online presence is important.
Dozens of local projects have no meaning if no one knows about them. Build yourself a great online presence to promote them.
44. Always be aware of the 20/80 rule.
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.
45. Don't over-engineer without a cause.
It's always a good practice to aim for a state where there are no more features to remove rather than add.
46. Frameworks come and go.
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.
47. Knowing something well is better than pretend to know a bit of everything.
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.
48. Testing is there for a reason.
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.
49. Achievements boost your motivation best.
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.
50. Do not put up more than you can carry.
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.
51. Do not compare yourself to others.
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.
52. Do not take criticism personally.
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.
53. Everyone has written a bad code.
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.
54. One finished project is better than 10 half-finished ones.
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.
55. The best way to learn is by teaching others.
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.
56. You are never ready to apply for a job.
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.
57. The hype train is real.
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.
58. Practice leads to mastery.
Repetition is the mother of all knowledge and one of your safest bets to master something is to be persistent in practicing it.
59. Focus on the indexes, not the content.
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.
60. Be a sponge for knowledge.
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.
61. Learn to say no.
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.
62. Note-taking is your rescue for writing block.
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.
63. Schedule the week and prioritize.
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.
64. Taking breaks make wonders.
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.
65. Sports and proper sleep boost productivity.
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.
The most Curated List of Advice for Developer to keep in mind :)
I help business' get more sales by developing a fast, secure, scallable & converting website. Brain at @_ICVNTechStudio | Mod at @ThePractic
No tech is perfect.
This opened a lot of ideas on handling objections in freelancing. Thanks, man!
I would add to this.
66. Software is developed iteratively
It can be intimidating to release software that may have bugs. But professional devs don't write bug free code, they build systems that allow them to identify and solve bugs over time.
Things like testing, static analysis of code, having a system for users to easily report bugs, a clear security vulnerability disclosure policy, etc.