Skip to content
Lucky Snail Logo Lucky Snail
中文

65 Things I Wish I Knew When I Started Programming

/ 12 min read /
#建议 #编程思维
Table of Contents 目录

Original: https://dev.to/madza/65-things-i-wish-i-knew-when-i-started-to-code-20ka

I read a blog post by an experienced developer from three years ago today, and I gained a lot from it. I hope more people can see it, so I’ve translated it and am sharing it here. Original link: https://www.madza.dev/blog/65-things-i-wish-i-knew-when-i-started-to-code . The post goes as follows:

Every successful journey is different. We all go through ups and downs while learning, and we all regret not knowing things when we first started. If you’re a beginner who wants to become a developer, the following 65 tips may help you on the long road ahead. They’ll serve as a survival kit, helping us get through tough times.

1. Programming is an art of problem solving.

A programmer’s job is far more than sitting at a computer and randomly tapping the keyboard. It’s a powerful tool to solve real-world problems and simplify people’s lives. If you can do that, you’ll always be in demand.

2. Planning is the key to success.

Every successful project begins with a lot of planning.

  • Make sure you set clear goals,
  • define tasks,
  • know your audience, etc.
  • Use pen and paper or any online wireframing tool to work out a clear picture of your solution.

3. Content is king

Without content, your website is meaningless. If you handle static content, make sure it’s presented well. If the content is dynamic, always try to predict the types of content you’ll create or receive, and design your layout, code, and database structure accordingly.

4. Coding should be the final stage of a project

Beginners might think every project starts with coding. In reality, coding is just the technical implementation of all the previous planning, and should be the last step in solving the problem.

5. Everything is at your fingertips

It’s no longer the 50s or 60s, when you had to go to the library to learn a subject. All the information you need is right at your fingertips. Use your brain and the internet.

6. You don’t need top-notch hardware to code.

Cutting-edge processors, huge amounts of RAM, and five monitors are optional. A mid-range laptop is enough to get started.

7. You don’t need to be good at math.

Based on the movies we’ve seen, coding is often associated with geniuses with IQs over 200. It may involve math in topics like AI, robotics, cryptography, etc., but to begin, you only need basic operations.

8. Finding the right workflow isn’t easy.

We all have different preferences. Try different extensions and settings. It takes a lot of time to figure out what works for you and how to put everything together. But it will be very beneficial for your productivity later.

9. The best time is now.

Saving things to bookmarks is just an elegant form of procrastination. To be productive, the best thing to do is to act immediately.

10. Syncing makes you flexible.

Sync all browser and IDE/code editor extensions and settings across every machine you use. This ensures you can work in the same environment wherever you are.

11. There are multiple ways to do things.

When I started coding, I thought code logic was very strict and had to follow specific patterns. In reality, the only strict variable is the syntax of the language you’re using.

12. Naming is a hard task

This may seem simple at first, but you’ll find it can be very challenging, especially in large projects.

13. Treat errors as lessons.

If you look at any success story, you’ll find it’s actually a pattern of trial and error. Persistence and curiosity are the keys to success.

14. Rebuilding is 10x easier than building from scratch.

When you rebuild an existing app, you have a clear understanding of the project’s layout and construction principles. And those are often the most challenging parts.

15. Finding your niche is important.

Wandering between various niches will get you nowhere. Before diving into a field, clarify your interests and research the available options.

16. Be curious about why something works.

Always try to explore the inner workings of things. Don’t be satisfied with just seeing things work magically on the surface.

17. Tools are key to productivity.

A person’s capabilities often depend on the tools they use. Invest time in building the right set of tools, because it pays off big time!

18. Passion for a project motivates you to keep going.

When choosing side projects, make sure to pick ones you’re genuinely interested in. Because you care about the outcome, your motivation will be significantly boosted.

19. It’s a marathon, not a sprint.

The development field is constantly changing, so be prepared to learn for the long haul. If you start too fast, you might burn out quickly.

20. Who you follow influences the information you get.

Pay attention to who you follow on social media. They determine the quality and content of the information you consume.

21. Avoid reinventing the wheel.

Before starting a project, research how other developers have solved similar problems. Most problems already have solutions; the key is your ability to search.

22. It’s easy to be led astray.

Being active in the community is good, but be aware that you might discover more efficient techniques or more modern UIs, which doesn’t always mean your current tech stack is bad or needs replacement.

23. Tutorials can be misleading.

Most tutorials are based on pre-written and refactored code. If you compare yourself to them, you may feel frustrated because you can’t find a solution quickly or write clean code from the start. Remember, it’s only one side of the coin; the creators have also struggled.

24. Tutorials won’t make you independent.

Watching or reading a tutorial gives you a general understanding of a technology, but it won’t make you independent. You should read the official documentation, develop your analytical thinking, and try to find solutions yourself.

25. No perfect technology exists.

Every technology has its strengths and weaknesses. When you’re unsure, put different options side by side, research them, and compare how they solve your specific problem.

26. The ability to learn new things is crucial.

When applying for a job, you might not be familiar with the company’s tech stack. What matters is how quickly you can learn the specific technology you encounter, not how many technologies you already know.

27. Version control is very important.

Clients often want previous designs and hesitate on feature choices. Version control is essential; it not only ensures your code always has a backup, but also saves you time.

28. Bugs can be very tricky.

Be prepared to deal with nasty bugs that may take hours or even days to resolve. During those times, you may feel frustrated by inefficiency, but once you solve them, you’ll feel a great sense of achievement.

29. Learn to judge what not to learn.

In today’s ocean of technologies, it’s easy to get lost. Ironically, one of the most important skills nowadays is learning to judge what not to learn.

30. Reading others’ code also improves you.

By writing code, you’re thinking about what you know. Reading other developers’ code is equally important—it helps you learn different design patterns and best practices.

31. Humility earns you respect.

Be happy about your achievements, but stay low-key externally. Boasting about yourself won’t get you far.

32. Perfectionism will slow you down.

Striving for high quality is good, but don’t be obsessed with perfection, otherwise you may end up with many unfinished projects.

33. Open source is an amazing thing.

From individuals to large companies, open source thrives in the community. It’s a beautiful thing, and I believe we can create better projects together. Make sure you learn the best practices and design patterns others use.

34. A degree is not a hard requirement.

Clients usually focus not on your diploma, but on your actual ability to solve problems.

35. When stuck, try breaking down the problem.

Faced with a complex problem, finding a solution can feel difficult. Break the problem into small pieces and solve each part step by step.

36. Large enterprises need you to build CRUD apps.

The core business of most large enterprises is CRUD (Create, Read, Update, Delete) operations. If you plan to apply to these companies, you’ll need to learn and be ready to deal with these operations daily.

37. A project is never truly finished.

Every project has room for improvement and optimization. What matters more is whether the project meets requirements and is polished enough to be released.

38. Good code should be readable and maintainable.

Whether you work alone or with others, always try to write code as if someone else will be working on it. Leave comments on more complex parts to explain how they work.

39. The first programming language is always the hardest to learn.

I often see people asking which programming language is the hardest to learn. In reality, the difficulty depends on your experience.

40. Using Google and Stack Overflow is normal.

These resources are there to help you. Don’t feel embarrassed about using Google or browsing Stack Overflow in front of others. Know that they do it too.

41. Communication skills are underrated.

Relying solely on code does not guarantee your success. Developing the ability to communicate with people is equally important.

42. Improve your negotiation (salary) skills.

If you don’t know how to negotiate (salary), all the cutting-edge technical knowledge is useless. Remember, they need you, not the other way around.

43. Online presence matters.

If no one knows about your projects, having done many local projects is meaningless. Build a good online presence to promote your projects.

44. Always remember the 80/20 rule.

Remember that the last 20% of a project often takes 80% of the time. So think carefully when reporting progress to clients.

45. Don’t over-engineer without reason.

A good practice is to reduce features rather than add them, until no more features can be removed.

46. Frameworks are ephemeral.

Learning the technology a framework is based on is far more valuable than learning the framework itself. That way, you can easily pick up a specific framework when needed.

47. Mastering one skill is better than dabbling in many.

Instead of trying to learn and master all skills, focus on a field you’re interested in, dive deep into the related tech stack, pick one, and master it thoroughly. Trying to be a jack-of-all-trades will end in nothing.

48. Tests exist for a reason.

Develop the habit of writing tests. While you may initially think it’s a waste of time, in the long run they will save you a lot of time on large codebases.

49. Achievements are the best way to boost motivation.

Cherish every “aha” moment during learning, solving tough problems, seeing others’ surprise, and recognizing your own value. Use these as fuel to ignite your motivation.

50. Don’t bite off more than you can chew.

When choosing the scale of a problem, find a balance: the challenge should be big enough to teach you something new, but also small enough to be solvable.

51. Don’t compare yourself to others.

Comparing your achievements to those of other developers can easily discourage you. It’s perfectly normal to learn at your own pace.

52. Don’t take criticism too personally.

Constructive criticism is valuable feedback that points out mistakes or improvements you might not have noticed. Ultimately, it improves the quality of the product.

53. Everyone has written bad code.

Don’t worry about looking back at code you wrote years ago. It may feel incredible or even embarrassing, but remember, it’s actually a clear sign of your progress.

54. One finished project is better than ten unfinished ones.

Try to handle only one or a few projects at a time, and follow the idea-to-execution pattern. Remember, a deployed project is what truly holds value.

55. Teaching others is the best way to learn.

To teach others, you must first deeply understand the concepts yourself. This ensures you have an in-depth understanding, and sharing knowledge creates a win-win situation.

56. When applying for jobs, you’ll never feel ready.

Learning programming is an ongoing process, not a destination, so you’ll always feel like you’re still working towards something. Don’t let that feeling stop you; go ahead and apply.

57. Hype is real.

Pay attention to trends, but only to the extent that you understand their main working principles and uses. That way, you’ll know what problems they’re best suited for and pick the right tool when needed.

58. Practice is the path to mastery.

Repetition is the mother of all knowledge. Consistent practice is one of the safest ways to master something.

59. Focus on indexing rather than content.

Nowadays, quickly finding information is important. If you know what you need and where to look, learning is just a matter of time.

60. Absorb knowledge like a sponge.

Develop a habit of learning every day to stay competitive and knowledgeable. Pay attention to who you follow. Seek quality over quantity.

61. Learn to say no.

If you never say no, sooner or later people will start taking advantage of you, and you’ll end up doing work you shouldn’t be doing.

62. Taking notes is a lifesaver for writer’s block.

Wherever you are, try to record your ideas. Create a fallback repository for those moments when inspiration runs dry.

63. Schedule your week and prioritize.

Try to plan ahead. It makes it easier to identify all the tasks to be done and prioritize the order of execution.

64. Breaks work wonders.

If you’re stuck, try doing nothing related to coding for a while. Spend time with family, pursue your hobbies, or go for a jog. Often, when you come back to the project, you’ll easily find the solution.

65. Exercise and adequate sleep boost productivity.

When it comes to productivity, 8 hours of sleep and 4 hours of work (are key).

Summary: Many of these points resonate deeply with me, such as taking good rest, planning ahead, finding your own workflow SOP, etc. There are also points I can’t yet fully grasp, like the importance of testing—I think my current abilities aren’t enough. I hope in the days to come, I can put these methodologies into practice in my daily work. Thank you for reading.