Wednesday, July 27, 2016

Why is it called a "software library"?

I have been picking up programming again as part of work, and making use of a lot of software libraries. Compared to the good old days, there are a lot more libraries now. Back in the good old days, if you needed to do something, chances are you have to come up with the code yourself. Now, a search on Google should likely give you the name of a library that does what you need.

That got me thinking... why is it called a "library" in the first place?

This is something I found.
What's the origin of using the term "library" for software?

If the term "library" really came from back in 1951... then I think it is most likely because back then, programs were probably stored on punch cards. So frequently used subroutines are probably stored and catalogued like books in a library to make them easy to find. So in a way, just like you go to a library to borrow a book, you go to a software library to borrow a subroutine.

Well, another way to look at it, from my own personal (twisted and unofficial) point of view, is that back in the good old days, when the Internet is limited to research institutes and universities and military establishments, people share commonly used subroutines/functions by writing books. Programmers then go to libraries (the physical ones with books) to search for books with subroutines/functions, borrow these books, and use the code in there.

So one goes to a library to borrow books on programming which comes with code inside that can be reused.

And so code that can be reused is thus known as a "library".

And that's my own (unofficial, and probably untrue) view on the origin of the term "library" for software.

;)

Monday, July 04, 2016

Professionalism, knowing your work, and the 80% mark

My new workplace has set me thinking quite a bit about one's attitude towards work.

The baseline is always about "working smart and not just working hard." I guess being in Japan, the land of workaholics, everyone seems to be working hard. Long hours are common amongst my colleagues, and working late into the night (and sometimes, overnight) seems to be the badge of honour everyone is looking at getting. Yet it seems that a lot of time is spent on discussing without conclusion. With a culture used to avoiding conflict, I guess that can be expected. But this leads to a lot of time talking, and a lot more time trying to figure out what the conclusion is and how to move forward. More on that later.

I am used to working in a work environment which values professionalism, and knowing your area of work well (because people can get injured, if not killed, if otherwise), and having to pick up knowledge in double quick time. So I can't help but be a bit disturbed that my new colleagues, who have been on the job much longer than me, do not know their work as well as I thought they should. Not having written a program for more than 10 years, it was a steep learning curve having to pick up R and Python in weeks (actually, days). But now, I have reached a level where I can comfortably program in Python (I use R only rarely when I need to visualize data). And a level where I look at the code my colleagues came up with in the past, and seriously wonder what kind of thinking was behind the code (because of the inefficiency... I was taught that programs should not be just able to do the work, they should be written in an easy-to-understand manner yet perform efficiently.)

Okay, back to the working hard part. I do think my colleagues work too hard. They are so caught up in work, they don't have time to plan, and it seems that they are always trying to catch up. It becomes a vicious cycle since not enough planning means the work is not done as efficiently as it could be, leading to less time for the next job, which means no planning again and this just continues.

I shall always remember what one of my ex-bosses told me. One should always work at 80%. There is no such thing as working 120%. 100% is the max, and working at 100% is not sustainable. And working at 100% also means there is no spare capacity left to handle any contingencies/emergencies that may crop up. That 80% pace is a sustainable pace that allows one enough spare capacity to surge to 100% as and when needed.

Well, I guess my new job is a good place for me to learn about the working culture in Japan. It has helped me tremendously in improving my skills for searching up and learning new stuff, and as a revision for my programming skills. Let's see what other insights I can gain as I continue down this road.