Showing posts with label philosophy. Show all posts
Showing posts with label philosophy. Show all posts

Sunday, April 14, 2013

All work makes Jack a dull boy?

Sometimes I've been pretty frustrated over the fact that I need to worry about my employer's business also outside the office hours. That's an unavoidable side-effect of administering a production system, I guess, and it does not diminish at all by lack of quality within the administered system. I mean, I do like my job, but I also do like the rest of the stuff I like to do when I'm off-duty, and most of all I do like to sleep at nights. Unfortunately the system has its best time window for service from 10 pm to 4 am, which completely overlaps my best time window for sleeping. And I do have trouble getting sleep after late night work.

Whining aside - since that is the point in this post, at least so far - I ended up seeing a documentary about the poor people of India called Nero's Guests (this was actually already last summer, but never mind, and I think everyone should educate themselves with that kind of documentaries but that, too, is not the point here). One of the people portrayed there was a single mom of I think 3 young kids who worked a long way from home. She woke up around 4 am, washed up, cooked breakfast for the family and went to the train station at 6 am. After the day of low-paying hard work she returned home on the train after sunset around 23 pm (her kids obviously had had to take care of their own dinner since they were already asleep by the time their mom got home) and went to bed. I don't remember the details anymore, but I'd guess that went on seven days a week (or maybe she was lucky and was able to have one day off from work per week). Compared to that, the discomfort of having to work 37.5 hours a week with occasional hours hitting outside of the oh-so-convenient 9 am to 5 pm window is minuscule.

That is not by far the only example. Like the farmers of yesterday, the poor of the world today do not have a separation of work time and free time. And I think farmers still have the same schedule that nature dictates (work when needed, rest when you can). Not exactly the most prominent role models of today, but what is it that they seem to actually cope better with their circumstances than me with my own?

Actually the habit of having to be at the office from 9 am to 5 pm was inherited from the days of industrialisation in the 19th century, and has not much to do with the current ICT work that is not tied to place or time. In a factory it was - and to some extent still - is crucial to have the people at the conveyor belt (or the monitoring console in a more modern factory) all the time, otherwise the production will likely suffer. Since that is not the case with modern information work, we have things like flextime (ok, that's rather old thing already), remote work and flex work. Basically the information workers of now can put in their effort at the time they feel most comfortable and sometimes even in the amount they feel comfortable with at that particular time. Working in cafés, park benches, sofas etc is kind of trendy these days, and even the less-trendy companies start allowing that kind of work.

I've been doing flexitime all my career, and I appreciate the freedom it offers. I also appreciate that my current employer does allow occasional remote work days when I need it (although I do have better ergonomy at the office, so working a full day at home is rather heavy physically). This clearly shows that I have absolutely nothing to whine about in my working circumstances - so far I even got the luxury of a private room at the office (remains to be seen how long) - something not so trendy but yet so beneficial for concentration.

I've been working with my mindset some time now to mend this mental issue of mine. As I'm interested in yoga I like to view it also from the karma yoga angle - some things just need to be done due to that being my duty (applies also to the multitude of things not so pleasant yet mandatory in life in general). If I was as enthusiastic about my work as some are, things would be easier. I wonder whether it is about having a "perfect" job for oneself or whether it is about the mindset, or both. Nevertheless, not all can have a "perfect" job. In fact, "perfect" is something that likely does not belong to the domain of material life, so it must be about the mindset. It is rather ironic that if one sees things in a positive way, everything is so much easier.

After all, I'm being pretty darn lucky.
submit to reddit Delicious

Friday, March 29, 2013

The yoga of software engineering

Time to finalise this post, it has been brewing there already for some time now...

The following is an attempt to map raja / ashtanga yoga to software engineering. The connection between the two might seem a bit vague at first, but let's see if we can find something in there...

Ashtanga yoga, also know as raja yoga or classic yoga, contains eight limbs or pillars or steps or whatever you want to call them. They prescribe the students how to progress on the path to the ultimate goal, which in case of yoga is either union with the God or realisation of the God-like part in themselves. With relation to SWE the goal might be to build a piece of software that has maximum compliance with the requirements, performs cleanly and swiftly, has good user experience and is secure. So the yoga of software engineering is about developing oneself in the profession so that one is, some day, honored among both co-workers and customers for being an efficient worker producing quality code and known for not straying from the golden path of best practices.

The first two pillars are yama and niyama, yama meaning self-restraints (what one should not do) and niyama requirements or obligations (what one should do). They help building the ethical platform without which the rest of the path will most likely fail to lead to the desired result.

The five yamas are ahimsa (non-violence), satya (thruthfulness), asteya (non-stealing), brahmacharya (sexual abstinence) and aparigraha (non-covetousness).
  1. Non-violence would mean (in addition to not abusing anything or anyone physically) in the context of SWE to not violating any interfaces or specifications etc. 
  2. Thruthfulness is easy to see in the context of pretty much every aspect of working life, with SWE that would mean being truthful to both the team and the customer, not hiding bad code or compromised design decisions but confronting and solving them before they give rise to more serious issues, and telling the customer the real status of the project and not trying to cover things up. 
  3. Non-stealing means one should not literally steal code (unless licensing permits such code-reuse) as well as not violate any licenses but perhaps also not stealing the time of ones co-workers. 
  4. Abstinence from sex... well, that might not be required in SWE (even though a stereotypical coder might get intimate as rarely as a monk), but abstinence from activities that drain time and energy from the yoga of SWE might be a fitting interpretation. That could mean abstinence from fulfilling ones lusts, which might include things like hanging out in social media or gaming sites during working time, or even cheating on ones employer by doing some work for other parties (i.e. professional adultery, unless permitted by the employer). 
  5. Non-covetousness (or non-greediness) can be seen to mean both not trying to gain personal glory and/or benefit and also referring to holding unto the KISS and YAGNI design principles. Also trying to include too many things/functions within a module/class should be avoided.
The five niyamas are shacha (purity both inside and outside), santosha (contentment), tapas (austerity), svadhyava (study of religious books and repetitions of mantras) and ishvarapranidhana (surrendering to God).
  1. Purity is needed both in design, code and personal hygiene, so keep both your design and code neat and clean, keep your head clean so you can think straight and get a shower more than once a week.
  2. Contentment is required to be able to adjust to the limitations so that no precious energy and time is used on fighting wind mills.
  3. Now there is a sanskrit word with rather varying meanings, but it might be seen here as having to take certain amount of discomfort along the way of meeting the goal. If we're gonna advance, it will take practice over an over again. Some of the connotations of the word also can be interpreted as holding KISS and YAGNI dear.
  4. Study of SWE books is, of course, necessary to improve one's professional skills on SWE, and it might even be helpful to pick up some good quotes (guidelines, one-liners etc) and remind oneself of those things repeatedly, thinking about what they really mean.
  5. Total surrender to anyone might not be the best thing for a SW engineer to do as individual thinking and challenging the current design is a good way to improve the design and thus the resulting piece of software. But curiously enough, many experts of their trade are highly dedicated to the thing they are doing, and certainly that does also apply to SWE.
The third pillar is asana, which in yoga tradition means postures (which is the only part most  people ever know of yoga). Asana practice is meant to develop one's tool (the body) so that it is fit and properly diciplined for the challenges that follow. In SWE one needs also proper practice (just read Practicing Programming by Stevey Yegge if you feel like disagreeing). Coding itself is not enough to develop oneself, since there are always external constraints that dictate things like how much time there is for a given task - which prevents adopting new methods or tools that would need time to be learned. If there is always a hurry to get an adequate solution, when will one have time to implement good (or even excellent) solutions? From my experince I'd dare to answer "hardly ever".

The fourth pillar would be pranayama, which in yoga tradition means controlling the life force, but like this part is done in the yoga tradition, I'll leave that and the rest of the story for the private teachings passed from the SWE master to his or her disciples. Besides, I wouldn't even be competent to give any deep teachings - being in dire need for such myself, too.
submit to reddit Delicious