Because of my other side projects I don’t exactly have the funds for a professional copy of Visual Studio. Therefore, I’m working in Visual Studio 2015 Community Edition. Not only had I never set up a new project in VS2015CE, selecting from its panoply of project options, I hadn’t set up any project in ages because on my current job, the project had already been set up when I got there. And while I’d shoved that project into a few different SCMs (currently residing in Atlassian’s Stash), I’ve only gotten a little practice setting up Jenkins–which is, to put it kindly, mysterious and arcane.
Hence, the “Wash, Rinse, Repeat, Stopwatch” frenzy: repeatedly setting up a project, creating an object or two, creating unit tests for those objects, setting up the repository on BitBucket, and configuring the project in Jenkins so that it builds and all of the unit tests pass. And then tear it all down. And do it all over again the next possible night (remember: work/life and life/life balance happening here). Without any notes or StackOverflow Googling.
Except for the .gitignore. No one should be expected to write a .NET .gitignore off the top of their head. There are more valuable things to fill one’s head with. Like Jenkins configuration.
I understand that Jenkins is a fairly broadly used product. It’s not exactly “industry standard” because what does that mean in software anyway, where there are so many interchangeable or nearly interchangeable offerings? But, without quibbling, Jenkins (and tools like Jenkins) are useful and de riguer to the point of being passé, ready to be usurped by the next generation of tools. Because it doesn’t end here and it never will, or else my Dad’s old Honeywell manuals from the 1970’s would be of use to me.
We all live in the here-and-now, so my short-term goal is to get a tiny spike project with unit tests running on Jenkins in as little time as possible. Once I get Jenkins down two or three times and can discard the copious Jenkins notes, I’ll start running the stopwatch on my phone and see how low I can go time-wise.
Now, am I cargo-culting? I wonder. How does repeating the same steps over and over help anything? I’m not sure. Will I be refining my spike solution as I go, slowly growing an architecture that I like? Maybe. Will I be learning how to smoothly navigate and manipulate Jenkins? Hopefully, because the Jenkins navigation is counter-intuitive to me. Bragging rights? What a weird thing to brag about. To be confronted with starting up a new project without drawing a complete blank? Yes. Especially in an interview.
So it’s not just “Wash, Rinse, Repeat, Stopwatch” today, but it’s “Wash, Rinse, Repeat, Stopwatch” for a lifetime, because things are always changing, and new tools will become standards that will become sad, outdated kitsch in time (like Dad’s Honeywell manuals). This particular “Wash, Rinse, Repeat, Stopwatch” iteration represents just one slice in time–one snapshot of what is currently standard–but the underlying ethos is a necessity for the job. Dad may have made it to 75 by staying in COBOL as it became a rare and valuable skill to large companies (banks) that couldn’t excise it, but I can’t expect the same fortune. Nor do I really want it, though I’d still like to be working at 75.