DEV Community

loading...
Cover image for 65 Things I wish I knew when I started to Code πŸŒ±πŸš€

65 Things I wish I knew when I started to Code πŸŒ±πŸš€

madza profile image Madza Originally published at blog.madza.dev ・10 min read

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!

Connect me on Twitter, LinkedIn, GitHub and DEV!

Subscribe to my Blog for more articles like this.

Discussion (56)

pic
Editor guide
Collapse
kirancapoor94 profile image
Kiran Capoor

Good post! I’d like to add one more point.

Your imagination is the only thing that is limiting, not the technology.

  • Most languages/frameworks etc can do everything that their alternatives suggest. So what’s limiting you? You.
  • For example, in vuejs you can build enterprise grade projects, so can you do it in react, svelte etc. But sometimes, it happens that you get overwhelmed by the alternatives, the way they handle the problem etc. In reality, vuejs can do what react does, it’s only the developer who’s the limitation. Not the technology.
Collapse
madza profile image
Madza Author

Thanks for the additional points πŸ™β€

Collapse
fluxthedev profile image
John

Thanks again Mazda. This list was awesome few ones that hit home were:

  1. The golden rule is planning.
    This is huge. Alot of companies either don't have sole project planners or the employees are wearing multiple hats and doing it themselves. From my experience, project planning and developers that can manage their own projects is the key to success. I'm just about finished with bit wordpress project and the first 1-2 days of it I did not write one piece of code. I dove into the designs and wrote requirements myself. Planning makes coding go smoothly.

  2. Do not take criticism personally.
    I was a pretty defensive developer when I got into my first gig after college. Any bugs, feedback, criticism that was brought to me was met with a negative response. It took me awhile to learn that I should be taking any and every piece of criticism as a potential chance to be a better developer. Yes there will be times when feedback is off or wrong, but if im consistently processing it, I know when the feedback is constructive and when it's nothing I should focus on.

  3. You don't need to be great at math.
    I'm average at math, but I'm probably a better problem solver than those who are a bit better than me in math. I wish I had a debugger for those complex problems in college though lol.

Collapse
madza profile image
Madza Author

Thank you so much πŸ™β€ I'm glad some points resonated πŸ‘πŸ˜‰

Collapse
fluxthedev profile image
John

All of them resonated! I wrote that late and if I kept going it would slowly transition to gibberish lol.

Thread Thread
madza profile image
Madza Author

Hahah, thanks for reading πŸ˜€πŸ˜€

Collapse
elmuerte profile image
Michiel Hendriks

The golden rule is planning

And planning is not about time, or putting things on a calendar.
Planning is about working out what to do, and in what order. Figuring out which things are vital and which are not.

Collapse
madza profile image
Madza Author

Can't put it better πŸ’―πŸ‘Œ

Collapse
wa1gon profile image
Darryl Wagoner

I think this is a great post.

I would like to take exception to #4 and somewhat to #2 as they are related.

Num: 4 sounds like a waterfall approach and that ends up wasting a lot of time. Most users don't really know what they want or the value of what they are asking for. Planning should be a process that continues from start to finish of a project. Of course, there things that should be planned right off the bat, like the tech stack. What is important is not to over plan, which can be worst than not enough planning.

I agree with #6 to a point. The amount of memory depends on the tech stack and the OS. Linux and Macs will use memory better than Windows, but I was working on a Mac with only 8 gigs and it was awful. Memory, SSD, and monitors are cheap, don't avoid them to save a few bucks. On the other hand, CPUs can be a waste. I have a 4 core system and I don't remember being CPU bounded every.

Num: 38 I think should be changed from "Good" to "Great".

Learn Clean Coding and S.O.L.I.D. it will change your life

Collapse
madza profile image
Madza Author

I agree with your points πŸ’―Thanks for your input πŸ™β€

Collapse
qm64 profile image
qm64

"Coding should be the last phase of the project."

I think I know what you mean, but after coding comes debugging, integration, code review, verification and validation, deployment, field testing, user feedback, and project review and approval, to name a few.

Collapse
madza profile image
Madza Author

Surely, agree with your point πŸ˜‰

Collapse
Sloan, the sloth mascot
Comment deleted
Collapse
madza profile image
Madza Author

You are welcome! πŸ™β€

Collapse
ben profile image
Ben Halpern

Good post

Collapse
madza profile image
Madza Author

Likewise, I'm always intrigued by your posts πŸ”₯πŸ”₯

Collapse
jirois profile image
Omas Ajiri

Thanks Mazda for this piece. It was well thought-out. Will be sharing this with my friends.

Collapse
madza profile image
Madza Author

Awesome to hear! Thanks a lot πŸ™β€

Collapse
alastairdev profile image
Alastair O

Thank you Madza for sharing! I am a Junior Dev so these tips are much appreciated. πŸ™

Collapse
madza profile image
Madza Author

Awesome to hear you liked πŸ™β€

Collapse
rreiso profile image
RReiso

Thank you for your post. As someone who just started out, it can get very overwhelming with the amount of information and skills you need to learn, especially when you ignore the rule nr. 65.

Collapse
madza profile image
Madza Author

Thanks so much for the feedback πŸ™β€

Collapse
alin11 profile image
Ali Nazari

These are great tips, Mazda! Am I allowed to translate them into Persian for my blog?

Collapse
madza profile image
Madza Author

Yeah, go ahead! πŸ˜‰ Tho, please note that these are from my personal experience and put references to my social media in your opening πŸ˜‰

Collapse
alin11 profile image
Ali Nazari

Thanks. I need a little more clarifications. Is it enough to mention the link to this post on my article? (As I always do)

Thread Thread
madza profile image
Madza Author

Yeah, that would be enough πŸ˜‰

Collapse
aleaallee profile image
Alejandro esquivel

Planning is the part I hate the most of any project, I just want it to end and start coding.

Collapse
madza profile image
Madza Author

Yeah, tho it is the most important one and guarantees you will be more efficient when coding since you know what you want to achieve with code πŸ˜‰

Collapse
nsursock profile image
nsursock

you're right: bugs can be intimidating!!!! :) great post

Collapse
madza profile image
Madza Author

Thanks a lot for reading πŸ™β€

Collapse
realtoughcandy profile image
RealToughCandy.io

This is an awesome list. Learning what not to learn is something that resonates.

Collapse
madza profile image
Madza Author

Thanks a lot for reading πŸ™β€

Collapse
simpleadam profile image
simpleAdam
  1. there is no problem which hasnt already been solved. academia is about problem solving and creativity. professional programming is about code quality and safety
Collapse
madza profile image
Madza Author

Thanks for the additional points πŸ™β€

Collapse
dekuck profile image
Daniel Kuck

Very interesting points. Thanks!

Collapse
madza profile image
Madza Author

You are welcome πŸ™β€

Collapse
khangnd profile image
Khang

You don't need to be great at Math to start, but only being great at Math helps you reach the top in this field. What I still firmly believe, and I suck at Math... ☹

Collapse
amberbdr789 profile image
Amber Bdr. Kharka

Very informative articles.. cheers!!! Thank you... keep sharing..😍😍

Collapse
madza profile image
Madza Author

Thanks a lot πŸ™β€

Collapse
ashokraju105605 profile image
ashokraju105605

Loved the content

Collapse
madza profile image
Madza Author

Thanks for reading πŸ™β€

Collapse
kalashin1 profile image
Kinanee Samson

Great post ! I learned that I need to learn what not to learn.

Collapse
madza profile image
Madza Author

Yeah, sounds ironic, but it's true nowadays πŸ˜‰πŸ˜€πŸ˜€

Collapse
ummerhurrah profile image
Collapse
madza profile image
Madza Author

Thanks for reading πŸ™β€

Collapse
koraylinux profile image
Koray Biçer

If you are a good researcher, you don't even need to know coding for small apps. Recently, my friend find the necessary javascript codes, ready html/css template online and combined them in react and deployed in to netlify. It's just that easy if you know what you're doing. The result was amazing.

Collapse
madza profile image
Madza Author

Yup, it's more and more about combining the puzzle pieces together πŸ˜‰

Collapse
beginnercoder17 profile image
BeginnerCoder17

Helpful, thanks. Also, I've been trying to see if there are any other coding programs besides Khan Academy, which could I use? (I'm brand new to coding)

Collapse
robertseidler profile image
RobertSeidler

I'm not sure at what stage of "new" you are, but I found it extremly helpfull to get into the right programmer / problem-solver mindset. And having fun is motivating, so I recommend to try some of the programming games out there.

This games studio is specialized in that niche, I enjoy them and learn something new every once in a while: zachtronics.com/

The ones I enjoyed most, in that order:
zachtronics.com/spacechem/
zachtronics.com/shenzhen-io/
zachtronics.com/tis-100/

Collapse
beginnercoder17 profile image
BeginnerCoder17

Thanks alot!

Collapse
madza profile image
Madza Author

Thanks a lot πŸ™β€
You can check out some of these courses.
Personally, I would go with CS50, FCC, or Udemy.
There are also lots of quality full-length courses on YouTube.

Collapse
beginnercoder17 profile image
BeginnerCoder17

OMG, thank you so much! I was just looking for a java community and then I found this. Thank you again!

Thread Thread
madza profile image
Madza Author

No worries, you are welcome, and best of luck πŸ™β€

Thread Thread
beginnercoder17 profile image
BeginnerCoder17

Thanks rn I'm doing the course on Javascript.com

Thread Thread
madza profile image
Madza Author

Awesome, your gonna make it! πŸ™β€

Thread Thread
beginnercoder17 profile image
BeginnerCoder17

Thanks again you have been a great help! :D