Where do you start your projects?
Published: 2020-09-28 01:14:49

I have a question for the coders out there who might read this: what determines the order you create your components in? What determines the starting, midpoint, and end of the project for you?

This is all assuming that the preliminary steps to really *begin* working on your project have been completed, say running `rails new my-app` or `create-react-app new-app` with all your options tagged. On the other hand, are those commands how you always have to start your new project?

Do you ever start in the middle, so to speak? You have a core component that the rest of the project is essentially built around (at least as you’ve planned it), so maybe you’ll sit down and design that first, write out a rudimentary version of it that is at least functional, before creating the rest of what’s surrounding it. 

Or do you have to start at the beginning of the UI/UX flow? If it’s an app with a User model, say, then perhaps you’ll start with the User resources, then the authentication layer, until finally you reach the “core component” mentioned earlier, and finish with the logout action.

I believe in the past, my projects’ build order almost always went from “start” to “finish” in terms of the UI flow. Recently, however, a small project for work has caused me to question that. I had to create a small script to extract a small bit of data from a string blob, and had to format the string blob in order to make it iterable to programmatically extract the data. So before I could spin up a little app page to run my script, I had to be sure I actually could execute the format-filter-extract function that would be the core of my script. 

As luck would have it, this turned out to be the most difficult part of my little script, so luckily, the time I spent working on the extractor function took up the most time and then throwing up the page to make it usable outside a coding environment went pretty quickly. The tricky part was organizing how to return the results in a manner most useful to the people using it. I had to build a little table creator, which wasn’t too difficult as I only had on column of data to return (see my previous blogs on my old site, part I: [HERE](https://crankums.github.io/my_first_paid_coding_opportunity) and part II: [HERE](https://crankums.github.io/my_first_paid_coding_opportunity_pt_ii)).

I think going forward, if I’m building an app that works on some kind of “core functionality”, I’m going to knock that component out first and then build the rest of the app around it. Then how do we determine what the next component is to be built? 

My next project will be to construct a time clock app, like the kind employees use to track their hours. So the major components will be:

* The clock itself, with clock-in, clock-out, and break start/end buttons/functions.
* A viewable time card, for both the day and dates ranges.
* An info page/profile page for the logged in employee
* An authentication layer
* An admin panel for editing time cards and employee info

It will have a Rails back end with a React front end. I’d also like to test out GraphQL for API calls, though I might build it in parallel to a standard REST framework. To make things extra complicated, I might build this app using functional programming, as I used class syntax a lot during my last React/Rails project. Finally, I’m going to dedicate some time to using a lot more CSS in my projects, as I’ve been neglecting to do so in my previous projects. 

It seems like I should make the time clock first. What components/layers should I work on next?