What criteria should one use to pick a job?
Most people would answer a combination of skills, salary and commute time.
My personal experience taught me that it is whom you work with, not what you do, how much you get nor where, which matters most.
It’s just a matter of playing the scenarios: if you don’t like your colleagues, you will never have enough money to pay for the vacations to get away from them and relieve your social stress; if you don’t like your colleagues, you will still not want to go at the office no matter how close it is to your home. Conversely, if you like your colleagues, you will not mind spending more time with them when the money you get does not allow you plenty of side activities; if you like your colleagues, you will not mind traveling more time every day to go and see them.
This little piece of wisdom resonates with a recent discovery in my scientific work.
It so happens that I work on concurrency engineering, that is the organization of work in a computer so that multiple separate things can happen at the same time and achieve “more” than if the same work was performed sequentially, ie. one step after another. “Work” consists of processes which transform data and move it around. Both processes and data exist somewhere in space-time; the organization of work thus consists in deciding where and when to place each process and piece of data, possibly next to each other in space but at the same time.
What criteria to use to organize concurrent work in a computer?
Most people in my field look at the type of process, how much data it can process per second, how long it takes to start and stop, and how much it costs to move data between locations within the computer.
My personal experience taught me that it is good communication peers, not good organization of processes and data, which matter most.
Again, to understand one can play the scenarios: if you don’t have good communication peers, increasing processing power will not yield more data processed because there is either not enough external bandwidth to bring the data in and out of the processes, or the data will need a lot of transformations before it can be processed; if you don’t have good communication peers, your processes will still be uninteresting to the external world even if the peers are physically close to your locus of computation, because the result of the computation will not be clearly visible. Conversely, if you have good communication peers, you will have enough external bandwidth and simple data formats to keep all your computing resources humming; if you have good communication peers, the value you contribute will increase because of the interest of your peers in the work performed on your system (Metcalfe’s law).
In my opinion most of the efforts put into the organization of concurrent activities in computers is diverting attention away from investments in increased connectivity and better communication protocols between parallel systems.
The intricacy of the internal interactions within a parallel computer is fascinating, but it is a decoy; just like money and commute time are decoys when choosing an ideal job.