The Intersection

Mark Cuban wrote a couple of really good blog posts about media and the internet here and here.  His argument boils down to this: If the sole purpose of your website is to bring in ad revenue, you’re not going to last.  In other words: giving away content for free, drawing visitors, and making money solely off of  ads on your site is not a long-term business model.  Specifically he is referring to large media conglomerates such as Newscorp (Fox) and the NY Times with huge brands that offer different types of media

This brings up a good point about web-based businesses all together.  You aren’t going to make money just because you know the Internet and how to create websites.  We are exiting a 15 year period since the early 1990’s where Internet knowledge (knowing how to build websites) was all you needed to start a little company and do it professionally. You could be mostly dumb to the business for whom you built the website.

Internet knowledge is becoming a commodity. Now the Internet is more of a tool, than an end result, to be used by those who know business. It is like a hammer.  Just because you can hammer a nail doesn’t mean you can build a house.  Just because you can build websites, doesn’t mean you can run a business.  However, The inverse is also true: it is difficult to build a house unless you know how to use a hammer.  Just like it is difficult to build a business unless you know how to use the internet

More and more people are learning how the use the tools (the Internet). Just like more and more programmers are learning the business. You need to have these skills to keep up.  Even if you think you are in a position/career track where you will never cross paths with the Internet.  I can almost guarantee you that you will cross paths with somebody who knows the Internet.  And that person will beat you in a competition based on their knowledge.  Knowing the tool is a competitive advantage.

That is why I’m learning this stuff (programming) and putting the information out there to help you learn it too. We need the tools so we can fully apply our business knowledge. I guarantee you there are better programmers than Bill Gates.  But there are few if any better businessmen/technicians.  Now and in the future, those who master the intersection of business and technology will be the ones that are calling the shots

Environment Setup – Java Enterprise Edition

Time for a transition. I’ve been writing about education and I want to start addressing the challenges with starting programming on your own.

One of the issues with open source software is that it can be difficult to get your development environment defined and setup properly. You end up using a lot of mostly “refined” pieces of software (Apache, Eclipse, Java, Maven, Ant, etc…). They work wonderfully but they were originally designed by programmers, for programmers. Most Microsoft users don’t know what an environment variable is or how to add to their classpath but after using open source products you will know more about your operating system than you wanted.

Microsoft (.NET) does not have this problem.  Because ASP.NET which includes VB.NET, C#.NET, and J#.NET is owned and controlled by Microsoft, you just buy Visual Studio and start developing.  In fact Microsoft has taken the huge step, for them, of letting users download language specific versions of Visual Studio for free and SQL Server Express for free.

Free tools have always been one of open source software’s strengths, and a big reason for it’s growth.  Some will argue that open source tools are better than the for-pay alternatives, but I don’t think that is always the case. Typically open source software would be a better offering than Microsoft’s stuff when it was introduced.  But once Goliath noticed what was going on, it could crush it’s free competitor with distribution and bundling (See Netscape v. IE). Java was so much better than Microsoft’s offerings (C++ and VB) for so long that it was able to get a large user base before MS properly responded.  Now Java and .NET are considered to be pretty equal in terms of power, functionality, etc.

Those of us that are going the Java route on our own without expert support through a class or Employer are left to weed through all of the options.  Do you use Netbeans or Eclipse for your IDE?  JBoss, Tomcat, Glassfish, or something else for your application server?  I’ve gone back and forth through all of these options over the past year, and my choice typically revolves around what the tutorial uses.

However I think I’ve finally found an excellent guide, from an expert, for setting up a Java 5 Enterprise Edition (formerly J2EE) and getting started with programming.  There was a course offered through Johns Hopkins for Spring Semester ’09 that has all of its materials available right now.  Check out this link.  The syllabus will help you get started.  I’ve got my environment set up and I’ll be providing updates as I go along.

Credentials

Regardless of whether you decide to improve yourself through unguided study or guided study, if you want to make money from your new skill you will need credentials. A credential is something that tells a perfect stranger that you know how to perform your skill. Your college degree is a good example.  A professional certification is another good example.

Some credentials are stronger than others.  A bachelors degree from MIT is a “stronger” credential than bachelors degree from Backwoods University (I don’t want to offend anybody by stating a real university, but you know what I mean).  Credential “strength” doesn’t mean one person is smarter or better at their skill than another, it just indicates that usually a degree’d graduate from MIT is going to perform better than a degree’d graduate from Backwoods U.

A credential can also be in the form of work examples.  This is very popular in creative industries such as graphic design where it doesn’t matter where you learned it, but you need to demonstrate that you’ve learned it. Your credentials consist of a portfolio of your work.

Some other forms of credentials are: letters of reference from known entities confirming your proficiency at a task; a license; and solid work history (more on this in a moment).   If you want to make money from your new skill you NEED some type of credentials.

In my case I have one type of credential and I’m going for another.  I’m trying to become a programmer with my current employer.  Because I’ve been a good employee with them and have a good reputation with our IT group they are willing to give me a shot. So my solid work history is my credential, in addition to the classes I’ve taken.

In addition to “solid work history” I’m going to be looking for a professional certification.  Sun offers the SCJP (Sun Certified Java Programmer) certification, among others.  Microsoft also offers MC (Microsoft Certified…) certifications as well.  Regardless of what you are going to be learning seek out professional certifications and start building your portfolio as you learn it.

My Reference Source

As I stated earlier, I’m not a very good book learner.  I need the threat of a bad grade to force me into practicing the material.  So I chose the guided study route, after a couple of years of unsuccessful unguided study.

I started looking on-line for accredited on-line classes through a university.  Fortunately for me two things were in place: 1) my company has a tuition reimbursement plan.  2) Major universities offer certificates for computer programming.  Harvard, Illinois and Stanford, among others I’m sure, offer Software Engineering/Computer Programming certificates.  Harvard’s Extension school was the best fit for me due to the cost of the classes, which was less than Illinois and Stanford, and the fact that they have a certificate plan.

The Harvard program is phenomenal! All of the lectures are online and you can watch them whenever you want.  There is a syllabus with assignments due so I would typically watch the lectures as soon as they were available so as to keep up with the course work.  If you are looking for a flexible way to start taking classes again I would recommend looking into one of the programs offered by a major university starting with Harvard.

Plus it’s cool to say you go to Harvard… even though it is technically the Harvard Extension

Getting educated

In order to learn something you need a reference source that provides more information about a topic than you already know.  In my mind there are two sources for personal improvement:

1). Unguided study via books and web sites.

2). Guided study via classes, seminars, conferences, tutors, etc…

The primary challenge with Unguided study is determining the best reference source.  Without a required text book, a conference/seminar agenda, or a similar guide, it is difficult to get started on the correct path. The benefit of unguided study is that it is typically cheap, particularly with the Internet.  However the financial savings have a huge time cost. Without a guide you end up stopping and starting as you correct your path when you hit a dead end such as a bad website, an unhelpful tutorial, or useless book.

Guided study offers the benefit of a proven set of reference materials. It could be an expert speaker/presenter or a list of required readings. Once you spent some time unsuccessfully trying unguided study, this list of proven references becomes invaluable.  However the time savings provided by the list of references typically comes at a financial cost.

Guided study is experiencing a revolution right now.  The most recent issue of Fast Company has an article about on-line courses being offered for free from some of the most prestigious universities in the US.  This is not a utopia yet though, you still need to know which classes to take.

I unsuccessfully spent 2 years attempting unguided study as a way to learn programming. I kept thinking the next tutorial or website or library book was going to be the silver bullet.  It never was.  After going to class again I realized that it was mostly my fault.  My professor said that “You can’t learn to drive by reading about it.  You have to drive the car.  And you can’t learn programming by reading a book, you have to write code”. I needed the structure of a class with homework assignments and exams to force me into focused practice.

If you go the unguided study route, make sure you practice what you are trying to learn.  Find books with practice problems and do a lot of them.  Create your own syllabus and follow it just like you are in a class.  That is the only way you are going to learn the material at the level necessary.

Make a plan

When you are entering college and you say: “I want to be a computer programmer” a smiling college counselor hands you a sheet of paper with steps A-Z that tells you exactly what to do.  When you are in the real world and you say: “I want to be a computer programmer”, nobody tells you what to do.  You have a strong feeling that you don’t need a full degree program, but you don’t know what you can skip.  Do I just need A, D, J, M, and Q?  What happens if I miss H, will I still be able to get work?  And if Q requires 3 months of time, do I really need it?  You need a plan.

One of the keys to learning a new task to do it professionally is staying focused.  It takes time to acquire the requisite knowledge.  Over that time there are many other priorities that will compete for your attention.  Laser-like focus is required to see it through and a well-defined path is required to maintain focus.

Now that I’ve convinced you that you need a plan, here is how I got started.  First I evaluated the way I learn.  This took a long time, mind you.  I spent at least 3 years getting books from the library and trying to teach myself Java, PHP, SQL, etc… with no luck.  Will Hunting got his education by spending “$1.50 in late charges at the public library”, but that wasn’t going to be me.  I needed somebody to teach it to me.  Next post – finding a teacher

Degree or not Degree, that is the question…

One obstacle to learning a new task well enough to do it professionally is creating a plan to acquire the knowledge.  The first time you learned to be a professional in something it was much easier.  When you graduated from high school and enrolled in college/tech school, everything was planned out.  You said: “I want to be an engineer”  and they said, here is what you need to do.  After you completed items A-Z you were an engineer with credentials (i.e. your Bachelors degree).

At 18, the degree that you were going to receive was equally, if not less, important than many other tasks.  Leaving the house, making new friends, maintaining a full social calendar, making enough money to stay in Ramen noodles, and determining where you’ll be spending Spring Break were critical tasks at this point in your life.  Heck, you’re going to change your major 5 times before graduating anyway so you didn’t even know what your degree will be.

After you graduate from college everything is different.  You weigh two factors before you even consider going back:

1). Is the reward big enough?

2). Is there an easier way to get the reward?

Graduate degrees or advanced degrees such as MBAs, Law, and other degrees can only be obtained by going back to an accredited institution.  Therefore point 2 become moot.  However, there are many other professions that do not require University credentials in order to obtain employment.  For those instances point 2 becomes very important when considering that you need to acquire these skills while maintaining the rest of your life.

There is one huge paradox to making things easier: there is no plan, therefore it can actually be more difficult.  Once you’ve decided that a degree is not required to meet your goals then you’ve also given up that nice tidy degree plan that is critical to maintaining focus.  My next few posts will discuss how I created a plan with credential checkpoints to help maintain focus.

Time – Getting Started

From my previous post I mentioned the need to add more hours to the day. I know what you’re thinking: “Yeah Mike, getting up earlier, that sounds wonderful… I’m getting way too much sleep these days”

I know, I know getting up early sucks. But Self Improvement is not going to come without sacrifices. In Team of Rivals, Doris Kearns Goodwin talks about how Abraham Lincoln, and all of his rivals, took to heart Benjamin Franklin’s theme of continuous self-improvement. Lincoln would rise early and work late so as to acquire the knowledge that he missed by not having the formal education of his rivals. He did this through most of his adult life.

You are going to have be like Honest Abe if you want to get serious about learning a new skill (i.e. self improvement). Here is some information to get you started. Tim Ferriss wrote/excerpted an excellent post from Leo Babuta regarding changing your habits.

Getting started is the key. Start small to make getting started easier

Where did the time go

I’m sure we’ve all had this feeling as we are laying in bed, exhausted from another day that finished with 3/4 of your mental to do list incomplete. At that moment you’re thinking “I could never learn something new. I didn’t even finish what I had to do, much less wanted to do”. Unfortunately, I do not have an easy answer for you.

However I do have a difficult answer for you: Create more hours in the day. This is not one of those time management, gimmicky, use tools X, Y, and Z to save more time type of approaches. I mean get up earlier.

Outliers by Malcolm Gladwell offers an a great comparison and proverb for work:

In east Asia the primary crop is/was/has forever been rice. Rice, as it turns out, is a very time-consuming crop. The typical rice farmer works 3000 hours/year. Compare that to your schedule. If you have a long commute, you may be “working” that number of annual hours.  But if you live within 1/2 hour of work, 3000 hours is a lot of time. Even if you are bragging about your 10 hour days, that’s still roughly 2500 hours in a year. 3000 hours equates to 60 hour work weeks.  Apparently yields must be good, or wages poor, because Chinese food is pretty cheap.

As part of the story Gladwell relays the following Chinese Proverb: “A man who can rise before dawn 360 days a year, never fails to make his family rich” This ended up being my new year’s resolution: as of 1/1/2009 I get up before the sun every day. Full disclosure: I couldn’t beat the sun from early June – mid July. However I did wake 15 minutes earlier and now I’m back ahead of Apollo.  After relaying this story to our friends, I am now officially known as the “rice farmer”.

Next Post – a trick to getting started

Welcome to the Blog

Hello,

I don’t know how you found this place but welcome!

I’m writing this blog to provide a road map to acquiring new skills which can be applied professionally.  Specifically I’m going to be talking about Computer Programming.

Note the use of the word “professionally” (i.e. paid). New skills, particularly, it seems, computer programming, can be learned at any level.  You can learn something just enough to perform a task such as building a garage sale website to sell your old stuff. Or enough to pass a class like that required Fortran class (yes, I’m that old) for your engineering degree. Or you can learn it well enough to do it as well as somebody that has acquired credentials and is paid to apply their knowledge (i.e. professional)

In this blog I’ll give an overview of how I obtained the skills and credentials in Java programming for the purpose of becoming a professional developer/software engineer/programmer.  I’ll address some of the difficulties of learning new skills, at a deep enough level, while juggling all of life’s obligations.

For those of you that share my life circumstances (me) you know that your most precious resource is time.  Hopefully I can help out with some time management ideas that you can use.  My goal is that you will be able to take pieces of my story and use them to write your own story.

Thanks for reading