Enter Key Unveiled

Do You Know Which "Car" the Enter Key Returns To?
Compared to traditional industries (except for media and writing), there seem to be quite a few more writers in the software industry. This might be because a programmer's job involves typing on a keyboard, so typing extra words is not too difficult. But more likely, it's because the software industry has rapidly developed and standardized over the decades, accomplishing in a short time what many traditional industries take hundreds or even thousands of years to achieve. Thus, there's an abundance of topics to discuss, and programmers, as typical knowledge workers, generally possess higher-than-average literacy, making it easier for them to organize and express themselves. Today, the "software" industry has become a vast and segmented sector. "Programmer" encompasses many categories so detailed that outsiders cannot distinguish them, yet to the outside world, programmers often seem like a quiet, hard-to-understand bunch. As Uncle Bob mentions in his book, when we think of doctors, lawyers, or accountants, we immediately acknowledge their professionalism. But when it comes to programmers, it is often difficult to classify them as "professionals." The book "The Clean Coder" is written to explain how to become a "professional."
In my view, the application of this book extends well beyond programmers. At least in traditional industrial fields like engineering and energy, this book holds significant reference value for becoming a professional. (Of course, for programmers, the book's content is more specific and in-depth.) Over the past few decades, the software industry (let's use this broad term) has swiftly transitioned from rough to refined stages and then to continuous iteration and improvement. Compared to traditional industrial sectors, this advancement is extremely rapid, determined by its inherent characteristics: if a piece of software isn't standardized enough, it won't compile. Even errors in case or punctuation can confuse the compiler. If there's a tiny logical oversight, it might plunge the entire system into the abyss of defects. Compared to any other type of work (perhaps excluding financial work), these requirements are extremely stringent. Of course, the critical stages in engineering also demand a high level of rigor, but not to the point where every practitioner's every step is scrutinized to such an extent. The software industry's development and standardization are precisely due to these demands, while the engineering sector cannot achieve the same level of standardization due to scale reasons, no matter how project management is promoted. In this sense, any book about the software industry and its practitioners is worth studying and researching by those in the industrial field, as it may inspire development and provide reference in their own areas.
In principle, the content on professionalism in "The Clean Coder" is not industry-specific. It's just that the author, Robert C. Martin (Uncle Bob), is a programmer by trade, so the cases and practices in the book are from the programming industry. The book discusses elements like understanding professionalism, professional spirit and effective commitment (how to firmly say "no" to what can't be promised and how to make commitments the baseline of professionalism), managing work state, adjusting one's work condition, maintaining rhythm, and facing blockages and difficulties (seeking help from colleagues is a very constructive suggestion from Uncle Bob), estimating and testing work, practicing (deliberate practice is essential for becoming a professional), managing time, handling stress, collaborating with others, becoming part of a cohesive team, and how professionals transition from apprenticeship to proficiency to mastery. These elements are important to any professional, and the content is highly valuable. It's a distilled summary of Uncle Bob's 42-year programming career.
The emphasis on this book being equally suitable for the industrial field is primarily related to my background and familiarity with engineering. More importantly, the software and industrial industries are quite similar in their models, with much to learn from each other. Especially in project implementation and engineering management, traditional industries need to borrow more ideas and methods from the software sector.
In the last part of the book, Uncle Bob talks about details. In programming work, coding is never the most important part; details are. He mentioned the most important characters in coding, \n and \t. The former represents a line feed, the latter a carriage return. Today, hardly anyone knows the difference between the two, yet programs still mix in \n, \n\t, and \t\n. Why is this?
The answer lies in the relics of the printer era. In the printer age, when a line of text was printed, you first needed a line feed to ensure the print head would print content on the next line. Then, you needed a carriage return because the print head was on a device called a "carriage," and returning it meant moving the carriage back to the position of the first character, allowing you to start printing on the next line. Today, for most computer users, both line feed and carriage return operations are performed with a single "Enter" key, and we don't care where the "carriage" is returned. But for programmers, this subtle difference can lead to program crashes, so even such details deserve enough attention.
Here are some of the book's highlights:
Management repeatedly emphasizes the importance of deadlines. If we delay once, the government will blacklist us for the year. If clients don't sign with us immediately, they'll go to other suppliers. If we don't get the orders, we're out of the game.
Career development ultimately is one's own responsibility. Employers have no obligation to ensure your invincibility in the workplace, nor to train you, send you to conferences, or buy you books. Those who rely entirely on employers for career development will suffer.
Keep learning: Would you consult a doctor who no longer reads medical journals? Would you hire an accountant who doesn't know the new tax laws? Would you seek help from a lawyer who doesn't understand current legal provisions? Why would employers hire developers who can't keep up with the times?
True professionals often practice diligently to achieve technical perfection. Just completing daily work isn't practice; it's execution. Practice means specialized skill training outside of daily work to improve oneself.
Professionals don't need to say "yes" to every request. However, they should strive to find innovative solutions and meet requests whenever possible. When professionals give a positive response, they use commitment language to ensure all parties clearly understand the promise.
A professional developer's "done" has only one meaning: done is done. Done means all code is written, all tests passed, and QA and stakeholders have approved. That's what complete means.
Meetings are actually costly, including wages, benefits, equipment, etc. Two truths exist about meetings: first, they are necessary; second, they waste a lot of time. Professionals know the high cost of meetings and value their time. If a meeting doesn't have real and significant results, they should proactively refuse.
Understand that staying in a meeting room wasting time, attending largely meaningless meetings, is unprofessional. You're responsible for responsibly allocating the time and money your boss gives you.
Even under pressure, professional developers remain calm and decisive (think of a surgeon in the operating room). Despite increasing pressure, they adhere to their training and discipline, knowing these are the best methods to conquer the stress from deadlines and commitments.
Let your team and supervisor know you're in deep trouble. Tell them about your best plan to get out of the predicament. Request their support and guidance.
A cohesive team usually has about 12 members. The maximum can be 20, the minimum just 3.
Besides self-motivation and effective guidance from seasoned mentors, nothing accelerates a young software developer's transition to a proficient and efficient professional more.
The worst performance of a professional programmer is being oblivious to external matters, burying themselves in technology, ignoring even when the company's business is on the brink of collapse. Your job is to prevent the business from falling into distress, ensuring the company can develop sustainably. Thus, professional programmers understand obligations... In short, they focus on how to stay aligned with the business.


