Bad Habits in Embedded Software Development to Avoid

Knowing these behaviors will help you avoid making the same mistakes in your programming career!

Work experience in the software industry is directly related to the number of years you have been in this field. This statement is somewhat true, but the years you have worked do not necessarily represent the same amount of work experience, as the saying goes: “We think we have worked for ten years, but in fact, we only have one year of experience, just repeated for nine years.”

There are some people who have worked for many years, but their performance is like that of a newcomer. They hardly learn the fundamentals of software development. After a few years of growth, they stagnate and do not understand why.

At the same time, I have also worked with some developers who have only a few years of experience but show amazing growth potential. They have a positive work attitude and understand how to avoid unprofessional behavior.

Based on certain habits of developers, it is very obvious to distinguish who is more professional and who is more amateur. Let’s delve into the 7 behaviors of amateur developers that every programmer should be wary of, as these mistakes hinder our career development.

Bad Habits in Embedded Software Development to Avoid

1. Submitting Large Amounts of Code at Once

Think back, have you ever encountered someone who submits a large amount of code at once, and you don’t want to review their code? Yes, unprofessional developers do this. They include modifications to multiple modules in one code review request and urge you to prioritize reviewing their code. Well, how can you not be anxious? If it’s pushed to the back, you still have to deal with code conflicts. This issue also exists among many senior developers who do not make any submissions during feature development and only submit all changes when the feature is completely finished, leading to a lot of modifications based on any feedback during the code review.

When I encounter such code review requests, the first thing I do is ask the submitter to break it down into smaller requests by functional modules. I will only review the first functional requirement in the issues (task management system) and then return it to the submitter. If I have time, I will connect with the submitter for a real-time code review.

What Can You Do?
  • Make small code submissions. A good practice is to submit code every working day.
  • Do not submit code that has not been compiled or will cause build failures.

2. Poorly Written Code

Inexperienced developers cannot write clean code; their code is often messy and scattered across various parts of the codebase.

When you try to read such code, you feel like you are in a maze. You gradually forget where you started, what you were looking for, and what function this piece of code fulfills.

Experienced developers know how to design code. Unless the functionality to be developed is obvious, you should first write down your understanding of the requirements on paper and draw a flowchart (a simplified specification document) before you even think about coding. Do not start coding until you have a clear understanding of how to make modifications.

If you do not follow the above rules, you will find it very painful when you look back at the code you have completed. Later, if you need to fix issues or add features, it will also become very tricky.

What Can You Do?
  • Before writing code, have a clear understanding of the functionality you want to implement. To clearly understand the requirements, ask as many questions as possible.
  • Keep your code concise and elegant. Other team members should be able to read the code and understand what it intends to do.

3. Working on Multiple Tasks Simultaneously

Inexperienced developers do not know when to start a task, how to make progress, or when to finish. They try to handle multiple tasks in parallel. They do not know how to break down a large task into smaller modules to ease the implementation difficulties.

When they receive a task, they do not first confirm the requirements with their superiors, but immediately start coding, and during the task, they do not communicate with their superiors about the task progress. Only when the task is completed do they provide you with feedback. By that time, you can only pray that the functionality they completed is what you wanted.

Another manifestation of inexperienced developers is that they push forward multiple tasks simultaneously; they handle multiple things at once, such as implementing several unrelated features, solving production environment issues, assisting other colleagues, etc.

Ultimately, they do not produce effective output. Although their attitude and intentions are good, the consequences for the whole team are disastrous, wasting a lot of time and causing the team to work overtime.

What Can You Do?
  • Focus on completing small tasks. Break down the tasks you receive into smaller chunks, clarify the priority of the requirements, and complete them one small piece at a time.
  • Take on one task, complete it, and then start a new one.

4. Arrogance

For inexperienced developers, arrogance is very deadly. Arrogance prevents them from accepting criticism and suggestions from others. When you give feedback on their code or statements, they may think you are questioning their abilities.

Many newcomers exhibit this arrogance due to ignorance. Fresh out of school, they are full of confidence, not realizing that what they learned in school is far from the requirements of society. The smarter ones among them quickly adjust themselves with a zero-based mindset, striving to learn and adapt to the company culture.

In fact, it is not just newcomers—some developers with a few years of experience also display this arrogance. Part of the reason is their satisfaction with the professional accomplishments they have achieved, and another possible reason is their lack of opportunities to work with excellent people, resulting in a narrow perspective.

Moreover, arrogant behavior further proves that such developers indeed lack experience. This behavior can create many obstacles to their career development, as no one likes to work with an arrogant person. When their growth slows down, they do not look for reasons in themselves but rather blame others more.

What Can You Do?
  • Maintain humility on your path forward. Treating others politely will help you go further in your software development career.
  • Respect everyone. After a disagreement, when you express your opinion, respect the other person regardless of their status.

5. Failing to Learn from Past Mistakes

I have always believed that feedback mechanisms are very effective tools for software developers. Feedback from others helps us understand our shortcomings and how to improve. A smart developer knows how to use feedback from others to promote their growth.

Based on a developer’s reaction to constructive feedback, you can judge whether they lack experience. Inexperienced developers do not accept any constructive suggestions, even comments in code reviews, and they may see them as personal attacks.

Many years ago, a colleague wrote me a long email teaching me how to review code; he was angry about my comments on his code. His main point was that I should not focus on coding standards because he knew how to code, and I should only focus on whether the code met functional requirements.

If a developer feels offended by comments on their code from others, it can only indicate that they do not have real development experience. They work with a day-to-day mentality, lamenting that they have not met a mentor who appreciates them.

What Can You Do?
  • Maintain a positive attitude towards every piece of feedback. For each piece of feedback, you can choose to accept or reject it, but maintain a calm attitude before rejecting it.
  • Learn from mistakes. No one can be right all the time; maintaining a lifelong learning mindset will keep you strong.

6. Handling Personal Affairs During Work Hours

In daily work, you often find some team members handling personal affairs during work hours, such as checking social media, browsing shopping sites, or playing games.

I once had a team member who traded stocks during work hours. Because he needed to pay attention to stock trends from time to time, his personal output quality was low. Other colleagues had a lot of complaints about him because they had to spend more time rushing to meet deadlines.

After the development manager spoke with this developer, he changed for a while, but soon fell back into old habits. Ultimately, the company had no choice but to terminate his employment.

Handling personal affairs during work hours is a violation of business ethics and demonstrates your lack of professionalism. We need to be dedicated to our work, after all, we rely on it for a living.

What Can You Do?
  • Avoid handling personal matters during work hours as much as possible. If you need to leave for a few hours to deal with personal matters, please ask your manager for leave.
  • Use break times to browse your social media. If you must order takeout or trade stocks, please use your lunch break.

7. Blindly Chasing Technology Trends

Another manifestation of inexperienced developers is their attitude towards technology trends. You will find that they are always talking about technology trends, and when a new trend appears, they immediately abandon the old trend and embrace the new one.

Inexperienced developers are always learning tutorials. Undoubtedly, tutorials are very useful learning tools, but simply following the tutorials step by step without any practice is undoubtedly a waste of time. It may give you a false sense of mastery, but whether you truly understand the knowledge needs to be tested through real projects.

Developers rarely use popular technologies or knowledge learned from tutorials to create something new; they learn popular technologies or tutorials mostly to satisfy their vanity or fear of missing out.

What Can You Do?
  • Spend time and energy learning technologies that can be genuinely applied in work or real projects.
  • Learn from tutorials and practice in a timely manner; compared to beginner tutorials, implementing a feature yourself can teach you much more.

Inexperienced developers will lower the efficiency of the entire team due to their inefficiency. Their erroneous attitude towards their work will cause them to miss many opportunities in their career development.

Understanding and avoiding these erroneous attitudes and work methods is the right approach for smart individuals. If you are unfortunately afflicted with these bad habits, over time, you will find it increasingly difficult to shake them off.

Previous Recommendations

Should Beginners Choose Arduino or Raspberry Pi?

Is the Embedded Industry Really Hopeless? Listen to What the Experts Say!

Can’t Lack Chips, How to Distinguish Real from Fake Chips?

Bad Habits in Embedded Software Development to Avoid

Leave a Comment