Thinking on Paper
What is a blank screen problem?
The blank screen problem is we have a new coding problem but can’t decide what to code. Think of this as an equivalent to writers block.
Why we get stuck at a blank screen?
This can happen because we don’t know the requirement very well or what we are trying to implement is too tough.
What are the ways of avoiding blank screen?
Planning and designing are the best ways of avoiding blank screen.
The best way to plan and design is to do it on paper.
Why Pen and Paper Works Well?
Paper works best because:
- There is no distractions.
- You can connect ideas easily.
- You can hold more ideas in memory by writing/drawing it down.
How to do it for System Design?
For initial system design usual boxes and connecting them is enough.
Once, the initial system design is built you can use a tool like Google Draw or diagram.net to get a more refined and shareable diagram.
Reading up and understanding UML diagrams can be helpful in the later part.
For many problems I have found defining data model is the best way to start designing the system.
How to do it for Algorithmic Problems?
This can be used the same competitive coding problem or real life.
In competitive coding problems we are given sample Inputs and sample outputs.
It’s best to always start on paper pen and manually solve for each sample input manually.
Once thats done, figure out the time and space complexity and optimize.
Once you are done with these, only then start with actual coding.
How to do it for UI Design?
Wiremocks are kind of common in UI world. It’s always better to start with a rough wiremock and get it verified from stakeholders.
Not doing so leads to un-neccesary rework down the line.