The user experience design of a product essentially lies between the intentions of the product and the characteristics of your user.
Remember, the web isn’t about control. If a visitor to your site is familiar with using a browser’s native form doodad, you won’t be doing them any favors if you override the browser functionality with your own widget, even if you think your widget looks better.
A successful website does three things:
- It attracts the right kinds of visitors
- Guides them to the main services or products you offer.
- Collects contact details for future ongoing relations.
If you want a great site, you’ve got to test. After you’ve worked on a site for even a few weeks, you can’t see it freshly anymore. You know too much. The only way to find out if it really works is to test it.
Gathering and analysis or the requirements
You can’t start a product simply by building it. You have to know why you’re building it, and you might go down the wrong rabbit hole, waste time, and confuse things. Spending long afternoons with a sketchbook or talking through your ideas with other people can save a year in software development later on.
Everything in software changes. The requirements change. The design changes. The business changes. The technology changes. The team changes. The team members change. The problem isn’t changing, because change is going to happen; the problem, rather, is our inability to cope with change.
Design & sketch
If you think good architecture is expensive, try bad architecture.
Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight: You don’t know where you’ve been, you don’t know where you’re going, and you don’t know quite where you are.
Web design is not just about creating pretty layouts. It’s about understanding the marketing challenge behind your business.
Periodic reminder that the tech stack you use to ship a product only matters to other devs. End users only care that it’s fast enough and does enough to let them get work done. That is your top priority as a dev. Ship working maintainable things that solve people’s problems.
Coding & implementation
The most fundamental problem in software development is complexity. There is only one basic way of dealing with complexity: divide and conquer. Maybe ‘just one little global variable’ isn’t too unmanageable, but that style leads to code that is useless except to its original programmer.
Everything should be made as simple as possible. But to do that you have to master complexity. - Einstein
Because we all make mistakes, we also know that everyone else makes mistakes. So, within reason, we don’t judge each other on the mistakes we make. We judge each other on how we deal with those inevitable mistakes.
Concepts and patterns that your brain is sorting through and making sense of are much more scalable and universal than any specific vendor’s technology.
Thus, writing a clever piece of code that works is one thing; designing something that can support a long-lasting business is quite another. Commercial software design and production should be a rigorous, capital-intensive activity.
A team of highly competent programmers who are also highly territorial, egotistical politicians will fail while a team of equally competent programmers, who are also egoless, cooperative, team players will succeed.
Testing, deployment & maintenance
Good architecture makes the system easy to understand, easy to develop, easy to maintain, and easy to deploy.
Simplifying your code decreases the effort of maintenance, thereby increasing the desirability of every other possible change.
Code without tests is bad code. It doesn’t matter how well written it is; it doesn’t matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don’t know if our code is getting better or worse.
Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.