Top-Down Development
If you ask me what my
development style is like? I would have to describe it as a form of top-down
view with a model view approach. I've been describing my approach to build web
application this way for a few years. Every now and then I encountered a developers
who will agree with this approach. I guess you can just take the definition
from wiki page but really I have my own way of marketing it.
"Throw everything
away thing and get ready to start fresh. That's just how it is with every new
javascript framework and I think it’s safe to say if it not middle-tier or
backend code get ready to rebuild it. This is actually an awesome thing and you
need to believe it because forcing development to the backend or middle tier every
time something new comes along isn't realistic. Besides why not have the
biggest impact on an application's lifecycle with the least amount of
work!?"
This is how I marketed
my approach it probably could use some work for some developers follow or get
excited about. Regardless if you agree with me I'm out to make everyone's job
better. It's a javascript world. Love it or hate it but nothing is the right
answer forever in a rapid development environment. Whether you're using react,
angular or something else you can't ignore the possibility that your code could
be better. Well some can, but I like to step around those type of developers
and just push through.
At the end of the day I
do know it’s about results and results pay the bills. However mobility and new
capability with your application sometimes takes priority for me. There's
always going to be another feature you could have created or improved but what
if it takes less time in a new framework.
Currently I have a way to
simplify this approach. I'm not going to go in depth because it’s easier to
show and I'll probably work on example in the future but to understand it you
can try it with any existing website. From a frontend perspective you can
completely redesign any site in seconds.
The steps to take tackle any website
project
- Layout
- What's the setup for the navigation? Dashboard or mobile like? Build index.html and pick your js libraries.
- Design
- Colors, Shapes and size! Start creating css files.
- UI/UX Flow
- Learn the routes and where things connect. Starting creating js routes.
- Endpoints
- API and data coming or going. Start creating javascript models in typescript.
Data is a Black Box
One of the things that has helps me is to think
of data like a mystery box until I'm ready to write it out. I don't care
where the data is located or what different types of content are listed in a
given record. Instead I just want a sample of the fields and an outline of the
data types so I can guess what the data might look. From there I might think
about the upper or lower bounds for each data type if I need to test. Example a
telephone number, I don't know if its international but I would include it in
my tests or user interface for support.
As spend more time on a
project my data types start to change and this is where the foundation of my
projects starts to move a little but my frontend code is always ready handle
the new structure change. Just in case I didn't like a redesign or solution to
the UI first. This is why I always recommend treating data like a box
black.
Everything is a
Prototype
Chances are
if you're updating an old site your manager will be worried things will break
and use the excuse that there isn't enough time but keep rolling out with a new
features while including new stuff you want in the mix. While working on this
mixed version have a new version that is completely separate from the existing
application so you can compare notes. I don't believe anything I do with
frontend code to be set in stone and neither should you!
Final Notes
If you read my article on "sandbox methodology"
you might say this approach enables such a situation that I want to avoid. And
I would agree but I think in a longer terms it is good for combating it. Give
you and your team enough time to address the issues in your development
approach. Development can be fast and be done right if everyone is on the same
page. Which is way I strongly recommend using a Lean methodology to improve
your team's collaboration.