One of the most fundamental rules in component architecture

Image credit: Author

In this article, I will be discussing one of the most fundamental rules in component architecture. This fundamental rule is often violated, leading to issues that are very hard (if not impossible) to solve.

Although I’ll be providing examples and talking in React terms, it’s all applicable to other UI libraries/frameworks, and probably to any component-based program, where components can have bi-directional communications.

Let’s begin by defining the terms controlled and uncontrolled. In one of React’s official blog posts, they define it as follows:

Data passed in as props can be thought of as controlled (because the parent component controls


Responsibilities and it's derivative — abstractions — are one of the more ambiguous aspects of software quality, at least to me.

When I talk about software quality, I usually talk about quantifiable/measurable things like Complexity, length, naming conventions, formatting, duplications, and so on.

These measurable aspects can be checked for and guarded against by using static code analyzers. Unfortunately, there’s no code analyzer that can enforce rules for responsibility balancing and abstractions (yet?).

That’s something that only a human can detect since it’s not something tangible. …


Rewrite software components regularly to avoid rewriting all of it eventually

The software industry has changed tremendously over the past decade. One of the things that’s changed the most is the software development process.

That change was triggered by an ongoing increase in the rate at which new user requirements have to be implemented, packaged, and shipped. Instead of waiting a year or more for the next software release, software manufacturers today have monthly, weekly, and even daily (or nightly) releases.

In the past, waterfall was the prevalent software development life cycle (SDLC) model. …


So after designing, implementing and testing your site, you are finally ready to make it live. But a website is more than just a bunch of images, text and some ninja JavaScript magic tricks. Having published quite a few websites of my own, I realized that there are many things a web developer needs to check before making his/her site live. For my own future reference, and for anyone else who is about to publish a new website, I have decided to organize all of these post-development steps into a single checklist.

Use HTTPS instead of HTTP

Yes — HTTPS is no longer optional. Google…


I’ve recently decided to move one of my WordPress sites to use a secure SSL connection. I’ve heard that Google was starting to use HTTPS as a ranking tool, and I couldn’t let that hurt my rankings. Since my WordPress site was a multisite — this process was a bit more complicated. On top of that, I had some redirection issues since the website was using a proxy. My goal was to have the site work properly without installing any additional HTTPS-enforcing plugins. …

Yoav Kadosh

Front-End software developer with a passion for software architecture, algorithm design, UI & animations. Amateur Woodworker, proud father of 3.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store