Skip to content
Continued

FRONTEND · Engineering

Frontend Engineer

Turning product ideas into an interface people can use.

Composite exampleabout 4 min

This role across the eras

Frontend: Using AI to generate and rewrite code, building conversational interfaces (streaming output, generative UI), and building operating interfaces for agents.

2023–present · Read about the Large Model Era: its background, pain points, and new technology

Common tasks

The following is a composite example scenario; it does not correspond to any one company or person.

Behind every page is an ongoing conversation among requirements, the interface, the services and the people using it. We start from one small piece of feedback and step into a frontend engineer's day.

09:30Finding the real problem first

The day starts with user feedback: "On my phone, the submit button won't work." The frontend engineer first confirms the device, the browser and the steps, then tries to reproduce it.

Is the button covered by something, is the validation message too subtle, or does the request get no response after it is sent? Only by breaking the symptom apart can you find what needs to change. Before writing any code, make the problem clear.

When logs are needed, first mask personal information such as names and phone numbers, keeping only what is required to locate the problem.

When you see "the button won't work," ask what happened first, then decide which line of code to change.

11:00Make the requirements clear, then write code

Next comes a new page. The product colleague explains which usability problem it solves, the designer explains the interaction, and the backend colleague joins to confirm the API and the error cases.

The frontend needs to ask: what shows when there is no data? Can it retry after the network drops? Can the whole thing be done from the keyboard? These details become page states and acceptance criteria.

Product
why we build it
Design
how it is used
Frontend
interface and interaction
Backend
rules and data

14:00Make the page work in every situation

In the afternoon the plan becomes components, the API gets wired up, and the layout is checked on phone and desktop. Beyond a smooth submission, you also verify repeated clicks, request timeouts, long text and insufficient permissions.

The frontend gives instant hints on input, but critical business validation still has to run on the server. Anything in the browser can be viewed and changed, so secrets, authorization decisions and sensitive-data protection cannot rely on the page alone.

The same button also has different states. Here is a simplified example used to discuss interface feedback:

const submitLabels = {
  idle: 'Submit',
  loading: 'Working…',
  success: 'Submitted',
  error: 'Something went wrong, please try again',
};
The safety boundary that runs through the day

Use appropriate sample data when testing; check for personal information before sharing a screenshot; never put secrets in web page code. Safety is a concrete action in every collaboration.

Keep reading: safety, privacy and responsibility

17:00After delivery, the work is not over

The code is reviewed by colleagues, the key scenarios are checked with the QA colleague, and then it is released following the team's process. Once live, you watch the error reports and how the page behaves, confirming the user's problem really has improved. If a rollback is needed, you have to be able to recover quickly.

Finally, record the cause of this problem, the fix and any loose ends, so the next collaborator has a smoother path.

After this day, what can you take away?

  • One problem on a page may take several roles working together to solve.
  • "Done" covers both correct functionality and the error states and the experience of using it.
  • In daily work, communication, verification, record-keeping and safety awareness matter just as much.

Example: a fix

Example: a change made to fix “the submit button doesn’t respond on mobile.” On the left are the files the change touches; on the right is the button component before and after.

Files touched

SubmitButton.tsxBefore
export function SubmitButton({ onSubmit }) {  const [state, setState] = useState('idle');  return (Removed:     <button onClick={async () => {Removed:       setState('loading');Removed:       await onSubmit();Removed:     }}>      {labels[state]}    </button>  );}
SubmitButton.tsxAfter
export function SubmitButton({ onSubmit }) {  const [state, setState] = useState('idle');  return (    <buttonAdded:       disabled={state === 'loading'}Added:       aria-busy={state === 'loading'}      onClick={async () => {        setState('loading');Added:         try { await onSubmit(); setState('success'); }Added:         catch { setState('error'); }      }}>      {labels[state]}    </button>  );}

How the role evolved: related papers

Papers per year in this site's sample for the arXiv categories related to this role (Human-Computer Interaction cs.HC, Software Engineering cs.SE). It reflects how research topics shift, not the number of people employed.

Data source: this site’s list of arXiv papers, counted by the year each paper was first published. A paper listed in several categories counts once in each line, so the lines do not add up. Not employment data.