Facebook Pixel
Searching...
Español
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
The Clean Coder

The Clean Coder

A Code of Conduct for Professional Programmers
por Robert C. Martin 2011 210 páginas
4.26
9k+ calificaciones
Escuchar
Escuchar

Puntos clave

1. El profesionalismo en el desarrollo de software requiere asumir responsabilidades y decir "no"

"Los profesionales dicen la verdad al poder. Los profesionales tienen el valor de decir no a sus gerentes."

Asumir responsabilidades está en el núcleo del profesionalismo en el desarrollo de software. Esto significa reconocer los errores, cumplir con los compromisos y entregar trabajo de alta calidad. Los profesionales entienden que sus acciones tienen consecuencias y están dispuestos a ser responsables de ellas.

Decir "no" es un aspecto igualmente importante del profesionalismo. Esto implica:

  • Rechazar plazos poco realistas
  • Oponerse a malas prácticas
  • Negarse a comprometer la calidad
  • Evitar sobrecomprometerse

Los profesionales reconocen que decir "no" cuando es necesario protege tanto a ellos mismos como a su equipo de posibles fracasos y mantiene la integridad de su trabajo.

2. El Desarrollo Guiado por Pruebas (TDD) es esencial para producir código de alta calidad

"El jurado ha decidido. La controversia ha terminado. TDD funciona."

Beneficios del TDD incluyen:

  • Mejora de la calidad del código
  • Reducción de la tasa de defectos
  • Mejor diseño y arquitectura
  • Mayor confianza en los cambios de código

El TDD implica escribir pruebas antes de escribir el código real. Este enfoque obliga a los desarrolladores a pensar en el diseño y la funcionalidad de su código antes de la implementación, lo que lleva a un código más limpio, modular y mantenible.

Implementar TDD requiere disciplina y práctica. Puede ralentizar el desarrollo inicial, pero a largo plazo compensa al reducir errores, mejorar la calidad del código y facilitar la refactorización y el mantenimiento del código con el tiempo.

3. La gestión efectiva del tiempo y el enfoque son cruciales para la productividad

"Programar es un ejercicio intelectual que requiere períodos prolongados de concentración y enfoque."

Gestionar el tiempo de manera efectiva es crítico para los desarrolladores de software. Esto implica:

  • Priorizar tareas
  • Evitar distracciones
  • Usar técnicas como el método Pomodoro
  • Tomar descansos regulares para recargar energías

Mantener el enfoque es igualmente importante. Los desarrolladores deben reconocer sus horas de mayor productividad y estructurar su trabajo en consecuencia. Es esencial crear un entorno propicio para el trabajo profundo y minimizar las interrupciones durante estos períodos.

Los profesionales también entienden la importancia del equilibrio entre la vida laboral y personal y evitan el agotamiento gestionando sus niveles de energía y tomando tiempo para actividades personales y descanso.

4. La estimación es una habilidad que requiere práctica y comunicación clara

"Una estimación es una suposición. No implica ningún compromiso. No se hace ninguna promesa."

Mejorar las habilidades de estimación implica:

  • Dividir las tareas en piezas más pequeñas y manejables
  • Usar datos históricos y experiencias pasadas
  • Considerar riesgos e incertidumbres potenciales
  • Revisar y ajustar regularmente las estimaciones

Los profesionales entienden que las estimaciones no son compromisos. Comunican claramente las incertidumbres involucradas y proporcionan rangos en lugar de números únicos cuando es apropiado.

La comunicación efectiva de las estimaciones es crucial. Esto incluye explicar las suposiciones detrás de la estimación, proporcionar contexto y actualizar a las partes interesadas si las circunstancias cambian. Los profesionales también resisten la presión de proporcionar estimaciones poco realistas o comprometerse con plazos que saben que son imposibles de cumplir.

5. Manejar la presión profesionalmente implica mantener la calma y confiar en las disciplinas

"El desarrollador profesional es calmado y decisivo bajo presión."

Mantener la calma bajo presión es una característica distintiva del profesionalismo. Esto implica:

  • Mantener la perspectiva
  • Enfocarse en soluciones en lugar de problemas
  • Comunicar claramente con los miembros del equipo y las partes interesadas
  • Evitar la tentación de tomar atajos o comprometer la calidad

Los profesionales confían en sus disciplinas y mejores prácticas establecidas cuando están bajo presión. Entienden que abandonar las buenas prácticas en tiempos de estrés a menudo conduce a más problemas a largo plazo.

Gestionar las expectativas también es crucial al lidiar con la presión. Esto incluye ser honesto sobre los desafíos, proporcionar actualizaciones regulares y proponer soluciones realistas en lugar de hacer promesas que no se pueden cumplir.

6. La colaboración y el trabajo en equipo son fundamentales para el éxito en el desarrollo de software

"Programar se trata de trabajar con personas."

La colaboración efectiva implica:

  • Comunicación clara
  • Escucha activa
  • Respeto por perspectivas diversas
  • Disposición a comprometerse y encontrar soluciones juntos

Los profesionales entienden que el desarrollo de software es un deporte de equipo. Trabajan activamente para romper silos, compartir conocimientos y apoyar a sus colegas.

La programación en pareja y las revisiones de código son prácticas valiosas que promueven la colaboración y mejoran la calidad del código. Los profesionales están abiertos a la retroalimentación y la ven como una oportunidad de crecimiento en lugar de una crítica.

7. El aprendizaje continuo y la práctica son vitales para el crecimiento profesional

"Los profesionales practican. Los verdaderos profesionales trabajan duro para mantener sus habilidades afiladas y listas."

El aprendizaje continuo es esencial en el campo en rápida evolución del desarrollo de software. Esto incluye:

  • Mantenerse al día con nuevas tecnologías y mejores prácticas
  • Leer libros y artículos
  • Asistir a conferencias y talleres
  • Experimentar con nuevas herramientas y técnicas

La práctica deliberada es igualmente importante. Esto implica:

  • Trabajar en proyectos paralelos
  • Participar en desafíos de programación
  • Contribuir a proyectos de código abierto
  • Revisar y refinar regularmente las habilidades fundamentales

Los profesionales entienden que el aprendizaje es un viaje de por vida y asumen la responsabilidad de su propio crecimiento y desarrollo.

8. Las pruebas de aceptación aseguran una comunicación clara de los requisitos

"El propósito de las pruebas de aceptación es la comunicación, claridad y precisión."

Beneficios de las pruebas de aceptación incluyen:

  • Una comprensión más clara de los requisitos
  • Reducción de malentendidos entre desarrolladores y partes interesadas
  • Detección temprana de problemas e inconsistencias
  • Mejora de la calidad general del software

Las pruebas de aceptación sirven como una especificación formal de cómo debe comportarse el sistema. Se escriben en colaboración entre desarrolladores, testers y partes interesadas del negocio para asegurar una comprensión compartida de los requisitos.

Automatizar las pruebas de aceptación permite una retroalimentación más rápida y ayuda a detectar regresiones temprano. Los profesionales abogan por e implementan pruebas de aceptación automatizadas como parte de su proceso de desarrollo.

9. La mentoría y la artesanía son clave para desarrollar profesionales capacitados

"La escuela puede enseñar la teoría de la programación de computadoras. Pero la escuela no puede, y no enseña la disciplina, práctica y habilidad de ser un artesano."

La mentoría juega un papel crucial en el desarrollo de profesionales capacitados. Esto implica:

  • Compartir conocimientos y experiencia
  • Proporcionar orientación y retroalimentación
  • Desafiar a los aprendices a crecer y mejorar
  • Modelar comportamientos y prácticas profesionales

La artesanía en el desarrollo de software es más que solo habilidades técnicas. Abarca:

  • Un compromiso con la calidad
  • Mejora continua
  • Comportamiento ético
  • Orgullo en el propio trabajo

Los profesionales reconocen su responsabilidad de mentorear y guiar a los desarrolladores menos experimentados, ayudando a cultivar la próxima generación de practicantes capacitados y mantener altos estándares en la industria.

Última actualización:

FAQ

What's "The Clean Coder" about?

  • Professionalism in Programming: "The Clean Coder" by Robert C. Martin is a guide to professional conduct for software developers, emphasizing the importance of professionalism in the field.
  • Code of Conduct: It outlines a code of conduct for programmers, focusing on responsibility, accountability, and ethical behavior in software development.
  • Practical Advice: The book provides practical advice on how to handle common challenges faced by programmers, such as dealing with pressure, managing time, and saying no.
  • Improving Software Craftsmanship: It aims to improve the craft of software development by encouraging developers to adopt disciplined practices and continuous learning.

Why should I read "The Clean Coder"?

  • Enhance Professionalism: Reading this book can help you enhance your professionalism and improve your reputation as a reliable software developer.
  • Practical Guidance: It offers practical guidance on handling real-world challenges in software development, making it a valuable resource for both new and experienced programmers.
  • Ethical Framework: The book provides an ethical framework for making decisions, which is crucial in maintaining integrity and trust in the workplace.
  • Career Growth: By adopting the practices and principles outlined in the book, you can advance your career and contribute positively to your team and organization.

What are the key takeaways of "The Clean Coder"?

  • Responsibility and Accountability: Programmers should take responsibility for their work and be accountable for their mistakes, striving to deliver high-quality software.
  • Saying No: Learning to say no is crucial when faced with unrealistic demands or deadlines, ensuring that commitments are realistic and achievable.
  • Continuous Learning: Developers should continuously learn and practice their craft to stay relevant and improve their skills.
  • Testing and Clean Code: Emphasizes the importance of writing clean, maintainable code and using test-driven development to ensure software quality.

What is the "do no harm" approach in "The Clean Coder"?

  • Avoiding Bugs: Programmers should strive to avoid introducing bugs into the software, as they can cause significant harm to the project and the business.
  • Testing Thoroughly: Code should be thoroughly tested to ensure it works as intended, with automated tests providing a safety net for changes.
  • Maintaining Structure: The structure of the code should be maintained to ensure it remains flexible and easy to change, preventing future issues.
  • Continuous Improvement: Developers should continuously refactor and improve the codebase to prevent it from becoming rigid and difficult to work with.

How does "The Clean Coder" suggest handling pressure?

  • Avoiding Pressure: The book advises avoiding pressure by managing commitments carefully and maintaining clean code to prevent last-minute crises.
  • Staying Calm: Under pressure, developers should remain calm and rely on their disciplines and training to guide them through challenging situations.
  • Effective Communication: Communicating effectively with the team and stakeholders can help manage expectations and reduce pressure.
  • Seeking Help: When under pressure, seeking help from colleagues and collaborating can provide support and lead to better solutions.

What is the role of acceptance testing in "The Clean Coder"?

  • Defining Done: Acceptance tests help define what "done" means for a feature, ensuring that all parties agree on the requirements and expectations.
  • Automated Tests: These tests should be automated to provide a reliable and repeatable way to verify that the software meets the specified requirements.
  • Collaboration: Acceptance tests are created through collaboration between developers, testers, and stakeholders, ensuring that all perspectives are considered.
  • Reducing Ambiguity: By specifying requirements in the form of tests, ambiguity is reduced, leading to clearer communication and fewer misunderstandings.

What does "The Clean Coder" say about saying no?

  • Importance of Saying No: Saying no is crucial when faced with unrealistic demands or deadlines, protecting the quality of the work and the well-being of the developer.
  • Professional Responsibility: It is a professional responsibility to push back against requests that cannot be reasonably fulfilled without compromising standards.
  • Negotiation: Saying no should be part of a negotiation process to find a mutually agreeable solution that meets the needs of the business and the capabilities of the team.
  • Avoiding Overcommitment: By saying no when necessary, developers can avoid overcommitment and ensure they can deliver on their promises.

How does "The Clean Coder" define professionalism in programming?

  • Taking Responsibility: Professionalism involves taking responsibility for one's work and being accountable for the outcomes, both good and bad.
  • Continuous Improvement: Professionals continuously seek to improve their skills and knowledge, staying current with industry trends and best practices.
  • Ethical Behavior: Ethical behavior is a cornerstone of professionalism, ensuring that developers act with integrity and honesty in all their dealings.
  • Commitment to Quality: Professionals are committed to delivering high-quality software, adhering to best practices and standards to achieve this goal.

What is the significance of test-driven development (TDD) in "The Clean Coder"?

  • Ensuring Quality: TDD is a discipline that helps ensure the quality of the software by writing tests before the code, guiding development.
  • Confidence in Code: By having a suite of tests, developers can have confidence that their code works as intended and that changes won't introduce new bugs.
  • Design Influence: TDD influences design by encouraging decoupled and testable code, leading to better architecture and maintainability.
  • Professional Practice: TDD is presented as a professional practice that developers should adopt to improve their craft and deliver reliable software.

What are the best quotes from "The Clean Coder" and what do they mean?

  • "Professionalism is all about taking responsibility." This quote emphasizes the importance of being accountable for one's work and actions as a software developer.
  • "QA should find nothing." This highlights the goal of developers to deliver software that is so well-tested and reliable that QA finds no issues.
  • "Saying yes to dropping our professional disciplines is not the way to solve problems." This warns against compromising standards and practices in the face of pressure or deadlines.
  • "The only way to prove that your software is easy to change is to make easy changes to it." This underscores the importance of maintaining clean and flexible code that can be easily modified.

How does "The Clean Coder" address time management?

  • Prioritizing Tasks: Developers should prioritize tasks based on their importance and urgency, focusing on what delivers the most value.
  • Avoiding Meetings: Unnecessary meetings should be avoided to maximize productive time, with developers attending only those that are essential.
  • Using Techniques: Techniques like the Pomodoro Technique can help manage time effectively by breaking work into focused intervals.
  • Balancing Work and Life: Time management also involves balancing work with personal life, ensuring that developers maintain their well-being and avoid burnout.

What is the role of mentoring in "The Clean Coder"?

  • Guiding New Developers: Mentoring is crucial for guiding new developers, helping them learn best practices and develop their skills.
  • Sharing Knowledge: Experienced developers should share their knowledge and experience with less experienced colleagues to foster growth and development.
  • Building a Culture: Mentoring helps build a culture of learning and improvement within a team, encouraging continuous development.
  • Professional Responsibility: It is a professional responsibility for senior developers to mentor and support junior team members, contributing to the overall success of the team.

Reseñas

4.26 de 5
Promedio de 9k+ calificaciones de Goodreads y Amazon.

The Clean Coder recibe opiniones mixtas, con muchos elogiando sus ideas sobre el desarrollo profesional de software. Los lectores aprecian las anécdotas y consejos del autor sobre ética laboral, estimación y comunicación. Algunos encuentran el libro desactualizado o extremo en sus expectativas, particularmente en lo que respecta a las horas de trabajo. Los críticos señalan historias repetitivas y un tono egocéntrico. A pesar de las discrepancias, la mayoría de los reseñadores lo recomiendan como un recurso valioso para los aspirantes a programadores profesionales, destacando su énfasis en la disciplina, la responsabilidad y el aprendizaje continuo.

Sobre el autor

Robert Cecil Martin, conocido como Tío Bob, es un renombrado ingeniero de software y consultor. Aboga por los métodos de desarrollo Ágil y es el Presidente de Object Mentor Inc. La carrera de Martin abarca décadas, durante las cuales ha asesorado a clientes globales sobre Diseño Orientado a Objetos, Patrones, UML y Metodologías Ágiles. Se desempeñó como Editor en Jefe del C++ Report desde 1996 hasta 1999. Figura prominente en la comunidad de desarrollo de software, Martin es un orador muy solicitado en conferencias y ferias internacionales. Su experiencia e influencia duradera en el campo lo han convertido en una voz respetada en las prácticas de ingeniería de software y el desarrollo profesional.

Other books by Robert C. Martin

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Feb 28,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →