Back to Blog

Better Frontend Part 1: Learn Development and Design Principles

Four foundational principles every frontend developer should know before writing a single line of code.

·3 min read
Better Frontend Part 1: Learn Development and Design Principles

I've been working as a frontend developer for the past 2 years. In that time, I've seen the same mistakes come up again and again — not in code, but in thinking.

This blog is my attempt to share the mental models that made the biggest difference for me. No fluff, just principles.

Heads up: I'm not a native English speaker and fairly new to blogging. Go easy on me.


Rule 1 — Needs Over Design

Here's what a lot of developers do when they start a new project:

bash
# Spin up a new Next.js project
npx create-next-app@latest my-app
cd my-app
npm run dev

They delete the template code, stare at a blank screen, and immediately start asking:

  • Should I use a top navbar or a sidebar?
  • What's the color palette going to be?
  • Should the hero be full-screen?

Stop. None of that matters yet.

Before you open Figma or write a single component, grab a pen and paper (or open Notion/Obsidian) and answer these questions:

  • What is this project actually about?
  • What is the main goal?
  • Who is the target audience?
  • What problem does it solve?

A Practical Example

Say you're building a flight booking service. The first feature you'd tackle is searching for a flight. That means your interface needs exactly these things:

  • A departure city field
  • A destination city field
  • A departure date field
  • A return date field
  • A search button

That's it. Now look up some reference designs on Dribbble or Behance:

Flight booking UI reference

They look great — but do you actually need everything you see there? Think critically. Strip it down to what your users need.

Remember: User experience matters most. Design is only about 30% of that equation.


Rule 2 — Improve Incrementally

In the early stages, resist the urge to make everything perfect. Don't think about:

  • Which typeface to use
  • Your exact color palette
  • Micro-animations
  • Icon sets

That stuff will all matter eventually — just not right now.

Your only goal in the beginning is a functional, usable product. Once you have that, you start layering on improvements:

  1. Refine the layout and spacing
  2. Introduce your color palette
  3. Add icons and illustrations
  4. Layer in animations

Ship ugly, iterate toward beautiful.


Rule 3 — Hierarchy Is Everything

Even if you have a whole color palette ready, don't apply colors first.

Start with a grayscale design. It forces you to get the fundamentals right:

  • Spacing (padding and margins)
  • Font sizes and weights
  • Line heights
  • Visual grouping

It's more challenging, but you end up with a solid structural foundation. Adding color on top of a well-structured grayscale design is easy. Adding color on top of a broken layout just makes it a colorful broken layout.

Grayscale First

Grayscale UI design example

Then Add Color

Colorful UI design example

Small tip: Don't overdo it. A clutter-free, to-the-point design almost always beats a visually "rich" one.


Rule 4 — Don't Design Too Much Upfront

You don't need to design every feature before you start building. In fact, it's better if you don't.

Designing for every edge case in the abstract is incredibly hard:

  • How do you handle a form error message that's 3 lines long?
  • What does a table look like with 2,000 rows?
  • What if two events fall on the same date?

Trying to solve all of this in Figma before writing code is a recipe for frustration.

Work in Short Cycles Instead

Rather than designing everything upfront, follow this loop:

  1. Sketch a simple version of one feature
  2. Build it in code
  3. Discover the real edge cases that only show up in a live interface
  4. Iterate until it feels right
  5. Move on to the next feature

The real interface will surface problems your imagination never would. Build early, fix fast.


That's it for Part 1. Four rules, all of them more about thinking than coding.

Stay tuned for Part 2 — where we'll get into typography, color, and spacing in more depth.