The last few weeks have been pretty busy with work, as it usually is, but especially so, as a hard deadline has been fast approaching. I haven’t been too concerned with this deadline, to be honest. When I sat down with a few other engineers, and we all agreed on the schedule for this project, it looked like I’d be working on it until August 22nd. Unfortunately, due to business demands, the actual deadline is June 5th. That is okay, shaving 2.5 months off of a schedule isn’t the end of the world. Except, this project kicked off in February. So, I’ve needed to accelerate my schedule by a good 30%. Usually with these types of projects, there are a lot of time-consuming aspects, and a lot of thought required. The actual guts of the development only take a few weeks when it boils down. However, all of the thought and planning for corner-cases/etc, takes a while. Then there is the testing and verification of the design, and of course, documentation.
Everything has had its ups and downs with the schedule, but all in all, I’ve been able to pull it off up to this point. I wasn’t too concerned at first, because I could always put in a few more hours. The concern is that near the end of the project, there always seems to be a ‘crunch time’. I’ve always attributed that to poor project management. Thankfully, the project manager for this project is extremely hands off. So much, in that I pretty much work autonomously, which I like. I’m able to manage myself, and projects, very well, as has been proven over the years.
So, crunch time, right? Well, the last two weeks there have been swimming lessons for Evelyn. No biggie. They were from 5:30 to 6:15 each day. Considering I’ve been staying up way too late (a recurring problem), I have also been arriving at work a bit later, which is totally fine and acceptable, as long as the work gets done. Well, arriving a bit later, and ‘needing’ to be gone around 5:00 doesn’t necessarily jive well with ‘crunch time’ in a project. I’ve had quite a lot to get done, especially in these last weeks. Thankfully, all of the planning up-front has paid off. Even with shaving off 2.5 months from the schedule.
Then today happened. All that is left is verifying that the synthesis tools are applying my global timing constraints properly, and that there are no odd behaviors in synthesis. Now, for many projects, this can take quite a bit of time. This project is alongside several other projects with very similar and even some global constraining. Very little risk in this department, so getting it done over 2, even 3 days should be plenty of time. Realistically, this should take about a half hour per FPGA target family, plus compile time. Since I can compile all in parallel, add in an extra couple of hours, and really, should take about a day.
That day, was supposed to be today. I had a solid game plan for how the day would pan out. Essentially, nothing has gone according to plan.
I arrived this morning and finished up some tests that I was working on yesterday. Everything looked good. Then I reverted my virtual machine to a snapshot in preparation for installing the daily build of the software stack that had my updated changes in it. (Yes, software stack, no I’m not a software guy, I am a hardware guy). The software stack has the ‘driver’ to the module I’ve designed, and I made a few final tweaks to the timing constraints the ‘driver’ should use. Everything I do is in VHDL still, no worries there. Anyway, come to find out, last night’s build failed (due to other reasons). Great. I had just reverted my machine, and now needed to re-install all the software I had just effectively wiped (I could always apply my changes manually, just prefer not to if I can do a true nightly build instead). So, I get the machine ‘almost’ back to where it was and then I see that they rebuilt the nightly from yesterday, and it passed. So – wiped again.
Then, I recalled that for some of the tests I needed to do today that I’d need to install a few of the synthesis tools locally to make life easier. No biggie. Except that is a good 30 gigs more harddrive space that I’d need to use. Ahh, but my virtual machine was limited. But I can’t adjust my VM’s HDD space with existing snapshots, and I don’t want to lose my original snapshot. So, I clone the virtual machine, and figure I’ll be on my merry way. For some bizzare reason every machine I made/cloned/etc after that could not connect to the network. Mind you, all of these are running on the same server. Made absolutely zero sense. So, after about an hour of wasting time on that, I end up wiping my original snapshot and going with my main VM image.
Everything is working as it should now, and have plenty of hard drive space to get everything installed. That testing that was supposed to take a day? Yeah, I will be able to start on it tomorrow. Today has been an absolute waste.
Thankfully, I pulled in the schedule enough, that even though this is crunch time, I wont need to stay late. Staying late is a habit that I have, because I seem to be the most efficient in the afternoon and in to the evening. I’m just not a morning person. I could get to work super early, but my brain just isn’t there. Maybe after months and months of training myself I’ll be able to do it, but I’m not there yet.
Hopefully tomorrow goes much better, because otherwise, it will then be a real crunch time. Thankfully only a 1 or 2 day long one, but still one nonetheless. I plan to be finished tomorrow, regardless.
After that, I need to finish up another project before BBv2.0 arrives (yep, having another baby!). Overall, while today has been a minor setback, I feel like I’ve been able to balance work and life pretty effectively throughout the project and still keep all parties happy.
The next month will be just as busy, again, as it always is. But this time it will be finishing up a much less stressful project, which I have oodles of wiggle room and time to do. Then going back and creating an automated test suite to ensure nothing that is changed in the hardware or software or driver in the future will cause anything to behave incorrectly. All while still juggling the balance of work and life. There are many fun things that need to be done over the next few weeks at home. Usually I’m so exhausted and brain-dead from work that it is difficult to make much progress. I’m thankful that the project demands wont be quite as brutal, so I can reserve some brain-power and energy to helping get the house ready for our new arrival.
Should be an exciting summer! After July it will be yet another whole new adventure. Life will now have another awesome child as a main part of it, and work will start on the definition of a new (still unknown) project. Here is to hoping that I’ll continue to keep everything in perspective and balanced appropriately.