Priorities

April 16th, 2020
priorities

Hitting Deadlines

As we quickly approach a soft deadline of Friday afternoon to roll out the new feature for our payments application, we seem to be inching towards the finish line. Every time we get a little closer, it seems like we end up adding more to it or breaking something to make it better in the future. If we were to have stopped a couple days ago, we would have been in a similar scenario we are in now, however the next build would require a little clean up to help with scalability. It begs the question: when rolling out versions and sticking to deadlines, how do you determine what is a priority and what isn't? I feel like I'm very time-oriented, meaning I understand the importance of a deadline and I like to beat the deadline. I think this probably stems from my last job in the golf business. In that job, we would set up tournaments ahead of time, and missing that deadline was not an option. If something wasn't perfect and you didn't have time to fix it, you moved on to what was really important. There are flaws in this metaphor, as a tournament is a fixed event, and not something living like a live application that will require versioning. There are things I just don't understand on the same level as my cohort, and he seems to have a much better view of the big picture than I do.

priorities

I really only had one thing to fix after the meeting yesterday with the executives on the application. On the step where the representative picks their lead from a list generated from a search input, they needed to have an option to proceed to the next step when they don't have a lead. Since the entirety of the data collected from this form application is managed with context, this was a simple addition. I reused a button component and just dispatched the next step without passing any kind of data to it. More concisely, when they do pick a lead, the lead details are filled out, including their name, address, and personal information. Therefore, when that information is provided, the form inputs going forward are pre-filled, which is a great addition to the application that didn't really require a ton of effort to implement. When they choose to proceed without a lead, nothing is pre-filled. More importantly, on the backend, there is no indication of the leadId, which is integral for processing of the plan. If there is no leadId provided, it requires some manual actions on the part of the backend to make sure the information is received correctly. The backend really wanted to avoid this from happening at all, but the executives wanted the option, so we created it. In the end, though, this button addition took me about 5 minutes to implement.

priorities

From there, I asked my cohort if there was anything I could do to help him out. He was in the middle of deconstructing some of our forms in the latter half of the application, and asked me to take care of a step indicator component that lives on the top of the screen. At that time, the step indicator would let the user know what step they were on and navigate to other steps if those steps were already complete. So, for example, they could go back to the address step if they had gotten to the review step and edit the information. After implementing the React-Hook-Form, my cohort wanted this step indicator to be hooked up with submitting the form if they were on that step. I spent about 2 hours trying to figure out how I was going to do this. We didn't want to adding any kind of global state to keep track of this, so I had some boundaries that were really causing some problems. Finally, I created a couple instances of local state that acted as booleans and checked for information from the context data and got it to work. After I finished, we talked about it and decided we wouldn't even do it anymore. But, the styling of the component was and has always been really ugly. We decided to turn it into a non-clickable indicator. I brought in some icons to signify the types of actions these steps represented, brought in a couple of arrow icons, and then set up the logic so that the steps and arrows were opaque when the step hadn't been progressed to yet. While I spent a lot of time doing something we didn't even use, by the end of the day I felt like I had really made some progress and the end result added a lot to the application.

Until tomorrow!

Created by Sam Thoyre, © 2019