Skip to content

Latest commit

 

History

History
457 lines (340 loc) · 45.4 KB

File metadata and controls

457 lines (340 loc) · 45.4 KB

drawing

Let's learn about Software Design via these 111 free blog posts. They are ordered by HackerNoon reader engagement data. Visit the /Learn or LearnRepo.com to find the most read blog posts about any technology.

Software design is the process of defining the architecture, components, interfaces, and other characteristics of a system or component. It matters for creating robust, scalable, and maintainable software by addressing requirements and constraints early in the development cycle, ensuring long-term success.

Learn how to resolve the "blocked a frame with origin "null" from accessing a cross-origin frame error."

He is not our friend. It does not simplify life or make us more efficient. Just more lazy. It is time to stop using null.

Sometimes a short thought can bring amazing ideas. There are some great quotes I’ve been collecting. I use them as inspiration or motto for some articles.

GUI design has become the best choice of user interface design. Nevertheless, in spite of the unpredictable popularity of GUI, few application programs have good interface design and live up to graphic user interface design principles. Additionally, it’s extremely difficult to use the expertise and existing documents to explain what an excellent and direct-viewing operation interface is.

If you ask any software developer, there’s a decent chance that they have tried their hand at game development. It seems like a natural fit since it uses many of the same skills. What’s more, programmers come into it with the knowledge that most aspiring game makers lack: how to write good code and create effective software.

This blog post summarizes the book “Clean Code” written by Robert Martin on how to write a readable and maintainable code.

Type-safe domain modeling in Kotlin. If it compiles, it works. With Valiktor and Konad

Best Practice Using Timers in DotNet (.NET) CSharp (C#), Dependency Injection (DI), Inversion of Control (IoC), Test Driven Development (TDD), Unit Testing

Allowed global variables and supposed memory savings

Free online tools for developers to help them with daily tasks.

Ye olde Reliable Data Structures and Their Controversial (Write) Access.

Your Practical Introduction to Test Driven Development

Software design patterns have been used to package solutions to many common design conundrums. Each one has its own advantages and drawbacks to consider.

Software architecture, design and process of architecting explained using a case study.

A root cause analysis of all failures of our software will find a single culprit with multiple costumes. The enemy is always there. Many times disguised as laziness, sometimes simplification, and very frequently with the optimization outfit.

"I want to become a solution architect. What are the resources to learn more about architecture?" - We are all asking the wrong question.

A step-by-step guide to developing a Fluent API from scratch in .NET C# using the Builder Design Pattern.

Avoid software bottlenecks by understanding the 'God Object' anti-pattern in object-oriented programming. Learn its impacts, examples, and best practices.

If we build our entire paradigm on a single rule, we can keep it simple and make excellent models.

Learn strategy design patterns with practical examples. Why and how to use strategy patterns in software design.

A guided walkthrough of an object oriented program.

Software is eating the world. Those of us who work, live and love software do not usually stop by to think about its meaning.

[23. Designing Complex Software:

Tips for UX/UI Designers](https://hackernoon.com/designing-complex-software-tips-for-uxui-designers) Designing complex software demands user research, efficient layout planning, responsive systems and collaboration with developers.

Exception handling is common to most programming languages, and the mechanism and behaviors are similar in most languages: try\catch\finally. It is well documented. We are not going to discuss that.

Enhancing App Performance with Data Caching: A Step-by-Step Guide for Implementing Runtime and Persistent Cache in Your Android App

Sundar Annamalai and Vinod Pachipulusu about starting Loop as a virtual restaurant platform to help restaurants with their business.

Technical Debt is one thing, but when let to fester for too long, it can become Technical Fraud. A much more dangerous and much more insidious predator.

Software design is difficult. One has to design features to fit past and future code. C++ Temporary lifetime extension can teach us a lesson about such design.

Designing software systems is about tradeoffs and making tradeoff decisions is hard. You always feel like you are loosing one thing or the other but that’s not what we are going to talk about today.

Learn a software design approach that will make you a better engineer.

What actually are APIs and how do they work? Find out by looking at important APIs across the software stack and learn some computer science along the way!

This post will talk about popular design principles used in the software architecture world. Architecture is about the decisions you wish you could get right early in a product or project lifecycle.

Learn to write technical specs that get shipped. Practical guide covering problem statements, buy-in, implementation plans, and spec-driven development.

Failure is fashionable. Making is much easier than thinking and failures are not stigma, let’s take this idea to our code.

An extended analogy of software to home ownership

12/27/2023: Top 5 stories on the HackerNoon homepage!

Your favorite programming language may be approaching leap years incorrectly.

Explore the Single Responsibility Principle through the prism of 'reasons to change' and cost balancing.

Achieving scalability and robustness in system design requires careful consideration of business and architectural needs, and a deep understanding of technology

For any brand, creating its own identity is a challenging task. Especially for a start-up and small businesses, brand recognition is even more essential. Brand recognition can go a long way in influencing the success of a business. Every scale business spends a huge amount on marketing their brand and creating their imprint in people’s minds. 

To mutate is to evolve. It was proposed by Sir Charles Darwin and we use it in the software industry. But how mutable should software be?

Any test that has never failed has no value, and therefore, can be deleted. In order for any test to add value, it must have failed at least once.

Testing event-driven architectures like kafka based systems using record-replay strategy.

Learn how to represent Hierarchical Tree (Parent, Child) form data and its related operations in DotNet (.NET) CSharp (C#) Coding Programming Best Practices

Implement a better enhanced Repository Pattern in DotNet (.NET ) CSharp (C# ) following best practices Dependency Injection (DI) Inversion of Control (IoC)

DDD is not about technology. Instead, it's about understanding the problem you’re trying to solve in a business context.

Learn everything you need to know about Software Design via these 66 free HackerNoon stories.

Productivity software is indispensable for all of us. Dedicated tools for creating spreadsheets, writing down notes, managing our to-dos etc. ensure that we are productive in our professions. Incumbent vendors (e.g. Microsoft, Google) have dominated this space for many years — yet, there is a chance for new players to enter the stage. New challengers such as the E-Mail client Superhuman or the note-taking tool Roam Research can compete by developing highly opinionated products which deliberately omit flexibility. Instead, the software is stringently crafted around a very particular way of approaching a process, which is inherently seen as superior by the firm.

It is well-known that software engineering is at the lead of the services that use outsourcing and outside contractors.

Reasons to use Python Protocols instead of ABC library for Python interfaces.

Generating an infinitely long essay using the State design pattern in Python.

This isn't another "break down the monolith" article. This post is about making the applicable decisions, measuring and verifying the results

The process of testing design is becoming more and more important in the UX world. It allows you to determine if your design will work for your users and solve

Peter Norvig, the legendary Google mogul and AI titan, wrote a python essay to solve every Sudoku puzzle 10 years ago. Back then, he may not have expected that his code will inspire so many other posts and to be ported to so many different languages. For JavaScript, the latest version of the solver that I found was einaregilsson/sudoku from 2014

Learn the best practice on when to use Dependency Injection (DI), Inversion of Control (IoC) and IoC Containers. DotNet .NET CSharp C# Design Architecture

Explore the pros and cons of monolithic, microservices, and modular monolith architectures in software development to make informed decisions for your projects.

Learn about how to gather technical requirements for the systems you build.

A misguided software design can hurt both the business and the technology. It is therefore vital to understand an organizations goals and optimize accordingly.

Are we done on code smells? Probably never!

A design document is a shared file among engineers that describes a feature to be implemented.

Many software development principles are worth exploring and applying. However, I found 3 of them to be extremely helpful and powerful throughout my career.

The development life cycles of applications in an enterprise environment often follow a common theme. An application begins life with a clear purpose in mind and over time has requirements brought in that cause incremental additions to the scope of the original concept. These additions could either be completely in sync with the original concept or perhaps the requirement just had no better home to belong in. As the application matures to an end-of-life state it has now grown far past its original intended purpose and is in dire need of a refactor — breaking down the monolithic beast into smaller and more succinct components.

Design debt is a common yet rarely discussed problem startups face in iterative and incremental software development. Learn what it is, where it comes from, and why it is so important to prevent it.

With the introduction of OOPs, Inheritance and Composition entered our senses and still confusing us.

Agile methodology breaks up the project into many phases and distributes the workloads across the teams.

Software development or programming is not easy until you are a hardcore programmer. A while back, programmers had to code on dull command prompt screens, run the code on a separate compiler then debug it on some third platform. Today, although, programming needs the same dedication and efforts, it has become easier to code, compile, and debug in the same environment. All thanks to IDE-Integrated Development Environment platforms, which enable coders to perform all the major functions of programming in one place.

The cumulative effect of a large number of Input and Output requests has a significant negative impact on the performance and responsiveness of a service.

Explore how Domain-Driven Design tackles concurrency issues in complex legacy systems, based on real-world experiences and practical insights.

Incessant scrolling while using an application is perceived as a flaw on both mobile and desktop. To address this concern, a shift to horizontal scrolling of elements is in trend now.

Find out when start-ups and scale-ups should leverage Design Systems to develop new apps features and the main benefits it offers to keep costs at a minimum

Unlock innovative product design strategies in Designing in the Dark by Angelina Severino. Embrace creativity from diverse sources for groundbreaking solutions

Best Practice for designing Interfaces in DotNet (.NET) CSharp (C#). When to define a non-generic interface in addition to the generic interface.

What is common between streaming movies on Netflix, searching for information on Google, buying clothes on Amazon? You interacted with data services built on distributed systems. You interact with the largest distributed system daily: the Internet.

Dive into the heart of APISIX, the API Gateway with a plugin-based architecture.

Technology in business is a phenomenon that is taking over the world. Business is certainly not going anywhere anytime soon; technology is the only way to go. Business needs to have the right tools in place to compete in a competitive corporate environment.

How would we build an experience like the one above?

Demo Repo

Some applications need to limit users to a single client or browser instance. This post covers how to build, improve, and scale this feature. We begin with a simple web app with two API endpoints:

Learn paging/partitioning mathematical equations and how to apply them in JavaScript (JS) and DotNet (.NET) CSharp (C#) code. Coding Programming Development

Experienced software engineers learn what works after maintaining their work for years.

Know when to depend on String.GetHashCode() in DotNet (.NET) CSharp (C#), and when not. Coding Programming Software Development Engineering Architecture

Tests are a way to explicitly set expectations about code. You establish them to allow the machine to check whether your code meets the expectations.

Clean Architecture made practical. Stop drawing circles and see how to apply the layers in a real mobile projects, explained by a dev for devs.

This is the first in a planned multi-part series in which I'll write about security topics in blockchain development from a few different angles.

A product team is the backbone of any company with a digital offering. They're responsible for constructing goods or a service that not only provides value to users but is also a reflection of the organization they work for. Product teams spin many plates at once, spanning duties from product management, product marketing, user experience, and product analytics. In the below article, we talk through the 4 characteristics that make up a high-performing product team.

Eye-catching and beautiful graphics rule digital media. Any business requires graphics in its brand promotion creatives to showcase their brand and convey their message clearly. Whether you wish to make a featured image for your blog or edit product photos for posting on social media, you need the best graphic design software to make or edit your graphics.

Yes, we've finally reached a point where design is such a huge piece of a product's creation and maintenance that a whole paraphernalia of software will definitely be an essential asset to your projects. Each program will fill different needs and facilitate the best and most efficient work deliveries, be it structure, visual design, illustrations, interactions or animations.

Mistakes made during software redesign - Perfection, following a trend, hitting with a big hammer

Professional software engineers always look down on researchers who are not using the best software practices.

Explore vibe coding with Oblique Strategies to spark creativity in software dev. Embrace chaos, intuition & art.

Microservices Choreography is more than just eventing mechanism, it's also a tool to integrate legacy systems with new ones in a non-invasive manner.

Learn about the Facade design pattern in C# and how it simplifies complex subsystems. Check out these 4 code examples to see how the facade pattern in C# works!

Cloud-only AI is failing real-time CAD. Discover why a hybrid edge inference architecture is now essential for performance, compliance, and keeping designers in

Important concepts about Object-Oriented Programming

Being Idempotent in systems is vital to data correctness. Let's dig in and find out what that means.

70% of online businesses fail because of bad usability. The solution to this challenge is an approach known as Intuitive UX Design

Default timeouts can silently crash distributed systems. Learn how unbounded waits cause latency, capacity collapse, and outages—and how to fix them.

ArtemisFlow is a local-first job tracker built for tech candidates. No accounts, no backend, and no external database.

A software development cycle is characterized by an incremental increase in rigour during each step.

Learn how to apply SOLID principles in React to write scalable, maintainable, and reusable components for cleaner and more efficient code.

DDD gives us a framework for a way of aligning business with technology throughout the whole project lifecycle.

Whenever you’re developing software, a certain amount of refactoring and rewriting is inevitable. This is sometimes due to a new idea that will simplify the design or a change to the project requirements. But unfortunately, it often also happens because of a misunderstanding about how the software will connect and interact with its external environment. While it’s impossible to completely avoid such miscommunication, you can minimize it by using a principle I call writing software from the outside in.

Drawing from Japanese aesthetics, this article explores harmony and ambient design in digital products.

The aim of this series of posts is to help demystify what it’s like to do software work and tasks in a professional environment.

The demand for enterprise applications is growing faster than IT capacity due to the need for digitalization everywhere. Low-code is here to help!

Avoid bloated interfaces and inverted dependencies. Learn how closures preserve encapsulation and keep your Kotlin codebase clean and stable.

Learn how to identify the signals that it’s time to say no

Coding is like being the architect of the Matrix, but with less leather and more coffee.

Mitul Gajera, designer of the stable value coin ARTH explains and gives insight into how the cryptocurrency was designed to protect the user's purchasing power.

The unstoppable force of code generation is meeting the immovable object of software complexity

Serverless is a fantastic way of building applications, but there is a lot more to consider than simply Lambda functions.

Explore the 'Buy vs. Build' dilemma in software development. Understand competitive advantage, cost implications, and factors affecting the decision for strateg

Before I learned how to build apps with code, I thought software development would be like building something out of wood... you learn a couple of basic skills,