Deadline Inches Closer
I'm nearly two full weeks into working on this React Native project, one day shy of it actually. In those two weeks, the application has come a long ways. In fact, today was the first time I started seeing the pieces come together. Are we going to hit our deadline of early June? I would say there's an outside chance, at this point. I think I gauged the project at about a third finished earlier in the week; I think we are close to halfway there, with about 2 more weeks until we hit June. It's possible, but all it would take is one hiccup to set us back significantly. I think for me, as long as my cohort can keep feeding me work, my productivity will stay high. When I knew exactly what I needed to accomplish with the layout on one of the screens, I really powered through it. I had a good purpose for most of the day today, but ended up hitting a wall by the end of the day. I just don't have enough tasks to keep me occupied. I'm relying on some APIs being built and there's not much I can do about it until he has the time to build them. I expressed this to him, and let him know I needed something to do pretty early on in the day, and he gave me a couple things to work on. However, they weren't exactly what I was looking for.
It appears the company is on the brink of hiring another C# developer, which is interesting. We have one now, who works with the SQL database and ASP.net, but he could use some help and so could we. Our current backend developer doesn't know how to build out APIs for us, so my cohort has to do that. I've talked about it plenty in this blog, but he just doesn't have the time to build those APIs and do the things he needs to do on the frontend. With only him and myself working on the frontend and this massive project, it's all we can do to stay afloat. I would say it would take a team of 5 or 6 developers at least a month or two to work through this project, and it's just the two of us being pressed to finish it in a month. I'm surprised we've gotten as far as we have. I say we are about halfway there, but it's well known the last 10% of any project takes up 90% of the time. I think this actually holds water for a couple reasons. The first reason is that you tend to put off the most difficult parts of an application, or the things you don't really want to do, until the very end. I could think of a few things that would be described by this statement for the current app we're working on, so I'm sure we will have that issue. The other reason is that tying up all the loose ends seems like a trivial task, but it takes a lot of time, and then you have to test the application to make sure you're not creating any bugs.
I have been given one critical API that I will need, so I made the best of that and got quite a bit of the legwork done with that. Yesterday, I was able to map over the data and create a list of all the leads tied to the given representative. We have cards for these leads, but the design is not in its final version. At least, at this point, it will only be a matter of bringing in the new card and hooking it up; we don't have to worry about the functionality part of this bit anymore. There are also different filters tied to this representative. From the API, I'm given a list of types of leads, and cities, states, and counties where the representative is active. The idea is for them to be able to select from a list of each of those entities and filter their leads with that information. So, if they only want leads from one given city, they would select that city and the list would repopulate. I build a checkbox from scratch with a label and three variants in size, and mapped over each of those lists in a filter drawer. When a filter button is clicked, this drawer slides in, and they can select what they want. I don't have the endpoint I need to actually make this work yet, but I have the frontend functionality in place. I started creating arrays of state for each entity that would hold each value they selected, but ran into some issues. The management of this state was just too messy for useState, so I decided I would bring in a reducer and possibly even context to manage it. However, it was about 4 PM when I realized how ugly useState was, and decided it was not a good time to venture into creating a reducer. I wasn't going to be able to finish it before the end of the day, and I likely would be lost when I came back to it on Monday. At least I'll have something to do on Monday.
Until tomorrow!