I read that article that said to avoid let-down effect after a stressful period you should do some moderate exercise, physical and/or mental. In the middle of January I didn’t really feel like running around the nearby pond, particularly since the paths are ankle-deep in mud. As a substitute, the article went on, you might briskly walk steps for 5 minutes. I managed 4 minutes from the basement to the attic to the basement before I got so bored I started removing our worn-out old stair treads because they were bothering me (in fact, I very nearly fell down the stairs when I tripped over one that had come loose).
Clearly physical exercise, at least for it’s own sake, isn’t for me. Riding a bike to university is OK, but running in circles is quite pointless. So I decided on the mental equivalent, i.e. I started learning a new programming language. I picked Clojure, for no better reason than a general interest in functional programming, my curiosity about languages, a vague idea that a fully-rounded programmer slash computer scientist should know at least one variant of Lisp (don’t you just love parentheses?), and because the book (Clojure for the Brave and True, by Daniel Higginbotham) looked cool.
What doesn’t look so cool, to me, is Clojure. In fact, even though I have not only acquired a working knowledge of functional programming in other languages but also suffered at length through decyphering and even writing basic programs in the highly unintuitive logical programming language Prolog, Clojure syntax is regularly driving me crazy. I don’t think I’ll ever come to love it. But never mind. Considering the context, doing this a couple of hours a day might have been just what the doctor ordered: The let-down effect after the exams largely failed to materialize. For the first time in five terms, and after one that in terms of intensity and pressure compares only with the horrible second term, if at all.
Still, it’s hard to avoid the conclusion that I am not learning Clojure (and a little more Scala on the side, plus I’m reading a book on NoSQL databases that arrived too late to help me prepare for the architecture exam, out of sheer stubbornness) in response to any urgent need. It won’t further my carreer or my standing at work or help me solve any real problems.
No, the point is rather that I realized that this term break is the last uncomplicated time off I’ll get in my working life–let’s say for the next 20 years. The last chance, in other words, to enjoy some free time without taking an actual vacation (and burning my scarce paid vacation days). So rather than jump into a 40-hour work week the moment the exams were over, I left things at work as they were. I’ll be going there 2 to 3 days a week for these anyway brief six or seven weeks before the summer term.
I did however prod my team manager to start looking for a project for my bachelor thesis. If I want to complete the thesis before the summer term is over, that is by August at the latest, I should start working on it in March, to give me the full six months prescribed by the regulations. For a while already there has been a definite understanding between my and my employer that I should be doing the thesis at work, preferably working on something that has a business value for the company, which means it’s demanded by one of our customers (we’re a consulting firm, as you may recall). But I had thought, somewhat naïvely no doubt, that my betters had a few ideas that they could just take out of a drawer and put me to work on one of them. In fact it turned out it’s not all that easy.
One problem is the time I can invest in the practical part of the project is severely limited. If we consider that I still have a couple of courses and exams in the summer term, I can use only half the week to work on the bachelor thesis. And that includes, over the course of the whole six months, all the time for researching, getting a grip on the theoretical background (it’s an academic thesis after all) and, above all, actually writing the thing. Reserving rather two-thirds of the entire time for all those things, my team manager and I came up with a magic number of just 25 person days for the actual practical part–no more than five weeks full time.
Now that’s evidently a rather small project that leaves very little leeway for first acquiring new technological skills, or clearing the bureaucratic hurdles for getting access to the data and systems of a customer. Or even the usual slow start caused by my being an inexperienced programmer. In short, we need something that’s rather small and manageable, technologically not too complex, yet at the same time useful for somebody and not too trivial for an academic thesis. That’s quite a bunch of rather contradictory requirements!
Over the past week I have had several meetings with my boss and his boss already, plus with a CRM guy who is sounding out customers who might be interested in letting a student do a small process mining or data science project for them (at least I’m quite flexible there, so long as it’s from the general area). Apparently there are some ideas, including predictive analysis on prizes by a petrol retailer and getting a customer’s legacy work flow system, or another customer’s expensive proprietary log analysis service, into a modern open source solution. But there’s no telling yet whether anything will come of any of this.
And meanwhile I’m waiting and it’s making me kind of irritated. There’s not really anything useful I can do to prepare for a project I don’t even know yet. I have looked, in theory, at quite a number of possibly relevant technologies. A while ago I invested a day into installing Ubuntu Server on my Virtual Box so I could set up a trial copy of the ELK stack, the best known open source log analysis solution. After that I could appreciate the main argument for the proprietary alternative, namely that it doesn’t take a master’s in CS and five years of experience as a system administrator to even install it. Yesterday I checked out the workflow systems Camunda and Activiti, but so far, in spite of a course on process mining, I’m not even quite clear as to what they’re supposed to do. But really, trying such technologies without an actual problem to solve is sort of pointless. I’ve always had trouble with doing things for their own sake. Well, maybe something that’s inherently fun, like learning a programming language. But it’s hard to see the fun in integrating BPMN diagrams in a Spring Boot application. In fact I ended up royally bored.
And at the same time I’m anxious. Will my betters come up with a good project? Will it be boring? Trivial? Very technical? Will I be totally overwhelmed? After all, I am good, but often slow on the uptake. Will I have to work at a customer’s office, among strange people taking no interest in me, with technologies I find hard to fathom, to even get to the point where I can do something useful? One thing is sure, with the trouble they are taking to find a project for me, once they have one, I have to take it. No choice. It’s a lot of trust I need right now.
Then on the other hand, they also have to trust me. They certainly wouldn’t invest all that effort if they considered the investment pointless. Which means I have something to prove. And that was very much on my mind a couple of days ago when we had an internal meeting in which, once a year, people from the entire business unit present some tidbits from their current projects. For some reason I was asked to present that rather pathetic little application that I had written for the abortive recruiting event last November–the one integrating public transport timetables and foot and bike routing information. To be sure, the context was the concept of “smart cities” which fits into the “smart life” focus of the business unit, so I wrapped a few screenshots of the android app into a rather theoretical overview of the “smart cities” paradigm.
Afterwards my team manager was quite happy, or at least pretended to be; he is very supportive of his team members and I have yet to see one of us do something and not get the thumbs up from him. But after having listened to all the competent and confident presentations by other people who are successfully working on actual projects, I couldn’t help but feel very small. Alright, there were also some points where concepts were elaborately presented as innovative which I, fresh from the architecture lecture at university, considered rather self-evident. But all in all after five hours I left the room wondering why all these capable and successful people would want to employ me at all, let alone accept me as a colleague.
Maybe I am having a small post-exam depression after all?
No doubt it will all be a lot better once I have a project for a bachelor thesis. Right now I am simply feeling a bit in limbo, and not very useful to anybody.
But the day closed on a positive note when about 30 of those who had attended the meeting had dinner at a nearby restaurant with very decent food and beer. That was relaxed and funny, I had some very interesting conversations, and I went home with the (no doubt partially alcohol-induced) feeling that I had come to the right company to work for after all.
So today I’m at home, doing this here and then some more Clojure and/or Scala. Which is posing a little problem for my study time tracking, because this is not really related to any upcoming course. Up to now I’ve usually included such general stuff done during the term break (e.g. learning Git) in the hours for the respective core lecture in the following term, i.e. software engineering or architecture, based on the thinking that it somehow furthers my general education as a programmer/engineer. However, there is no core lecture anymore in the sixth term. I could lump it in with the workload for the bachelor thesis, but that’s odd too, because I’m getting paid for the bachelor thesis, but of course not for learning Clojure, so I would need duplicate time tracking for the thesis.
In any case, since we’re talking of study time, the aggregate numbers for this fifth term prove that I have, indeed, and willy-nilly, mastered it with considerably less time investment than all previous ones since the idyllic first. All in all, discounting those things just discussed, but counting my Scala and functional programming studies for the seminar paper in the summer break, I logged 372 hours outside lectures over the course of the term. That’s really an all-time low, seeing how I did 523 hours in the shocking second term, 478 in the third, and an insane 672 in the fourth. Well, there’s only so much time, and I was working two days a week. It still comes down to nearly 25 hours per week over the 15 term weeks, and that on top of the lectures themselves and 16 hours at work. Well, to look at it another way, over those 15 weeks the working hours added up to 240 hours. Add that to the 372, and we’re back at over 600 hours I did outside lectures–studying and working. So the fifth term was indeed the most crazy term ever.
Of those 372 hours, 150, or just over 40 per cent, were for architecture–for those over-the-top practicum assignments and for memorizing about 600 flash cards. 130, or 35 per cent, were spent on distributed systems–basically all of that on that container nightmare. The “compulsory choice” module on process mining was a distant third with 47 hours, or 12.5 per cent, for the single presentation in the last practicum, and for reviewing the video courses over New Year’s. Preparing the seminar paper needed 37 hours, or close to 10 per cent. 4 hours each went into the project (once or twice, in the first two weeks, I did something for that outside that six hours we were there anyway) and in some administrative tasks for the upcoming bachelor thesis.
So yes, it was all only possible because the process mining practicum was extremely relaxed and we effectively had only two full-scale lectures. On the other hand, it could all have been an awful lot less painful if the practica for those two lectures had not gotten so absurdly out of hand.