Temiz Kod Tasarımı - Lemi Orhan Ergin

Devnot TV
12 May 201739:35

Summary

TLDRThe speaker emphasizes the importance of software design, which is often overlooked compared to architecture. Well-designed code should be easy to change over time. He recommends techniques like testing, refactoring, reducing coupling between components, and increasing cohesion within components to improve design quality. The speaker argues that taking time to create clean code ultimately saves more time compared to quick but messy code, even if managers don't see the immediate benefit.

Takeaways

  • 😃 The speaker's journey began around 2012-2013, where they shifted focus from coding to reviewing projects, leading to a significant change in perspective.
  • 🙂 Encountering a peculiar 15-line method dramatically altered the speaker's viewpoint on code quality and efficiency.
  • 📝 Emphasizes the importance of understanding and reviewing tests to comprehend application behavior, highlighting that functioning code in production does not imply it's optimal.
  • 🙋🏻‍♂️ Advocates for the necessity of questioning and reevaluating one's own code, stressing that mere functionality is insufficient for quality.
  • 💡 A pivotal moment was realizing that complex code could often be simplified significantly, which sparked a deeper interest in writing quality code over merely learning new technologies.
  • 🛠 Technical debt within an application can lead to its downfall, underscoring the need for continuous improvement and maintenance of code.
  • 💬 Highlights the cultural aspects of coding, including the significance of addressing 'code smells' to avoid future problems.
  • 📚 References Jack Reeves's view that code itself is the design, suggesting a shift towards recognizing coding as a form of design work.
  • 🔧 Stresses the importance of automated testing, refactoring, and clean code practices as essential for sustainable software development.
  • 📰 Discusses the dangers of coupling and the lack of cohesion, advocating for code that is easy to manage, modify, and understand.

Q & A

  • What significant change in perspective did the speaker experience in 2013 related to code review?

    -The speaker's perspective changed dramatically after coming across a 15-line method that, despite working correctly in production with unit tests, appeared odd to them. This led them to question and rethink their approach to writing and reviewing code.

  • How did the speaker approach unfamiliar frameworks and technologies?

    -The speaker tackled unfamiliar frameworks and technologies by reviewing and analyzing codes written using these, despite not having worked with them directly. This process involved scrutinizing codes they hadn't written to understand their structure and logic.

  • What was the speaker's main focus in their software development career?

    -The speaker's main focus has been on writing high-quality code. They emphasize the importance of not just making code work but ensuring it is well-designed and maintainable, indicating a shift from merely learning new technologies to mastering the art of coding.

  • Why does the speaker believe that addressing 'code smells' is crucial?

    -The speaker believes that addressing 'code smells' is crucial because these indicate deeper issues within the code that could lead to technical debt. Recognizing and rectifying these smells are essential for maintaining a healthy codebase and preventing future problems.

  • What does the speaker say about the role of testing in software development?

    -The speaker underscores the importance of testing, stating that untested code is equivalent to unfinished code. They argue that thorough testing is essential to ensure code reliability and functionality, drawing a parallel to proving mathematical formulas.

  • How does the speaker view the relationship between code design and software architecture?

    -The speaker views code design as integral to software architecture, emphasizing that design isn't just about the structural aspects but also involves the code itself. They argue that every line of code contributes to the overall design and architecture of the software.

  • What metaphor does the speaker use to describe software development?

    -The speaker compares software development to growing a city, where initial designs might not accommodate future growth. This metaphor highlights the need for scalable and adaptable code design to support the software's evolution over time.

  • What is the speaker's stance on refactoring?

    -The speaker advocates for continuous refactoring as a part of the development process, rather than a separate phase. They stress that refactoring is essential for maintaining code quality and should be integrated into daily coding activities.

  • According to the speaker, how can software developers ensure code quality?

    -To ensure code quality, the speaker suggests practices like pair programming, code reviews, and embracing a culture of communication and collaboration among developers. These practices help identify and rectify issues early in the development process.

  • What does the speaker identify as a key challenge in software development?

    -The speaker identifies managing complexity and avoiding 'code smells' as key challenges. They emphasize the need for clean code practices, including proper naming conventions, reducing dependencies, and enhancing code cohesion to tackle these challenges effectively.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now