The value of an education

The School of Athens (detail). Fresco, Stanza ...

Image via Wikipedia

I see a great deal of debate recently about the value of higher education, and whether the high cost of university is worth it from a job market/earning power perspective. I have this debate myself recently, seeing the challenges my own children are facing, coming out of college and trying to enter the workforce.

I have a few thoughts on the topic that I would like to share.

The debate scares the hell out of me

We already live in a society that does not particularly respect or reward intelligence, certainly not the way it should. People are very rarely rewarded or recognized for academic success, except insofar as it might help them be financially successful.

Most parents would much more proudly proclaim their child’s talents as an athlete or entrepreneur than as a scientist or researcher.

In addition, we see a strong social trend towards active disrespect of scientific or research disciplines because the results might challenge religious dogma and political rhetoric.

I see the arguments against higher education as threatening the very future of our society. We already have far too few young people entering engineering or scientific disciplines.

You get what you pay for

Ok – so I am not referring specifically to what your higher education costs, in dollars. What I really mean is that you get out of a higher education pretty much what you put into it.

If you are studying something for which you have a passion, if you throw yourself into your studies heart and soul, if you embrace and enjoy the entire experience, then I have no doubt at all that you will see great value from your education both economically and personally.

If on the other hand, you are only there because your parents said you should be and they are paying for it, if you pick your program based on least difficulty or avoiding early morning classes, and if you only apply yourself to least extent necessary to get by, then you will probably get out of education exactly what you put – diddly squat.

So, like many things, what value you get out of higher education depends very much on what value you are looing for.

A good education is more valuable than a mediocre education

A few generations ago, higher education was available to a small enough segment of the population that getting a university degree, no matter in what field or from what school, gave you a significant competitive advantage when it came to the working world.

More recently, say in my generation or the one before it, higher education had become significantly more accessible, but it was still typically sufficient to have a good degree from a good school (and have had reasonably good marks) to have a high probability of long term success.

Now, however, having a degree is not in and of itself a strong differentiator when it comes to the job market. It is now more important that ever to invest in an education that matches your goals. If your goal is to be highly employable and make lots of money, you better be very careful to choose a discipline and a school that matches that goal. Otherwise, you will be one of those who sees your education as a waste.

Education does not guarantee success

This should be obvious, but an education does not in and of itself guarantee success. Actually, nothing guarantees success. All you can hope for is to follow a path and takes actions which improve the probability of success.

People often point examples of very successful individuals who did not finish university, and say “that proves that you do not need higher education to be successful”. That is very true, but remember that such cases statistical outliers, and are so rare as to be meaningless in planning you future. Others often use these examples to support statements like “higher education is a waste”.

Again, what is critical is to have some idea where you are going, and then choose a type and level of education which is appropriate to those goals.

But please, do not discount higher education completely based upon questionable, anecdotal evidence.

Danger! Do not implement SharePoint in your Organization! REDUX

This is a re-post of a column I wrote over on Legal IT Professionals a couple of years ago. Just posting it here so that I have a local version.

This column I want to deliver a warning to all of you out there – do not implement SharePoint in your organization! If you ignore this warning, and implement SharePoint anyway, beware. You run the risk of any number of problems, including:

  • User dissatisfaction
  • Maintainability and support issues
  • Data silos, making information hard to find, hard to share, and hard to maintain
  • Lots of rework
  • General chaos
  • Projects that take 10 times longer than you had planned, if they finish at all.

I do a lot of work helping organizations build solutions using SharePoint – is that all a lie?

Not at all. The problem here is the way you think about your projects. If you are consistently talking about “implementing SharePoint” you are going in the wrong direction. If you are talking about implementing any platform, you are setting up for failure. Many of the problems we run into with SharePoint and other platforms arise from focusing on the technologies.

SharePoint is a technology. It is a platform. It is a pretty good platform, in my opinion. Not without its problems, but a pretty good platform.

So what should you be focused on? The answer is obvious, isn’t it? The focus should be on implementing solutions to real business problems, bringing real business value. That was obvious to everyone, wasn’t it? If this is obvious, then why do I still have conversations with potential clients who come to me saying “Help us implement SharePoint”, when they cannot clearly articulate why they want to implement it? Sure, they can spout a lot of vague statements about documents, collaboration, communication, workflow, etc. but where are the clear statements about how this is all going to help their firm?

I think there are a number of reasons this happens. Firstly, maybe I am just talking to the wrong people (too many techies!). However, I have these discussions with many business people as well. Microsoft’s marketing is also a problem (though it is not Microsoft’s fault). People see Microsoft’s SharePoint marketing information, but they typically only pay very superficial attention. They see all these demos of interesting solutions that seem like they must be useful in their world. Then they go to their IT department (or decision makers) and say “Hey we need to implement SharePoint!”

Even worse, they go rogue and implement SharePoint on a small scale within their groups or departments. Then the IT group has to manage all of these emergent SharePoint deployments, so there is a decision to “implement SharePoint” firm wide.

Finally, there are those firms (hopefully very few these days) who really do not understand that they should not be thinking in terms of the technology.

So when is SharePoint not dangerous? Well, that is driven by how you got to “SharePoint” in the first place. I am not going to go into much detail here, because most of this should be pretty well engrained process (if not, call me – I can help ), but here are the big steps:

  • Identify clear business objectives/problems to be solved
  • Is SharePoint the right technology choice to solve them?
  • Don’t try to do everything at once – build a foundation and grow from there
  • Pick initial projects with high impact/visibility
  • Determine specific ROI goals, success metrics, etc. so that you know if you are meeting your goals
  • Make sure to consider the “human” side of things – introducing a platform that touches business processes and how people work requires detailed planning as to how to introduce it.
  • Get help! Hire it, rent it, grow it – whatever you have to do, get help. SharePoint is a big platform that does a lot of things, and if you do not know the platform well, you will end up building things that already exist. Also, as with most platforms, there are 6 different ways to do almost anything – some of them are better than others.

The first step, though – change your thinking and your terminology – and stop talking about “implementing SharePoint”!

Make Your SharePoint 2010 Master Page Extensible with Delegate Controls

I have been playing a lot the last little while with SharePoint 2010 Delegate Controls. I have known about them for a ling time, but have never really delved into them all that much.

Most of the examples I have looked at, and the usage ideas I have seen, involve using the existing delegate controls in V4.master to do things like:

  • Modify the Welcome Menu
  • Customize the Global Navigation
  • Add useful code to the page header

Last week, I used a delegate control for something a little different.

For a project I am working on, the client wanted some functionality displayed just below the Quick Launch, on every page in the site collection. I know there are lots of ways to do this (put a user control on the master page, put a web part on the master page, or just put links on the master page, since that’s all the content was in this case).

But then I thought of a little bit more elegant (to me) solution. Rather than explicitly putting the content on the master page, I added a delegate control of my own to the page, and placed it just below the Quick Launch, as shown below.

image

Several things to note here:

  • I gave it a ControlID specific to my application;
  • I set AllowMultipleControls to true, which will be useful later
  • I included default content in the <Template_Controls> element, so that I could see it change when I activate a Feature with an appropriate control.
  • Next, I implemented a Feature in Visual Studio 2010, with a control to replace the default content. The details of how to do this are covered in other places (such as here), but to summarize:
  • I created an empty Visual Studio 2010 project;
  • I created a user control inside the project (this automatically mapped the ControlTemplates folder for me). It is a very simple user control, and simply displays “Hello, Delegate!”
  • I created an appropriate elements.xml file to map my control to the Delegate Control’s ControlID.

So, here we see the how the delegate looks before I deploy my feature:

image

After I deploy my Feature, we see that the default content is replaced with the Feature’s control’s output:

image

But wait, there’s more! Remember that I set AllowMultipleControls to true? That allows me to deploy multiple features with controls that map to my ControlId, and instead of only displaying the one with the lowest Sequence attribute, it will stack them all in order of Sequence number, as shown below.

image

This means that I can add any number of  things to the area under the Quick Launch without further customizing the the Master Page.

Maybe I am just easily amused, but I thought that was pretty neat!

The source for this, including the master page, is available here.

Validating User Passwords in SharePoint 2010

I recently wrote a user self-registration solution for SharePoint 2010. As part of this solution, I needed to validate the requested password to ensure that it met the requirements of the authentication provider (in this case, Active Directory).

The code, while hardly rocket science, is something I do not want to figure out again. So I thought I would post it here for my own benefit. If anyone else finds it useful, that’s cool, too!

I wanted to validate that the password met various requirements from the AD policy:

  1. 1. Length
  2. 2. Complexity (contains a combination of lower case, upper case, digits, and special characters.
  3. 3. Content (does not contain all or part of user name)

I did not need to check against old-passwords to prevent repetition, since this solution is creating new users.

Checking for length is blatantly obvious, so I won’t bother showing that.

For complexity, the default AD policy is as follows:

“Passwords must contain characters from three of the following four categories:

  1. English uppercase characters (A through Z).
  2. English lowercase characters (a through z).
  3. Base 10 digits (0 through 9).
  4. Non-alphabetic characters (for example, !, $, #, %).”

This is pretty simple to do. In fact there are several ways to do it, depending on whether you want to use regular expressions, built-in methods of the string class, etc.

  1. For digits and special symbols, I simply created character arrays for those two groups, and used the string class’ IndexOfAny method.
  2. I could have done the upper and lower case the same way, but I decided to take a different approach (just for variety). For a string S, if S==S.ToLowerCase(), then S contains no uppercase letters. Similarly for uppercase.
  3. Having determined the presence of the 4 classes of characters, I can then simply add up the number of character classes found.

So, code I have used for these conditions is:

The next interesting part was the content check. To check that no more than 2 consecutive letters of the user name or full name are used in the password, I iterate over the username, taking three-character substrings, and checking to see if the password contains them. This is then repeated for the full name. If any of the substrings is found, then the password fails:

   1: protected bool PasswordComplexityValidation(string UserName, string FullName, string Password)

   2: {

   3:     char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

   4:     char[] symbols = { '~', '!', '@', '#', '$', '%', '^', '&', '*', '_', '-', '+', '=', '`', '|', '\\', '(', ')', '{', '}', '[', ']', ':', ';', '"', '<', '>', ',', '.', '?', '/' };

   5:  

   6:     bool blnHasDigits = (Password.IndexOfAny(digits) != -1);

   7:     bool blnHasSymbols = (Password.IndexOfAny(symbols) != -1);

   8:     bool blnHasUpperCase = !(Password.Equals(Password.ToLower()));

   9:     bool blnHasLowerCase = !(Password.Equals(Password.ToUpper()));

  10:  

  11:     int conditionsMet = 0;

  12:  

  13:     if (blnHasDigits)

  14:         conditionsMet++;

  15:  

  16:     if (blnHasSymbols)

  17:         conditionsMet++;

  18:  

  19:     if (blnHasUpperCase)

  20:         conditionsMet++;

  21:  

  22:     if (blnHasLowerCase)

  23:         conditionsMet++;

  24:  

  25:     return (conditionsMet > 2);

  26: }

That is about it. I make no representations that this is the best way of validating passwords, or even the best. This is just what I thought up over the weekend!

   1: protected bool PasswordContentValidation(string UserName, string FullName, string Password)

   2: {

   3:     // Check that password does not contain a large part of the UserName or Full Name

   4:  

   5:     bool blnIsValid = true;

   6:  

   7:     // Check if password contains a 3 character substring from the username

   8:     for (int i = 0; i < (UserName.Length - 3); i++)

   9:     {

  10:         string substring = UserName.Substring(i, 3);

  11:         if (Password.Contains(substring))

  12:         {

  13:             blnIsValid = false;

  14:             break;

  15:         }

  16:     }

  17:  

  18:     // Do the same for 3-character substrings from the Full Name, but only if the password is not already invalid

  19:     if (blnIsValid)

  20:     {

  21:         for (int i = 0; i < (FullName.Length - 3); i++)

  22:         {

  23:             string substring = FullName.Substring(i, 3);

  24:             if (Password.Contains(substring))

  25:             {

  26:                 blnIsValid = false;

  27:                 break;

  28:             }

  29:         }

  30:     }

  31:     return blnIsValid;

  32: }

Space shuttle: What have we learned? Apparently, not the difference between astronomy and astrology!

Space shuttle: What have we learned? – CNN.com

Ok, first off, half of this article is about Rep. Gabrielle Giffords attending the latest launch, not about “Space shuttle: What have we learned?”. Not that it is wrong to write about Giffords, it just does not belong in THIS article.

Secondly, and far, far worse, is

Musser was a high school freshman when the first shuttle mission took place in 1981. He said it fueled (sic) his interest in science and astrology. “The shuttle was the most complicated machine ever built by human beings. It’s an incredible machine,” Musser said.

Astrology???!!???!!! Are you freakin’ serious? Either it is an accurate quote, and Musser is an idiot (which I doubt), or the writer (Steve Kastenbaum) is a complete idiot and misquoted Musser (a far more likely scenario).

Is it any wonder that the public at large has no freaking idea about science, and is incapable of understanding the value of the space programme, when neither they nor the mainstream press understand the difference between “astronomy” and “astrology”.

(Or between “science” and “mythology” – which is the root of the whole evolution versus creationism silliness).

My blog has a new URL

As of tonight, I have my own domain, so this blog now resides at http://fyeomans.com. The old URL will of course still work, but it would be nice if new links pointed at the new URL (and old links, too, if you have the inclination to change them.

My own domain – I feel so special now Winking smile

RE:Lean software development using Kanban

Nice post. Before I write anything critical about it, I want to make clear that I think the Kanban approach is very interesting.

I have a few thoughts though, as I always do when considering agile versus "heavy" processes for software development.

First, there seems to be a bit of confusion regarding "heavy processes" and "waterfall models". Heavy processes do not necessarily imply a waterfall approach to development. I was working 20 years ago on heavy (really heavy mil-spec projects) which were employing iterative, incremental development models with frequent releases and continuous integration, nightly builds and test-driven-development, before so-called agile approaches became popular.

My second thought is around development speed and quality. The post makes a significant claim regarding the performance improvement achievable without sacrificing quality. I would love to see real stats on this across a broad spectrum of projects. It also depends upon how you define "quality", and what level of quality is acceptable. Most applications developed today for the public (especially mobile apps and web content) have very low quality requirements, as the implications of a "glitch" are not that severe. On the other hand, banking and online payment software have significantly higher quality needs. Moving on to military, medical device, and other software upon which lives depend, definable, demonstrable quality objectives are required.

Over the years (over 25 years now – man I feel old suddenly) I have led or been involved with software projects following a large number of different processes, from no identifiable process at all, to heavy mil-spec processes, to modern agile processes.

Each approach had its own value, even the "no process" model, and each had its weaknesses. The challenge I have with many proponents of agile processes is that they promote agile as inherently superior to heavy processes (of course, heavy-process oriented folks do much the same towards agile folks).

In my experience, no model works for all situations. Much like selecting a technology or a programming language, it is important to select the right approach for the right job, without being too enamoured with any one approach. While a mil-spec approach is not appropriate for a small team in a start-up, an agile methodology is equally inappropriate for a 10 year, multi-billion dollar, life-critical military project employing hundreds to thousands of developers.

Recently (well, in the last 10 years), I have become a big fan of what I term "just enough process" (which I talked about in a previous post). Always use the right tools and processes for the right job.

Report: Windows Phone 7 sales underwhelm

 

Report: Windows Phone 7 sales underwhelm « Technology News with Daniel St-Louis

 

Not surprising, if my experience in trying to buy one is any indication of the effectiveness of the rollout.

If a phone is launched in the forest, does anyone hear it?

This is a bit of a rant (I do that a lot, don’t I?) Partly it is a rant about Microsoft and its Windows Phone 7 launch. It is also partly a rant about our local Bell Mobility retailer, and their complete lack of customer service or sales skills.

I am in the market for a new smart phone. My current phone is a 3 year old HTC touch, which I like, but it beginning to show its age. Over the past few weeks, I have been looking at both the iPhone 4 and the Samsung Galaxy S. I like the iPhone, but am pretty much anti-Apple because I do not really approve of either the undeserved hype around their products, or their obsessively controlling attitude towards developers and users alike. The Galaxy S looks like an interesting option, however.

For the sake of completeness, however, I wanted to wait and have a look at a Windows Phone 7 device. I am tied to Bell, so unfortunately my only choice would be the LG Optimus Quantum. I am not a fan of slide out keyboards, but I thought I would give it a chance.

I have been faithfully watching the Bell Mobility site for news of the launch. That was a waste of time. Even now, on launch day, there is no information, just a form to fill out to “get more information when it is available”. Last night (November 7) I did get an email from Bell saying the device would be available in their stores today.

image

So today I go to my local Bell partner retailer (Sounds Fantastic in Moncton). Actually, I tried calling Sounds first to save myself a wasted trip, but three calls over the course of a couple hours all went unanswered. I figured they must be really busy. So, I decided to visit the store on my lunch break. Not busy at all – in fact, no one there. So I was able to very quickly get the attention of a helpful sales parson. After a brief sequence of questions and one-word, grunting responses, I learned the following.

They do not have any Windows Phone 7 devices.

He does not know when/if they are getting any.

No, he does not know if anyone else in the area is getting any.

No, the guy who might know if they are getting any is not in today.

Not very helpful. He could have maybe taken my name, or tried to find out the information I needed. But he was too busy (even with no other customers in the store).

So that is my rant about Sounds Fantastic. I was very disappointed by the service, but not surprised. It sort of matches all my other experiences there (on the mobility side, anyway – they seem to be completely different business).

Now to talk about Microsoft, and the Windows Phone 7 launch in general.

How can a major tech corporation manage to launch a major new product, and yet generate no hype whatsoever. I have commented on this before. It seems to me that Microsoft’s biggest weakness right now (and for most of the last decade) is its marketing department. Microsoft makes some very cool technology. In my opinion, they are at least as innovative as Apple, and probably more so (at least they are innovative across a much broader spectrum of technologies and solutions).

But lets looks at Microsoft’s marketing track record (especially marketing to the consumer market – their marketing to the enterprise seems pretty good).

  • Tablet PC: Microsoft launched the Tablet PC back in 2002. Since about 2005 it has been a viable platform. I have been using productively that entire time. And yet, even up to about a year ago, I would have people see me in airports, on airplanes, and many other places, ask me what they device was I was using, and be surprised that anything like that existed. Microsoft completely and utterly failed to communicate the existence of this technology outside of the hard-core techie community. And even within that community, they failed to communicate the power of the platform, or to entice developers to develop for it.
  • Windows Vista: Where to begin on Windows Vista? To be clear here, Windows Vista was far more of a marketing failure than a technology failure.  Yes, Vista had its problems. The vast majority of them (in my opinion) were due to third party driver and application updates or lack thereof – this is of course a marketing/product management issue as well. Vista’s biggest problem was public opinion, and failed marketing. For how long did Microsoft sit back and watch while a certain competitor raked them over the coals with very popular and effective TV commercials? When Microsoft marketing did respond, what was the best they could do? Seinfeld and Gates in obscure, bizarre skits? Please.
  • Microsoft Surface: Ok, this is not a consumer-oriented device (yet), but it is an example of Microsoft coming up with really cool technology and then actively hiding it from the world. Until a year ago, it was very difficult to get any information about it at all. Buying one was damn near impossible. Even now, people look at it and say “hey, that’s copying the iPad” – not knowing it has been around for 3 years.
  • Windows Phone 7: Major new launch, and no hype or energy at all, outside of hard core Microsoft circles. A few articles here and there. Even mobile service providers carrying the devices have almost nothing on their web sites about the devices, and then it is buried. And then I go to a store to look at one, and there are none.  Not “we had some but they are sold out”, just “we have none”. I realize I live in a backwater of the world, but it is amazing to me to see how little attention Microsoft has generated for this launch.

This to me is indicative of what truly ails Microsoft right now. In the enterprise market, they are very healthy. But in the consumer market, they cannot generate any hype. As everyone in this business (or any business) knows, you can have the best products and technology on the planet, but if you cannot get the word out, get people excited, and manage consumer perceptions of your products, you will fail!

Update: After my experience trying to look at a Windows Phone 7 device at Sounds Fantastic, I decided to reply to the above Bell email, asking why there were none at my local Bell dealer. Yes, I know it would bounce because that message was obviously form an auto-mailer. I did get an automated response, though:

image

Good enough. I happily click through the l;ink to voice my concerns – only to see the following page:

image

Just not my day for talking to Bell Sad smile

Bill Buxton: “NUI – What’s in a name?”

Recently (early October) Bill Buxton gave another talk nominally about Natural User Interfaces. For those who don’t know, Bill is Principal Researcher at Microsoft Research and has a 30 year involvement in research, design and commentary around human aspects of technology, and digital tools for creative endeavour, including music, film and industrial design (and a lot of other things, but I am not going to copy and paste his whole bio!).

The presentation, given at Microsoft Development Center Copenhagen, covers a lot more than just current ideas around NUIs. It looks back at the history of efforts to develop natural and touch user interfaces going back to the early 70s, as well as looking at what exactly we are trying to accomplish with these UI paradigms, what natural really means in a UI, and what makes good design in general.

While I highly recommend taking the time to watch the entire video, here are a few points I found really interesting:

  • The “Long Nose”: the concept of the “Long Tail” turned around, indicating that technologies (even successful ones) have a very long lifetime before they get on anyone’s radar, and in fact are usually in existence for about 20 years before they become major industries. This interesting implication of this, is that if you are looking for technologies that will be game-changers (can’t believe I used that term – I hate it) 10 years from now, you need to be looking that technologies that have been around for 10 years already.
  • Ask what your idea is worst at: Every idea is best at something and worst at something. It is just as important to be able to identify what your idea is least suited for as what it is best at.
  • You do not succeed in spite of your failures; you succeed because of your failures.
  • There is nothing all that new or revolutionary in the iPhone, iPad, Surface, or any other tablet-like devices. Most of the technology they rely upon has existed for 20-30 years or more).
  • Many people are stunned by how far technology has come (smart phones, touch interfaces, etc.), when really it is surprising how little progress has been made, given where things were in the 70s and 80s.
  • Most of us still carry around paper notebooks of some sort in order to scribble notes, sketch ideas, etc. We were getting to the point of replacing them with Tablet PCs. Unfortunately that is going away now with the current  generation of smartphones and slates, since they have done away with the stylus because marketing people have told us (so it must be true) that we do not want to take notes or make sketches.
  • The next generation of natural user interfaces need to be context aware. Not software context aware, but real context – where am I, what is the environment, what are the constraints.
  • Why the buttons on women’s clothes are all wrong!

Those are just the things I found interesting. The video is about 90 minutes long (60 minutes of presentation, 30 of Q & A), but it is well worth the time it takes to watch.

 http://channel9.msdn.com/posts/TechTalk-NUI-Whats-in-a-Name