Best of General ProgrammingMarch 2025

  1. 1
    Article
    Avatar of freecodecampfreeCodeCamp·1y

    Learn Software Design Basics: Key Phases and Best Practices

    Good software design is essential to avoid inefficiencies and bottlenecks. It involves creating scalable, maintainable, and easy-to-debug systems. Key elements include defining the problem statement, identifying use cases, stating requirements, designing the architecture, and drafting a detailed design. Assumptions and thorough documentation are crucial for clarity and long-term success. A practical example of designing a financial expense categorization system illustrates these principles.

  2. 2
    Article
    Avatar of zerotomasteryZero To Mastery·1y

    I would say it’s well deserved…

  3. 3
    Article
    Avatar of communityCommunity Picks·1y

    HTML Symbols

    Symbl offers a comprehensive library of special HTML symbols, entities, and icons for enhancing web projects. It includes diverse options like arrows, mathematical symbols, currency signs, and decorative icons. With easy copy-paste functionality, it's perfect for developers and designers looking to add unique characters to their websites, apps, and documents. The tool is free to use and requires no registration.

  4. 4
    Article
    Avatar of elevateElevate·1y

    Applied "Software Engineering at Google"

    Google's software engineering practices provide valuable insights that can be adapted by organizations of any size. Key principles include cultivating a comprehensive testing culture with automated tests, establishing effective code review processes, maintaining thorough documentation, fostering knowledge sharing, managing dependencies wisely, using progressive rollouts and feature flags, refining incident response procedures, proactively managing technical debt, prioritizing psychological safety in teams, and leveraging AI to enhance software engineering. Understanding the 'why' behind these practices and starting with small, impactful changes can help build a strong engineering culture focused on quality and continuous improvement.

  5. 5
    Article
    Avatar of organizingautomationOrganizing Automation·1y

    Software requirements explained

    Software requirements are crucial for defining the conditions that must be met for a solution to be effective. These include business requirements that focus on the 'why', functional requirements describing necessary functions, non-functional requirements concerning qualities like security and performance, and technical requirements that set implementation constraints. Requirements should be clear, concise, and validated through user interaction and testing. Effective requirements management involves prioritization, handling conflicts, and staying adaptable as understanding of the problem evolves.

  6. 6
    Article
    Avatar of golangGo·1y

    Good-bye core types; Hello Go as we know and love it!

    Go 1.25 removes the concept of core types from the language specification, simplifying the language and reverting to pre-generics rules for certain operations. Despite generics remaining, this change makes the specification easier to understand and paves the way for potential future improvements without altering current behavior.

  7. 7
    Article
    Avatar of awegoAwesome Go·1y

    Deep vs Shallow Go interfaces

    The post explores the concepts of deep and shallow interfaces in Go, referencing insights from 'A Philosophy of Software Design' by John Ousterhout. It compares the simplicity and power of interfaces like io.Reader with the complexity of more extensive interfaces such as the Cmdable interface from the redis-go client. The discussion highlights the trade-offs in designing abstractions and the importance of balancing functionality with simplicity to reduce user cognitive load.

  8. 8
    Article
    Avatar of inside_javaInside Java·1y

    Java 24 Release Notes Review for Developers

    Java 24 is set to release on March 18th, and this review covers all the significant changes and updates that developers should be aware of.

  9. 9
    Video
    Avatar of TechWithTimTech With Tim·1y

    Master These 3 Software Design Principles... or Stay a Beginner

    Learn three crucial software design principles to boost your coding skills: the single responsibility principle, the open/closed principle, and the dependency inversion principle. Understand their definitions and see practical examples to illustrate how to apply these principles in Python, ensuring your code is more maintainable, scalable, and flexible. Enhance your development process and improve code quality by adhering to these tested guidelines.

  10. 10
    Article
    Avatar of sbaziotisStefanos Baziotis·1y

    Getting Started with Compilers

    Learn how to get started with compilers from an opinionated perspective. The guide recommends avoiding high-level languages for writing compilers and emphasizes practical, hands-on experience. Key resources include Nora Sandler's article series and the LCC compiler book, which provide thorough explanations and real-world examples. The guide also discusses different aspects of compiler construction such as lexing, parsing, type checking, and code generation.

  11. 11
    Article
    Avatar of watercoolerWatercooler·1y

    Teachers Really Didn't Think This One Through, Did They?

    Effective searching is a crucial skill in software engineering. While education systems may discourage the use of Google, in the professional world, developers often rely on Google searches, Stack Overflow, and documentation lookups to find solutions. The most efficient developers are those who can quickly find the right information rather than those with a photographic memory.

  12. 12
    Article
    Avatar of microservicesioMicroservices.io·1y

    Microservices rules #7: Design loosely design-time coupled services - part 1

    Microservices rule #7 focuses on designing loosely design-time coupled services, a key principle for effective use of microservices. This part explains the concepts of design-time coupling and cohesion, highlighting the benefits of loose design-time coupling. Future parts will cover how to design such systems and detect tight coupling.