About Mark Shead

Mark Shead

Mark Shead

Find more about me on:

Here are my most recent posts

Sprint & Google Voice Integration Error

I recently bought a Nexus S 4G and I’m trying to use the Sprint/Google Voice integration, but the following error keeps popping up.

We have a problem
Sorry, there was a problem determining your eligibility for a Sprint integrated account. Please try again at a later time.

It looks like this might mean several different things. Google lists these possible reasons:

  1. Users who are behind on your phone bill.  Please check with Sprint to remedy this.
  2. Users who have a corporate number oa landline number.  Currently, we don’t offer the ability to integrate corporate or landline phone numbers.
  3. You are not using a Sprint-branded mobile phone.  Nextel, PowerSource, corporate, and pre-paid phones are not compatible with Google Voice.
  4. We were in a ‘maintenance window’ during the time you tired to sign up.  Please try again in 24 hours. If you try again and are still unable to integrate your number, it is likely because of the previously mentioned reasons.
  5. If you have call blocking enabled on your account, you cannot use Google Voice on Sprint.  In order to be eligible for Google Voice on Sprint, please contact Sprint to remove this feature and then re-try. You can use Google Voice to block unknown callers and send straight to voicemail.
  6. If you have call tones enabled on your account, you cannot use Google Voice on Sprint.  We recommend contacting Sprint to remove this feature and then re-trying the integration.

None of those appeared to be my issue. My cell phone is listed on two Google Voice accounts.  So there are two GV numbers that will ring my cell phone.  Evidentially this will cause a problem on the Google end of things. I removed the cell phone number from the other Google voice account and it is letting me go through the process correctly so my Google Voice account now shows my cell phone number as the Google Voice number.

However, I still can’t login to Google Voice on my phone.  It gives me the same error. However, Google Voice seems to be working correctly and calls to my number are handled by Google Voice voicemail, transcribed and sent as a text message.

I’m curious if there is a problem with the fact that my Sprint number was set to forward to my Google voice number when it wasn’t answered.  The other issue that might be hanging things up is the fact we have a discount on the plan because of our Costco membership.

I got someone on Sprint’s chat support and they said to undo the integration and then redo it.  They also said that they reset the Google Voice settings on my account. I tried redoing it.  Google voice calls me and has me enter the verification number, but as soon as I enter it, the message on the web page changes to:

Unable to update your account. Your last change needs to be fully implemented before we can make additional changes to your account. Please try again in 15 minutes.

The tech I’m chatting with says to just wait it out. He is sure the problem will be solved when I wait. I’m asking a few questions to keep him on the chat. Now it is letting me go through the process again. Much to “Jack’s” surprise it doesn’t work.  He describes the issue as a “technical glitch” and says they have specialists who can take care of this if I call Sprint.

I’m not having much luck getting him to explain exactly what the “technical glitch” is.  However it appears that he saw something on my account that was wrong, reset it, and then when I got the error message it came back again.

Someone else is helping me and we’ve gotten the Google Voice setup again on the Google side of things, but when trying to use Google Voice on the Nexus S, it still just says:

We have a problem
Sorry, there was a problem determining your eligibility for a Sprint integrated account. Please try again at a later time.

The current technician said that the problem is that my account is listed as a Corporate or Corporation Individual type.  The only reason I can figure out why it might be listed like this is because I have a discount by being a CostCo member.  Tech support says this can be changed to an Individual Liable account without messing up anything else on the account, but for some reason tech support can’t do this.

Ok now I’m talking with another tech support person. I’m not sure why I was transfered to him since the last guy just told me tech support couldn’t help me.  This new tech wants to check everything again.  Sprint could save everyone a lot of time if they would actually add notes to the account about what they did so the next person could read them and not try the same thing over and over again.

This guy is having me turn the phone off and back on again to see if that fixes it. :(

I’m on hold and the recorded message keeps saying:

Waiting is difficult and we know your time is important.

No they don’t know that my time is important. If it was half as important to them as it is to me, I wouldn’t be stuck explaining the same thing over and over again to people and spending long periods on hold while they try to figure out who to pass me off to next.

Now I’m talking to Joe. He says the CostCo discount is the problem. Evidentially it has me listed as a CostCo employee. I asked him if he could switch my account over to whatever it needs to be to work properly without changing the current rate I’m paying.  He is checking with a supervisor and I’m on hold again with the woman’s voice who is very concerned about how important my time is.

Joe did say that the limitation is something that Google is doing–not something that Sprint is enforcing.  I’m not sure if I believe him or not, but it might be part of Google wanting to keep Google Voice from being used for business. I think their terms of service basically say not to use it for a business although a lot of people do.

Joe said my account is setup as a Corporate Liable account. I asked if that means CostCo is liable for my bill, but he said they weren’t. He can’t give me the discount unless I’m listed as a Corporate Liable–which will keep the Google Voice account from working.

Talking to Joe involves me asking a question and him pausing for 30 to 45 seconds before giving me a response that usually has nothing to do with what I asked. Maybe he is looking for a scripted response to, “how does that make any sense?”

I asked what the logic was behind classifying accounts in such a way that they won’t work with the Google Voice integration–something that they have heavily promoted and is one of the things I was very interested in having when I bought this new phone.  His response was, “well since you said you will cancel your account over this I can get you to the retention department.” I’m not sure he is even listening to anything I say. Maybe this is some type of very human sounding auto voice prompt system.

He is blaming it on Google and saying I need to call them. (That sounds more like the humans I’m used to talking to.  I pointed out that Sprint has been just bouncing me around for the past five hours and I really don’t want to have to deal with them just bouncing me to another company.  If he thinks I need to talk to Google then he should conference them in so the three of us can talk. (Not that I think this is going to happen.) He said he would see if he can make that happen.

Waiting…..

Perhaps the goal is to just keep my on hold until their phone system finally drops my call.

Still waiting about 20 minutes later.  I seriously think this is what he is doing because he isn’t allowed to just hang up on me.

Joe says he can’t get ahold of  Google, but now he is saying that this account should work.  He is transfering me to someone in technical support who has done this before.

Ok this guy can’t hear me very well… Argh.  The call dropped.

The new guy, John, called me back on my cell phone.  Now he is calling me on my land line.  Arghhh.  I can hear him, but he can’t hear me.

Ok talking to him now on my wife’s cell phone.

He is reseting something while I have the battery out of the phone.  Now he is asking me if I think the world is going to win tomorrow and telling me about a co-worker who quit their job because they thought the world was going to end.

Hm.  Maybe this guy just has false confidence.  I told him what the previous guy told me–that it wouldn’t work with my phone because to have the discount it must be a corporate type of account. He is going to check with a supervisor about that to make sure it will work. :(

Just found an Engadget post that seems to indicate the problem should be fixed now.

John suggested I change my password. Now I’m able to login to Google Voice on my phone!

Ok not so great.  When I call my cell phone number it gets answered by Sprint Voicemail not Google Voice.  I’m going to try to undo the Sprint Integration and then redo it.

I waited about an hour and tried it again and now everything seems to be working ok. I’m not exactly sure what fixed things, but I can log into Google Voice on my phone now and calls are answered by Google Voice.

Google Voice on the Nexus S, is very nice.  The only problem I’m seeing is that the voice mail notification from the old Sprint voicemail is still coming up. I can’t delete the voicemail because the account is gone.  Sprint says it should go away in 30 days if I ignore it.

If you are thinking about making the switch, I’d wait awhile…

A Few Management Quotes

When a management team with a reputation for brilliance tackles a business with a reputation for bad economics, it is the reputation of the business that remains intact. ~ Warren Buffet

I love this management quote from Warren Buffet.  You can’t manage your way out of bad economics.  The truly brilliant management team knows this and will work to change the economics of the business first.

So much of what we call management consists in making it difficult for people to work. ~ Peter Drucker

This is a funny management quote, but unfortunately very true.

Organization doesn’t really accomplish anything. Plans don’t accomplish anything, either. Theories of management don’t much matter. Endeavors succeed or fail because of the people involved. Only by attracting the best people will you accomplish great deeds. ~ Colin Powell

This management quote is too easily forgotten by managers eager to try out all their new ideas. In fact, part of the idea of management is to create systems so people become interchangeable.  While this might work for some businesses, it is only useful if you don’t need creativity and ingenuity.  Those are things the people bring to the table and you can’t get simply by creating another process or plan.  Seriously how useful is it to have a plan that says, “come up with something brilliant.”  It doesn’t work that way.  Leaps forward only come from having brilliant people.

Harvard Online Master’s Degree in Software Engineering



I’ve seen a lot of questions recently by programmers on Slashdot, Reddit and Stack Overflow basically asking:

I’m writing code, but I’m not very good.  What can I do to change that?

For people in that position who already have a bachelors degree (but not necessarily in software engineering or CS), I’d suggest a little known educational gem.  The ALM in IT degree focused on software engineering from Harvard’s Extension School is an excellent program that will often meet the needs of people who find themselves in the position above. It offers a good education and it one of the least expensive ways to get a master’s degree for someone interested in software engineering. In this article I want to describe the program, my experience and go through class by class and discuss what I found useful.

I completed a master’s degree (ALM in IT) from Harvard with a concentration in software engineering last year. Most of my classes were taken online. I’ve written about what it was like getting an online degree, but I wanted to write up something a bit more focused on programmers who are looking at possibly getting a master’s degree and would be interested hearing about Harvard’s online master’s degree programs.

ALM in IT Degree with the Software Engineering Concentration

The ALM in IT degree is a master’s of arts degree. It isn’t a master’s of science like you’d get if you went to the engineering school. The required courses (see below) were similar to what I’ve seen in many master’s of science degree plan sheets at state schools. If you want to be a computer scientist, this isn’t the best degree for you.  If you want to be a better software engineer, it is ideal because it allows you to choose a good balance of practical classes in current technologies (Java, XML, distributed computing, etc.) with the more theoretical classes (algorithms, theory of computation, etc.).

This balance keeps the program accessible to people who don’t have a heavy computer science or math background.  If you are writing programs, but don’t feel like you are doing “software engineering” you probably have sufficient background to be successful with some hard work and perhaps an extra course in discrete mathematics.

Admission to Harvard’s Extension School

Admission to the Harvard Extension school is simple and very different from the normal competitive college admissions process.  You take three classes toward the degree and then apply for admission. As far as I’m aware, the successful completion of the three courses with B or better is the main criteria for admission. There isn’t a panel of people looking over your application and rejecting this person because they didn’t have enough extra-curricular activities. You must be proficient in English, have a bachelor’s degree and enough of a background in what you are wanting to study to have a reasonable chance of success. It appears that your ability to pass three courses with a B is probably going to demonstrate most of those skills.

This is an interesting approach because it is very much based on your ability to actually do the course work.  The Extension School can do this because their online classes allow them to scale to a much larger number of students than what you’d experience in the other Harvard schools.

Online Master’s Degree / Residency Requirement

To be clear, Harvard doesn’t offer any degrees that are completely done online.  Even the degrees where the majority of the classes can be taken online have a residency requirement. For the ALM in IT program, I had to be on campus for one semester.  Fortunately the summer 8 week semester counts toward the requirement so that is what I did. It is a lot easier to work out an 8 week leave of absence or telecommute arrangement with your employer than it is to try to take off for an entire semester.

The Master’s Degree Classes

My degree plan required 10 four hour courses. Below are the classes I took for the ALM in IT degree. I’ve tried to list them in roughly the order I took the classes from start to finish. Some of my choices were influenced by what was available and also the need to take a certain number of classes from Harvard instructors as opposed to the classes taught by adjunct faculty.

After I started the program, they made a change so one of the three courses you complete for admission must be an algorithms or computational theory course. This is a good thing because you don’t want to get clear to the end of your program only to discover you can’t pass one of the more theoretical classes.

Java for Distributed Computing CSCI E-160

This was was a bunch of firsts for me.  It was the first class I had taken on Java, the first class I had taken online, the first class I took at the Harvard Extension School and my first graduate programming class.  While most classes that introduce you to Java focus on just learning the language, this class assumes that you can pick the language up without too much effort so after a short introduction to the JDK, classspaths and syntax, it gets into distributed computing using RMI.

The class was fascinating and I was impressed with how much material we covered in such a short period of time.  The teacher was very interesting even if he did tend to occasionally veer off on rabbit trails.  (We had one optional lecture on jazz music.)

If you are wanting to learn Java, I’d highly recommend this online course because it focuses on actually doing stuff with the language instead of beating people over the head with the syntax.  If you have no programming background, it probably isn’t the best place for you to start.

Distributed/Enterprise Computing CSCI E-162

When I signed up for this course I still wasn’t sure if I was going to actually pursue the degree.  I wanted to get a but more exposure to Java so learning about  Java EE seemed like a good next step.  The class was well worth my time and I learned a lot, but a lot of what I took away from it was that I’m not that interested in doing pure Java EE programming–particularly Java EE the way it was done when I took this class.

The class was actually focused on distributed computing and Java just happened to be the programming language that was being used to illustrate those concepts. So there was a lot of discussion about the the theory of how distributed computing works followed by the actual application of implementing those things in Java EE.

Even if you don’t plan on doing any type of distributed development, this class is well worth the investment of your time because any Java programmer is going to run into aspects of EE regardless of what they are working on.  This class provides a good foundation.

Design Patterns and Java CSCI E-247

This class covered design patterns and software design.  It used Java and required quite a bit of work with UML diagrams. Looking over my notes, it looks like most of the programming projects involved working with directed acyclic graphs–what you use to create a project management flow chart. The code included things like writing Iterators to navigate the graph and Exceptions if you tried to create some type of illegal cycle.

The idea was to work through a set of assignments where each on built on the previous. If you used what you were learning in the class it was easy to do each assignment because your code was decoupled and easy to modify. If you didn’t make good use of design patterns you ended up having to tear out large sections of your code and redo it. It was a good experience because it modeled real life, but in a setting where you could carefully observe and learn from the consequence of each design decision.

Communication Protocols CSCI E-131B

I took this class because I had been doing quite a bit of work in networking. In retrospect, I think I’ve used less of what I learned from this class than some of the others.  Of course, I also went into this class with a great deal of prior experience and training, so it is hard to separate my current knowledge into what came from the class and what came from other experience. In reality, I think the class clarified a lot of information that I kind of knew from my network training, but it really made me think through the process of exactly what is happening on the network.

For example, a typical homework assignment showed a network design with several hosts on either side of a router and asked you to provide a detailed list of exactly how a message was sent from a host on one side of the router to the host on the other side.  The correct answer included details about how the application passes data down the stack, the host sends and ARP request, gets a response from the router, enters the MAC address in the ARP table, etc.

The class was interesting, but not as hands-on as the programming classes.  My prior experience in networking made the class seem less memorable, but at the same time I have solved some incredibly complex networking problems that drew heavily on the information I learned in this class.

Adv Topics in Data Networking CSCI E-132

Like 131B, I took this online class because I was doing a lot of work in networking at the time. It felt like a continuation of E-131B, but with a different teacher and more of a “survey” course style.  One thing I took away from this course is how difficult open book tests can be. I remember the professor saying something about his grading tried to take into account how long your answer was.  The more you wrote, the less they assumed you knew the correct answer so they tried to give more points for correct short answers than “cover all the bases” answers.

Discrete Math MATH S-104

Before taking this class, I was trying to make it through Theory of Computation by sheer effort. I eventually dropped Theory of Computation, took Discrete Math and then went back and passed Theory of Computation.  Discrete Math didn’t count toward my degree, but it was well worth the effort for someone without a lot of math background.

I took this class during the summer semester when I was on campus.

Web Development Using XML CSCI S-L

This class was very interesting because it was taught by someone who works on the Harvard websites and turns the data in the Oracle database into the static HTML listing every course with links to the prerequisites, etc. My final project in this class was a system that would take an xml file listing book ISBN numbers and my review, download the associated information from Amazon and created a combined XML document.  This XML document was then processed using XSL to create a HTML website with an index, category and individual pages.  It also used FOP to create a PDF using the same data file.

Interestingly when I applied for my first job where I was going to be programming 100% of the time, this project was what they seemed to be most interested in hearing about. Their product didn’t really do anything with web-services or XML, so I’m not really sure what was impressive about it.

The class had a lot of interesting projects including using XML to generate SVG flags for various nations. We also used some of the Harvard course listings to produce PDFs with hyper linked indexes and Apache Forest and Cocoon to create dynamic pages defined in XML.

The class was a lot of work, and I took it during the summer session so the timeframe was very compressed, but it was very rewarding and the knowledge has been very useful.

Theory of Computation CSCI E-207

For me this was the hardest course out of the entire program.  As I mentioned above, I originally started this class and dropped it.  I was about 1/3rd of the way through and earning a B, but I felt my foundation was weak and I wanted to take Discrete Mathematics to help shore things up.

If you have a great deal of training in math this class might not be very difficult, but I was coming from a strong background in music composition–which wasn’t particularly useful in this context.

This class was the last time it was taught by Dr. Lewis.  From what I understand he was the same teacher who taught the course when Bill Gates took it years ago.

While the class was difficult, it probably stretched my mind more than just about anything else.  It was my first introduction to finite state machines, turing machines, Big O, etc. Beyond just computing topics, it changed how I approach business problems in both terms of the process and what is sustainable over the long term. The class was well worth the investment of my time.

The challenge of the class wasn’t so much understanding the concepts, but being able to prove something was right or wrong. Here are some questions from the mid-term. Telling whether the statements were true or false was easy. Proving them was a bit more of a challenge:

  • P ({n ∈ : n ≤ 2002}) is uncountable. (Recall that P (A) is the power set of A.)
  • {w : w is a regular expression for {an bm : n + m ≤ 2002}} is a finite language.

I think they have changed the degree plan sheet to require that you take this class or an algorithms class before you can apply for the degree.  This is probably a good idea, although if this had been the first class I took, I probably would have assumed that the rest of the courses would be too hard for me to complete.

Practical Perl CSCI E-13

This class was taught by a programmer who worked at Yahoo.  It had a very interesting grading process.  To submit your code, you had to run some tests on it.  If the tests passed, you were guaranteed at least a C.  If the tests didn’t pass, you couldn’t even submit your code.  With a large class, this kept the teachers from dealing with a great number of submissions that might not even run.

I learned a lot about Perl, but it wasn’t a particularly difficult class.  That was good because I took it at the same time I was taking Theory of Computation. As far as usefulness, I haven’t done much with Perl.  Still it has been nice to know what I’m looking at when faced with Perl code.

Unix Systems Programming CSCI E-215

This course was challenging, but very much worth it.  Most of the exercises were in the form of reproducing basic Unix commands. There were two projects that really stood out in my mind.  One was creating a simple web server. The second was creating a curses based pong game.

Software Engineering Thesis ITSE E-499

Probably the biggest problem I ran into was getting a thesis advisor.  The process literally took years.  In fact, by the time I was first assigned a thesis advisor, my original thesis proposal was irrelevant so I did another proposal and started over again. The thesis consists of a non-trivial piece of software along with a document explaining the problem, design, and implementation.

Personally I didn’t think the thesis was too difficult.  The hardest part is staying disciplined to get it done.  You layout a plan along with dates and milestones, but it is a different type of work than dealing with class assignments.

My project was a social news/link voting site similar to the concept behind Reddit or Digg.  The interesting part was the algorithms that controlled the ranking.  The algorithms were designed as plugins that could be loaded or unloaded at run time and different weight could be assigned to each one. Instead of a global rank, each person visiting the site would get a customized front page based on what they were likely to see as good content.  Another key part of the project was the way it tried to identify users without requiring cookies or having them log in.  It created a unique identifier based on their ip address, browser headers and other pieces of information. It also retrieved links from RSS feeds instead of relying on end users to submit links.

The basic idea of the project was to create software that would let you run a useful social news site with a much smaller number of users that what you’d need to successfully pull of something like Reddit or Digg.

The programming project definitely wasn’t the hardest programming I’ve ever done, but it did cover a lot of ground when it comes to demonstrating a mastery of the software engineering process.  The project used unit tests as well as Selenium tests and the builds were triggered by a continuous integration server that would turn on a green lava lamp when the tests were running correctly and a red lamp when they were failing. Cobertura was used to make sure the tests were actually covering the code and I used an issue tracking system to keep track of the bugs and features that needed added. I used Subversion for source management, Maven for the build and Mylyn for what I’d call “context management”.

The prose part of document consisted of the following sections:

  1. Introduction
  2. Overview of Link Rank Application
  3. Architecture
  4. Framework and Libraries
  5. Development Process and Tools
  6. Users Guide
  7. Summary and Conclusions

That was followed by the appendix which was mostly the code listing.  All in all the thesis document was 190 pages–about half appendix code and half text.

For many people writing the thesis is extremely difficult. In fact it isn’t uncommon for people to get all their coursework done only to get stalled on the thesis. I think I had an easier time because I spend a lot of time writing.

Real Degree?

A lot of people wonder if it is really a degree from Harvard.  Yes it is. You get a Harvard diploma (in Latin) just like everyone else. They did start adding a phrase that basically means “in extension” to the diploma after I started the program.

There are some people who complain that the Extension graduates aren’t really Harvard graduates. Their objections usually fall into one of two categories.  The first is that Extension students don’t have to go through the same competitive selection process.  The second is that they don’t have the social experience that traditional students get.

Obviously there is truth to both of these objections. The application for admission is merit based which means if you can do the work, you can get admitted.  It isn’t like there are 100,000 people competing for 15,000 spots. Personally I like the objective based approach where your admission is based on your proven ability to successfully handle the coursework. However, if a good part of your identity is wrapped up in the idea that “I’m special because I was admitted into a school that turns down lots of other people” you might not like the Extension School’s approach.

As to as whether or not it is a real “Harvard experience,” there are obviously interactions and networking that you don’t get like you would on campus.  The residency requirement helps some, but it is much more limited.  I wouldn’t recommend getting a bachelor’s degree online because the college experience is so important to kids fresh out of high school.  However, if you are like me and going back for a second master’s degree, you’ve probably already acquired most of your social skills and your focus is more on the class content than the other experiences.

If you see the Extension School as a way to “sneak into Harvard”  and get around the stringent admission process at other schools, you are probably going to be disappointed.  If you are concerned about whether or not people will know you took your classes online, you probably aren’t going to be a good fit for the program.  If you are the type of person who would sell yourself in an interview as someone who was able to complete a difficult online distance program while holding down a full-time job, the Extension School degrees are likely to be a very good fit.

Cost of the ALM in IT Degree

So how much does it cost to get the ALM in IT degree with a concentration in software engineering?  The program consists of 10 4 hour courses if you do a thesis. (I think there is a newer 11 course program that forgoes the thesis as well).   The classes cost $400 to $500 per credit hour so you are looking just under $20,ooo in tuition. By the time you add in lodging and travel for the residency requirement, books, etc. you are likely looking at $22,500 to $30,000.

All in all this is a pretty good deal. It is in line with the cost of graduate programs at many state schools.  By way of comparison, Columbia has some similar programs, but their cost is is over $1,300 per credit hour, plus an additional $375 per course.  So a four hour course from Harvard Extension school would cost $1,600 to $2,000.  A three hour course from Columbia would cost over $4,275. (Columbia’s program requires 10 3 hour courses, so a 3 credit hour course from Columbia Video Network represents the same percentage of the total degree plan as a 4 hour course from Harvard’s Extension School.)

Graduate tuition at KU for out of state students is $691 per credit hour. Residents are only charged $295. The closest degree I could find at KU would require at least 30 credit hours.  So tuition would be about $9,000 or $20,000 depending on whether or not you were a resident of Kansas.

The total cost of a degree from Harvard is more than going to a state school where you are a resident, but very comparable or better than the other options. However, the real cost of getting a masters degree is your time.  If you have to quit your job to go back to school, that will likely be a greater expense than the tuition you pay. Unless you live right next to a university an have a very flexible work schedule, the Extension School programs are going to be far cheaper than your other options once you account for your time away from work.

In addition, many employers have some type of tuition reimbursement program that can help pay for some of the cost–but it doesn’t help you if you have to quit your job in order to go back to school.

Job Prospects with the ALM in IT Master’s Degree

I only applied for a single job after beginning work on this degree, so I don’t have a lot of experience seeing how it perceived in the job market.  The job was my first full time programming position. Many of the classes had interesting final projects and this is what the interviewers asked me the most questions about.  Some of the projects I remember discussing:

  • Writing a simple webserver in C.
  • Writing a curses based version of the game Pong.
  • Java distributed computing projects.
  • XML and webservices projects with Amazon’s data.

The programmers who were in on the interview seemed impressed.  I think there were two reasons for this.  First, I had taken a number of the projects and expanded the after the class was complete.  For example, I had taken the project for the Amazon Web Services and expanded it quite a bit on my own to create a system for keeping track of the books I read. Second, the breadth of experience was great enough that I had experience with certain technologies doing things that the programmers weren’t exactly sure how to do themselves.

The interview went well and I got the job.

My next career move was to start my own company, so I really don’t know the true career impact of the degree on a career working for someone else.  However in dealing with clients there is one experience that kind of stuck out.  I was working on a project that went much better than the client had expected.  They commented, “I guess that is what we get when we contract with someone who went to Harvard.” This surprised me because I had never said anything about my education.  However, people talk and the name “Harvard” sticks in people’s memory.  It turned out that this client had talked to a friend of mine and said they had contracted with me.  My friend said something like, “Oh yeah.  Mark is really smart.  He even went to Harvard.”

A lot of what it takes to be successful in consulting is getting your name to be the first one that pops into people’s mind when they are looking for someone who can solve their problems. Having the Harvard name attached to you as a consultant isn’t a bad thing.

Conclusion

The ALM in IT program isn’t for everyone, but it can be an ideal fit for a working software engineering professional that wants to further develop their skills. It is relatively low cost and offers a reasonably flexible way of getting a degree while maintaining a full time job.

Harder to make a mistake

Facebook had tournament called their Hacker Cup where competitors tried to solve a series of problems in two hours.  Interestingly most of the competitors programmed in C++.  However Petr Mitrichev who one used Java.  When asked why he used Java, he said:

It’s harder to make a mistake in Java.

I think a lot of programmers miss this concept when it comes to programming.  Some constraints that may seem to slow you down can actually make you faster when you consider the cost of errors.  I’m not trying to say that Java is a perfect programming language.  However, Petr decided that for him and his goals it provided an environment that helped protect against making mistakes–mistakes that could cost significant time to fix.

 

Tapestry 5 – 10 Minute Demo of Apache Tapestry

This is a demonstration of about 10 minutes of programming in Tapestry 5 creating a sample application. The app is pretty basic and just lets you add URLs to a list and then vote on them-similar to the idea behind Digg or Reddit. I didn’t really explain things in great detail so it is more of a demonstration of some of the things you can do than it is a step by step tutorial.
Continue reading “Tapestry 5 – 10 Minute Demo of Apache Tapestry”