Student strike in Montreal

As many of you are aware, there have been massive protests with regards to students protesting the cost of an education in Quebec. Quebec has the lowest tuitions fees in all of Canada, about 1/3 of the costs in Ontario. Let me get the simple things out of the way first. Am I for a free education, of course(with some reservations), do I approve or even support these spoilt little brats in the methods HELL NO.

Montreal Students Striking on the Champlain Bridge
Students Tuesday morning halted Montreal-bound incoming traffic on the Champlain Bridge for more than an hour. They were protesting the Quebec government’s plan to hike tuition fees.

I think education is something that should be free, that everyone from every walk of life that are local residents and paying their taxes should be able to receive. I qualify this statement, to the extent, that paying for residents is one thing, as their tax money (in theory) goes back into the local economy (province, country, etc). We have some very well renowned schools, and offering free education to outsiders will rack up a bill we cannot afford.

My main issue against free education, is that it currently helps weed-out the perma-students. The people who just get degree after degree ( not furthering their education, just adding to it ) at the expense of the rest, or take extreme amounts of time to complete their degree because taking 4 classes is too hard and cuts into partying time.. Its not a sampler menu, where you should be able to pick up 5 different degrees, or take 10 years to do a 4 year program. I remember a guy I went to CEGEP with, he was in his 7th year at the school, on a 3 year program.

Back to the matter at hand. Something i really REALLY don’t understand with these student protests, is if you are trying to gain support from the masses, why upset them by complicating their lives. If you want the workforce to pay for your education, why stop them from being able to go to work? On Tuesday March 20th, they blocked the Champlain bridge trapping drivers on the bridge. The riot police had to be called in, and 97 fines were issued to the amount of 494$ each. 494$ is more than they want to raise tuition, what’s the point?

The one thing i don’t/can’t seem to understand, is why Quebec has some of the highest tax rates, where is all the money going, its not health care ( hospitals closing down, etc), its clearly not going to road repairs, and we can now say its not going to free education, where or where has our tax money gone.

The definitive way to implement a singleton in java

I’ve been interviewing a bunch of candidates lately ( we are hiring ) for a senior java developer’s position, and i’ve come to realize how far from the basics numerous people have become.  You ask them about some ajax feature, or new app on facebook, etc, they jump at the chance to talk about this, talk about that.  Ask them about some basic concepts, and other than textbook definitions, they can’t explain it.

The source of frustration for this post, is from an interview i had a couple weeks ago.  I asked the developer, who had about 2 years experience if i recall correctly and a bachelor’s degree in computer science ( i don’t recall from where, unfortunately), to explain to me what a singleton was.  His reply was typical, if not rehearsed

A singleton is an object that has only one instance in a virtual machine.  This is achieved by having a private constructor, and a static method that either returns an existing instance, or creates then returns the instance.

I love the singleton question, because it allows me to focus in on anything based on their answer.  I can follow up with threading, locking, resource allocation (database pools, etc ), memory allocation ( when is the instance created, etc ).  It is what i like to refer to as a ramp up question.  On the surface, its extremely easy to answer, but if the person don’t pay attention, or doesn’t know when to stop talking, they can get into real trouble.

On the surface the candidates answer was correct and accurate.  I decided to follow up with a how would you write such a method, the reply

I wouldn’t, i would put the @Scope(“singleton”) annotation or put singleton in the spring xml configuration

Once i climbed back into my chair, as i obviously fell out of it hearing that, i asked, what if you weren’t using spring, write me the code for it.  The candidate, wrote the code, but couldnt’ explain the threading risks, or the double checked locking failure .  So enough about interviews, here is the definitive method for implementing a singleton in java.

I did not invent this method, it is from Joshua Block’s Effective Java Reloaded talk from Google IO in 2008 at 28:56


public enum Elvis {
     INSTANCE;
     private final String[] favoriteSongs =
         { "Hound Dog", "Heartbreak Hotel" };
     public void printFavorites() {
         System.out.println(Arrays.toString(favoriteSongs));
     }
}

The reason behind this, is that the enum is created when the class is loaded.  It is automatically serializable, and will always reload to the same instance. That’s all for now.

Day programmer vs Night programmer : revisited

A couple days ago DZone linked to the following article.

The author goes on to define a Day programmer as someone who write code for a living, being mostly incompetant at their job, just doing this for a paycheck.  He then goes on to talk about night programmers as the leads of the technological world, the people that do most of the work, the people contributing to the evolution of their trade.

Every person i’ve ever met acknowledges that there is a distinction, I am no exception.  However I believe there are actually 3 categories of developers, and they aren’t as clearly defined as he makes it out to be. website host information  My categories are more along the lines of this

  1. Programmer
  2. Developer
  3. Elitist schmuck

Let me now describe how i see each person.  First here are the characteristics that i associate with a programmer.

  1. They are in the field mostly because they were decent with computers, and were looking for a good paying job
  2. They are the “do it” guys.  They aren’t here to make waves, they want to be told what to do, get it done and go home to their friends/families
  3. They look for the best paying job for their skillset, with little to no consideration for the work to be done
  4. They only see their assigned tasks, without thought of future impacts
  5. They people are the ones who do the brunt of the daily tasks
  6. Without these people projects would never get done

Most programmers don’t see a solution, they see code to write, and that’s it.  They also understand this limitation, and don’t regret it as their job is usually a means to an end ( feed their family, buy that lexus, the trip to Bora Bora ).  These are often the first hit when a company is having financial trouble or the economy slumps.

The difference between a developer and a programmer, although might seem simply refering to terminology, i believe there is a fundamental difference.  A developer is someone that will be uptodate, and someone who can propose a solution to a problem, not just take a requirement and bang out a bunch of code.  Here are some of the characteristics that i associate with a developer.

  1. These people got into the IT field because of their passion for computers
  2. They will/and do decide their next job not only in relation to the salary, but take into consideration the work they will be doing
  3. These are the people who read and participate in online communities, keep their skills fresh and updated, because something new can be something cool, and help them out later on
  4. They will go the extra mile for their projects/team/job/company but know that there must be a balance of life and work.  That balance will shift from time to time ( during crunch times at work, etc )
  5. They can see solutions to complex problems
  6. They see how today’s development will impact future requirements/enhancements
  7. People follow them based on their personality, and interactions with others
  8. These people are passionate about teaching others, because their passion will hopefully convert another to what they love

A developer will help you through the problems, and stick with it.  They won’t jump ship at first sign of a slightly better paying job, because they joined your company for more than just the paycheck.  They joined because of the atmosphere, the challenge, the opportunity to show that they can be a cornerstone resource, and that thought they could contribute.  These resources are the ones that will bring you solutions to your problems, instead of trying to find a way to fit your problem into their known pattern.

Now for the third category, what i call the elitist schmucks.  These are actually mostly detrimental to your projects, so beware.

  1. Live to right code, and nothing else
  2. Believe that they are the only ones that can solve a problem, even if there solution doesn’t fit into budget, timeframe, client needs, etc
  3. They don’t believe in team work, as it is a waste of their coding time
  4. They can’t understand when people don’t want to follow their brillance

The elitist schmuck, is a very intelligent individual, and can be a huge contributor to your project, as long as you let them decide everything on how it is done.  They have a vision, and as long as you don’t challenge that vision, things will be alright, until the next “big thing” hits, and you refuse to re-write your whole application/platform/etc into that new thing.

The difference i see between a developer and a schmuck, is the ability to work with a team, and with the business to achieve a solution.  The ability to say “Ok, this isn’t the ideal technical solution, but it fits the timeframe, the budget and will work for now.”  They often will propose multiple solutions to your problem, and offer the pro’s and con’s to each, and work to find the best fit.

just my 2 cents on the matter.

Best User Instruction manual ever

I’ve seen some pretty creative ones over the years, mostly online manuals, but this one has to take the cake.  When I saw this, I couldn’t resist sharing it.

The idea of having a step by step guide, available to new users, users who have never had a smart phone.   Take a look for yourselves.

http://www.youtube.com/watch?feature=player_embedded&v=9ozBB-ppMy4

Government and Politics and Corruption

Can one exist without the other?  It seems that all levels of government are subject to this.  I will refrain from mentioning other countries, as my own has its fair share of problems and scandals.

This morning, the news announced that the mayor of my humble little town is being investigated by the UPAC ( unité permanente d’anti-corruption, the anti-corruption squad), and that search warrants were being distributed to several interesting parties.

St-Constant City Hall, Robert J. Galbraith, The Gazette
St-Constant City Hall, Robert J. Galbraith, The Gazette

Here is a little backstory

In 2007, Quebec Superior Court removed Pepin and a slate of municipal councillors from office, for exceeding limits on campaign spending by some 40 per cent.

Read more: http://www.montrealgazette.com/news/Corruption+squad+makes+move+Gilles+Pepin+mayor+Constant/6225827/story.html#ixzz1nneVPnPE

Now this same mayor was re-elected in a by election in 2008, and then again in a general election in 2009 (don’t ask how, I didn’t vote for him).  This mayor has been throwing money at new projects like it would put out a fire or something.  Some of the projects make sense, and are needed to sustain the town that has grown in the past 10~15 years from a mere village with a couple thousand residents to the +25K residents we have now.

source -- evanstonpubliclibrary.files.wordpress.com
source -- evanstonpubliclibrary.files.wordpress.com

Nobody questions the validity of some of the projects, i.e. a new arena, since the one we have is the oldest of the region and is probably costing more to keep running than to build a new one.   Or building a new library, if you’ve ever been to the St-Constant library, you’d understand in a heartbeat the need for one ( we wanted to donate some old, or previously read, English books since they don’t have any, and were told we would like to, but we don’t even have the room to store them ).  I digress, that’s the topic for another time.

 

The main problem, is the process in selecting the projects, the (lack) of propositions that, and some of the other projects that were approved ( and started ) that just don’t make sense.  The common motto seems to be to “revitalise” the city, and bring it forward.  I’m not against doing this, at a controlled pace, i.e. one that the city can afford.  There are a lot of new and young families in my town, part of the population turnover that is occurring.  I’m actually in favor of some of the projects, but 20 million for a new library building, when there was a proposal for just over 5 million for a better solution, or why not just expand the old one, it has the space ( tiny building on huge area ).  As for revitalising, how about some more kid friendly parks, or a public pool that isn’t older than I am, and that isn’t open only from 11 to 3pm weekdays only, instead of building a brand new shopping area stuck to a train station.

This mayor needs to go, and we need someone that can see the ideas, and implement them properly.  I know this is what everyone level of citizen wants from their government, its just a shame when the corruption hits so close to home sometimes.  I guess I am not a politician, I actually believed that an elected official would actually try to better the city they live in, the city that elected them to improve that same city, not just steal the city’s money for their own gain.

Travelling to the US.

full body x-ray scan for the tsa.
full body x-ray scan for the tsa.

Well as some of you know I flew into New York city for business this week.  After hearing all the scares, the restrictions, the guidelines and what not to do, what not to say, I can’t say I was concerned, but i would say i “prepared” myself for the whole “song and dance”.  As i’m going through check-in, customs, and so on, it was the anti-climax.  I walk up, am asked to stand on a pad, and told to follow the arrow ( for context, this is a random selection process to see who gets the “pat down” or the x-ray screening. ), follow the arrow, which leads me to the line for walking through the simple old school metal detectors.

TSA traditional bag screening procedures
TSA traditional bag screening procedures

The process was as simple as it has been, which is only simple if you follow the rules; no liquids beyond the 3-1-1 rule, no weapons, take all metal out of your pockets, belt shoes in the bins, etc.  The experience was fairly “normal” for me.  with the exception that i almost forgot to take my wedding ring off, and the woman at the counter reminded me.  The people were extremely nice and courteous, and were even helpful ( i had to borrow a pen from one of the officers there to fill out my customs card ).  One thing to remember, this was at Montreal’s Pierre Elliot Trudeau ( YUL ) airport.  I can only guess what will be waiting for me on my way home through LaGuardia on Thursday.

NYC: oh the noise

Last night was my first night in New York City, well since the last time I was here 6 years ago.  One thing that i had forgotten ( or maybe suppressed ) was the noise at night.  By choice, I bought my house in the suburbs of Montreal.  Close enough for travelling to and from work, but also far enough that at night, its quiet.  If/when i get up during the night, the only noises i hear, at my family breathing ( yes i have sensitive ears ), the air systems gentle hum, and maybe the dog shifting in his sleep ( he’s a big dog ).  This is the norm for me, quiet, peaceful, it’s what i was looking for when i bought my house, it’s what i enjoy.  I can’t say my area is busy normally, its a residential area.  I’m about 100 meters from one of the main arteries, but once business hours stop, so does most of the traffic ( at least the big trucks. ).  By 8 or 9 pm, there are still noises, but mostly engines, no honking, no police cars, no ambulances or fire engines, just some cars driving around.

So here i am last night, trying to sleep, unsuccessfully, with all the cars, the honking, the police cars, ambulances, etc.  Especially the garbage trucks at 2am.  Seriously, what’s the deal.  Here is to hoping that i get a good nights sleep tonight.  Now i know my tolerances for lack of sleep ( 3 hours a night for 9 days before i collapse, remember i have 3 young children ), but i am much more alert if i get my usual 6-8 hours.

Here’s to hoping sleep finds me easier tonight.

PIPA/SOPA: Stopped they must be; on this all depends.

Being Canadian, I have no senator, governor or anyone else to write to about stopping PIPA/SOPA.  All I have is my lonely blog and my free speech, so this is me showing my support.  SOPA/PIPA can and most likely mean the end for several of the “open” communities that we use around the web, including reddit.  What could be harmful about reddit you ask, it would appear the US government has issue with us the people having control over what is put up on the internet.  This is typical to what the US government believes, that they should control everything, and what they can’t control, they make illegal.

The internet is all about collaboration and sharing of information.  If we aren’t allowed to do that, they we are no better than the censoring countries that we have been condemning.  Please take a few moments and read the post that is linked below to get a little more information about what is going on, and show your support in any way possible.  If you are American, write to whoever you can write to, if you are not, show your support for those opposing this crime against progress.

blog.reddit — what’s new on reddit: Stopped they must be; on this all depends..

Layoffs: The execution

Layoffs are unfortunately a part of most industries, and the technology sector ( or department ) is no different, in fact we are often some of the first to be hit.

The execution of the layoffs ( pun intended ) is the actual delivery of the message, both to those being laid off, as well as those being kept on.  I covered the selection process in a previous post, and will continue this series from here.  I have been using my past experience with various companies, to show examples, but again these are only my thoughts and opinions.

The execution

I will break this portion down into 2 parts, the delivery of the message to those being laid off, and to those being kept on.  Since the message is different, as well as the delivery, they deserve their own description which I will identify as the march, and the hope.

The March

This part is about getting the people being laid off isolated into an office, conference room to minimize the impact of the rest of the people.  During mass layoffs, its common to have the rest of the team called to a meeting while the affected resources are being told the news.

First is getting the person/people away from the masses, this can be accomplished by either walking by someone’s desk and asking them to come into an office, or calling them on the phone and having them come to your office.  The goal of this is to do it as discreetly as possible.  Most of my experiences around this all happened in similar fashion, and were done with professionalism.  It is also important to do it quietly so as to not worry the rest of the staff.  One good idea that i have seen is to have the rest of the team away from their desks when the person being laid off comes back to their desk to collect things ( more on this later ).  All electronic accounts and access should be disabled for this person at this moment.

The delivery of the news should always be done by either an human resources person with the direct supervisor, or if no HR resource exists, the supervisor should have training on what the process should be.  This is to be sure that all laws are respected, questions answered, and information provided.  If some things are neglected to be communicated, said resource has legal recourse against the company, and that can be bad news.

The next important aspect is to be sure not to get into the why me and not them discussion.  Stand by your decision, keep it short and factual.  Do not let the person begin an argument.  Keep the conversation short, simple and straight to the point.  Communicate that the decision is taken and is final.

Following the discussion, each company seems to have their own policy/opinion about letting the person collect their things, or having someone else collect them.  The important part is to minimize the contact this person has with other people for the moment.  This is why having a general meeting with the rest of the employees during this period is a good idea.  I have seen the extremes, of letting say goodbye, to having people escorted around by security guards.  The more sensitive the data, the higher the security risk.  Do not let people access any form of electronics once the message has been delivered, you cannot predict their reaction, and you don’t want them sabotaging your company.

Now let me ask a question, what’s the best policy for dealing people working from home/remote?  This can apply to a remote worker, or someone who had to work from home that particular day due to kids/delivery/appointments, any reason can apply here.  If the person is being let go, do you call them, and then cancel their access while on the phone?  If this person is only home for that particular day, do you wait until they come in the following day, and return any equipment that they may have?

The Hope

This section will address the communication to the rest of the employees and resources working for the company.

The idea here is to communicate what is happening to the rest of the company.  This is to avoid rumors and to maintain the trust the employees have in the company.  The important points to this are to share the high level information,  tell the people the circumstances, inform them that they are not the affected ones.  One important thing to keep in mind, is to not address particular cases with the group.  If a specific question is raised about who/why/etc take that person aside and speak with them, keeping it at a high level, and re-iterate in a general fashion that the choices were difficult and they were made with the company’s interest in turning around in mind.  Do not try to justify, as this will cause more problems.

One issue here, is people that are remote again.  How to inform them, and when to inform them of what happened.  Again ideally, have them call into a conference number so that they can hear the message first hand, if not, depending on the volume of people remote, a phone call or email is an important step.

Most instances this was handled well, if not by the upper management making the call, then by direct managers who called their resources to tell them.  One instance where i have seen a lack, is a person who was working remote that was having a VPN issue, and so they called the help desk, to which the person replied, “please hold while i check to see if you are still employed here.”  This lacked planning and organization, but planning such things is a tricky task at best.

The import thing to keep in mind is the delivery needs to be surgical, no emotion.  It needs to be clean cut, and format.  It doesn’t matter about friends during the delivery, this was done for the business, and you need to keep that mentality.  Planning of delivery is crucial to achieving a “smooth” execution during layoffs.  You don’t want a scene, you definitely don’t want a panic, and taking the proper steps and planning can avoid this.

stay tuned for part 3, the cleanup.

Layoffs: how to know where to cut

The motivation behind this post is two recent series of layoffs I have been witness to.  One in my former employer’s ranks, and one in my current employer’s ranks.  These are not the first layoffs i’ve seen, I was witness back in 2000~2001 when the dot com bubble burst, and saw quite a few back then, then again recently when we shut down a start up initiative that I was part of.

Layoffs are something that nobody ever wants to live through, but until you have, I believe that you can’t understand that this really is business.  I’m not saying you need to be laid off, but you need to have been in a company that at one point went through a phase of layoffs.  It is a sobering experience that brings you back to reality.

Layoffs consist of three things, the “selection”, the “execution”, and the “clean up”.  The selection is all about how much of our salary mass do you need to cut, where can you afford to cut in your business model, and what are your plans recovering.  The second part to this, is how do you execute the layoffs, meaning communication, timing, communication to those being laid off.  The third part and potentially the hardest, is the clean up. How do you turn around and motivate those left behind, and how do you establish an action plan to get back on track.

Before I go on, I would like to put out this disclaimer, I am not an HR person, or HR consultant, and this is my opinion and experience only.

The Selection:

Layoffs are usually the measure taken after a company has gone through cost cutting, as this is a tricky one to get right.  I won’t talk about discovering the magic dollar amount or formula for figuring out how much the company needs to reduce their workforce by, that is unique to each company and reflects revenues, costs, clients, etc.  What I will discuss, is the selection of resources, roles, etc specifically around IT and technology companies and or departments.

When selecting the resources you want to cut, the first and easiest one to find, is the “dead wood”.  The resources that have been “coasting”, the ones you couldn’t quite justify in firing, but were obviously under-performing.  Next, are those that are redundant or obsolete by another person.  Following this is having 2 people do single roles, that can be accomplished by 1, not saying this is an ideal in the long term, but then again is your going through layoffs ( and not shutting down the company ) you are trying to turn things around.  How do you choose which of the two resources to keep in this situation, the one who has the most to give back to the company, the one who is the best investment, or the one who has no other option, since they are unlikely to quit after the round of layoffs if kept.  Once all the dead wood, or expendable resources are gone, how do you move into the next trimming?  Philosophies vary greatly at this point, as does execution.  Some theories go along the lines, of what positions are hardest to replace ( which ones will we have the most trouble filling when the company turns around ), these tend to be your “Subject Matter Experts”, the people that know every detail of your business, not just your company, but the competitors, the trends the clients, etc.  Next depends on the bus factor of your technology, if you have a very low bus factor for something, then you need to identify the people that you can’t lose, the people that would hurt to lose, and those you are  OK with losing.  Because you can’t kid yourself, layoffs will instill volatility, and some of the people you choose to keep, will be looking elsewhere for new jobs.

Once the easy parts are done, now comes the harder part, when you still need to cut.  Do you go for the biggest salary? the least experience? the person nobody likes? the person everybody likes?  I’ve seen it handled different ways and have had my hand in a couple of those decisions, so I can say it’s not easy, but the absolute worst decision you can make is making your choices based on personal relationships.  It may seem like a good idea at the moment, “i can’t layoff this person, because they are my friend, and they won’t be my friend if they are laid off”, but things like that become obvious over time, and it will come back to haunt you.  Your friend, should understand that it was a business decision, nothing personal.

Example 1:

I was recently witness to a layoff in one company, now I said witness, I don’t work there, nor was I involved in any of the decision making in that process, so take this as the view from an outsider.The company is a Small to Medium sized enterprise, less then 100, but more than 20.  After the series of layoffs, they have about one manager for every worker, in fact they have managers that have nobody to manage.  They have close to ten account/project managers to manage less than a handful active accounts, some front end developers/integrators with nothing to integrate, these are resources they decided to keep.  People laid off were some quality assurance/quality control, some database developers.

Lets break this down a little bit, some of these choices seem very wrong to me.  If you are facing layoffs, you would cut everything that was non-essential, and what isn’t required, and keep the resources to get me back up to the glory days.  Do I need so many account managers for a couple of accounts? or can one good account/project manager keep me afloat for a couple months.  Do I need a team of integrators, who have nothing else to do but look busy or do I need a good developer who can do integration if needed?  What choices can I live with when facing downsizing.  What is the best bang for the buck?  What makes money vs. what costs money?  Do you try to please all your clients, or take the time and really focus on those that will bring you the most money.  I read Tim Ferris’s “4 hour work week” a couple months ago, and one of the things is advocates is fire your most troublesome customer.  The one that costs you most of your time effort in exchange for very little orders, facing layoffs, I believe that you need to look not only at your salary expenses, but where are those expenses going.

Example 2:

Now a second layoff experience i’ve recently lived through, was very much more clean cut.  Entire cost centers ( teams from a geographic location ) were eliminated, no prejudice.  But what’s weird is that other cost centers have open positions, and instead of automatic transfers, it becomes an open interview process.  But then again, big business has procedures to follow.

This situation is easy to analyze, the market didn’t perform as expected, less revenue, cut your expenses.  Did the cutbacks seriously harm the companies future, no.  Will this affect the long term, probably not.  They faced a situation, and acted upon it.

 

Following these two examples, you need to question, what are the plans to get back on track.  The second layoff example I mentioned was a temporary downsizing based on lower than expected company performance, so their plan, is probably to be more lean, and to re-grow as the markets pick up.  The first example, you need to question the plans they have to get back on track, finding new clients, offering new solutions, or is this just trying to stave off closing the company as long as possible, or keep it afloat long enough that someone will buy them out?

stay tuned for part 2: the execution, and 3