20090601

Selecting a College

    Today, I'm focusing on how to select a school.  While I'll focus on Technology, this really applies to many topics.  When I find a school that has the class coverage I want, I then seek information on the key instructors.

     I want two things in my instructors, that they do practice what they preach, and that they view what they do as a form of art.  Technology and art forms are not usually synonymous, but I'll get to that.

     First, I want to talk about practicing what you preach.  I don't want a teacher that studies and does a few practices on their own, but isn't expected to complete practical work.  There are a hundred ideal ways to build an application, but many of them are not practical with modern management.  Projects start with great aims, but change significantly and often.  Not many isolated teachers recognize that in clear enough terms to prepare their students for it.

     An easy example of the difference between knowing the path, and walking it, is to look at learning a new language.  There are not many teachers or books you can learn from that once you've mastered their courses, you can travel to the country of origin and speak the language, without people knowing that this is a 2nd language for you.  It stands out.  This is the same with programming.  You step out of college, get your first job, and suffice it to say, there are plenty of things you still needed to learn, like we don't actually do that here, or that's not really practical given the time constraints, or don't tell management you can do this in 3 weeks when you haven't actually built one before.  

     An instructor who has to work in a practical environment is something I would target.  This is usually easy to figure out, as most instructors will usually have a page describing them selves, and what they do.  If they have a job or run a company, aside from teaching, they'll probably list it.

     The 2nd target I seek, is an instructor who really sees the art of what they do.  This is a little harder to learn about the teacher, but it is really valuable to have.  Some one who doesn't understand art, sees what a picture looks like.  But an artist can read between the lines.  They can see the feeling that was intended when it was written.  This is not limited to the commonly accepted artistic fields.

     This is really about reading between the lines.  What does something mean that it does not clearly say?  Someone might look at the Mona Lisa, and see a painting of a woman, while others who look deeper, will read subtle expressions of thought that show up through it, along with many other things.

     This translates to programming as well, because the code is similar to art.  If you look at it, it tells you what the developer told the computer to do, but if you read between the lines, you'll see why.  Many developers don't use much in the way of style guides, and pretty much live off of the commonly out-dated Hungarian notation.

     The problem with this lies in the fact that when you don't commit to a stronger style guide, the styles that do show up change from line to line, sometimes even multiple times in the same line.

     In the real world, when some one programs like this, and another developer is brought in to take over, or restart the project, they often feel it would be a better idea to rebuild the entire program from scratch.  It doesn't flow well, definitions aren't clear and you usually have to dig through layers of code to figure out what part of it does.

     Someone who has experienced this, experienced it and grown from it, will be able to pass that on in classes, otherwise they are dooming all of their students to suffer the same fate, and pass the same problems through the work place.  

     If possible, find some source code, (often examples made by the teacher, or pet projects they have public on the Internet) and ask a friend who has experience to read through it, and tell you what they think of the code.  A more inexperienced friend might call the code overly formatted, but typically it will be easy to read, understand, and express itself clearly.  

     For those of you involved in programming, who commonly find yourself wanting to rebuild your own projects after only a short while, because you've learned a new trick, or want to re-organize it, I suggest you look up Microsoft's API Design Guideline.  There's a digest floating around that sums it up quite nicely.

20090508

Educational Compass for Teaching

When I first started teaching at colleges, the hardest part for me was the Syllabus.  I was supposed to define what I was going to teach, and cover, to a certain level of granularity.  This is typically a problem for me, because I don't teach the class, I let the students decide the Curriculum.

I don't read from manuals, prepare slide shows, or have a check list of every facet I speak about.  Each morning, I create a list of keywords I'm going to cover for that day.  as I go through the class, I take a look back at that to make sure I'm getting everything.

I make up the list in the morning, because I don't know what I'm going to do with the class.  I have a vague idea of the direction, but I ask the class what they want to do (within boundaries).  I need to make sure several key topics are covered, but the farther into the class, the less direction I provide, and the more I use the students as a compass, guiding me to what to teach.

A downside I face, as others might see it, is that I didn't have the code prepared that I use as examples.  That means I could be showing them an error.  OH NO!!!  AN ERROR!???  How are students going to learn that mistakes are ok, and that we can learn from them, if the teachers hide from it themselves.  I embrace the mistakes, and use them as learning exercises for the class.

In programming in particular, when a mistake happens in the code, the environment gives you clues as to what went wrong.  That is one of the biggest learning tools.  Especially these days, when it says things like, "You can't use a number here, try using a true or false"  (close enough)  It works great.

I will admit that you really have to know what your doing to teach like this, but if your going to teach it, it only makes sense that you know it that well.  You should be able to write a small book on it if need be.

My students tend to have a lot of fun, enjoy them selves, and learn a lot in the process.  I recommend any other teacher try to look for ways to allow mistakes to show up, and make it work for your classes.  I recommend, if your comfortable with it, to try teaching with nothing more than a brief list of keywords to target, and teach according to what the students point towards the most.

20090429

Define "Fun"...

     One of the first hurtles anyone has to get through in game development is figuring out a definition for "Fun".  Quite often, the initial keywords/phrases a designer may use when first conceiving a game would be "Interesting", "Challenging" and "Lots to do".  But the one keyword they should be focusing on is "Fun".
     So what is fun?  :  Fun is why people play your game.  It is what gets them involved.  It is why they tell others.  And, it is why they keep coming back for more.  Granted, fun can be challenging, interesting and give you lots to do, but the word challenging can describe wrecking your bike, and having to walk it home 2 miles in the rain.  NOT FUN.  Challenging yes, but not fun.  All to often a game designer will get caught up figuring out how to challenge, when you should always first questions yourself, would the players enjoy this?
     First, look at some of the games you play, the games you are most interested in.  Don't consider the technical details of it, but start asking yourself "Why do I enjoy this?", and "What makes me keep coming back for more?", and naturally, "Why would I pay money for this?".  Make a list of things that you think really tie you too it.  Be honest; don't just put things that tie directly back to your ideas, but think through what really makes you want to keep playing it.  Order these by what you think is most important.
     Now, look at your existing designs, and look for where it addresses any of these.  chances are, it probably doesn't address any of it, and probably not things at the top of the list.  

     Now that you have a list of what you really enjoy about a similar game, Start going through your existing design, or start a new one, and everything you add, or have added, ask yourself does it help with the list, and how valuable is it.  For instance, if your list is 20 items long, number them 1-20, then each requirement laid out in your game design should get a number corresponding to which item on the list it covers.  If it is not on the list, put an X next to it.  This right now, is a really important make or break time; don't look at your design trying to defend it, but look at it like its too big, and you need to simplify it.
     Now, take a look through your design, and see what stacks up.  You'll probably find that some of the lower end items have a lot of hits, while your top 3-5 have very few.  This is bad.  The best reasons for playing your game are being ignored, while these little things are taking over.  They are consuming your design time, and certainly will reek havoc on programming development and graphics time.  Remember that every requirement you add, can easily add a week to your projects timeline.

     Now, I don't expect anyone to do exactly what I suggested.  This is intended to give you some ideas, but the most important thing to get from this is that you DO need to figure out what is fun, and focus on that.  Anything else is extra.

McEducation...

Education is, by far, one of the most important factors in any ones life.  It helps take the luck out of success, and in general, improves the quality of their lives and everyone around them.  But that's not necessarily true any more.
Public education has significantly changed over the years.  What is a diploma worth?  While our kids take classes on Economics, History, Calculus and Psychology, a high school diploma has dropped to the income of a happy meal.  
In my years of teaching, I've seen 7th graders learn binary encryption routines and apply it within a 30 minute period.  I've also seen people graduate high school that had no practical work skills.  
I've seen documentaries, and witnessed first hand what our public education system is, a backup.  It is a backup for a real education.  It is a backup when there are no other options available.  When the money starts disappearing, what's the places companies like to pull money from? Luxuries and redundancies. 
The public education system has been a mirror of our country's economic and health status.  More and more physical education and exercise was removed, while our country's obesity was on the rise.  The No Child Left Behind act gets started about the same time that Walmart starts taking over.  We see dropping educational resources, and a rising percentage of jobs that don't provide enough to live on.
So I put this into every ones hands, Education is not something the government is capable of handling any more.  (Please understand, I know there are anomalies in the system.  Teachers, programs, leaders and others that do great things; but this is usually against the grain, and certainly not the status quo.)  Education, if you want it done right, needs to be from experienced people who know how to apply it in the real world.  
A Happy Meal is (to me) an epitome of unhealthy choices both financially and for a child's health.  It is selected because parents don't know better, or don't have the option of something better.  (for time, for knowledge of cooking, for finances)
You can feel the difference of a school that hires teachers to work there, and a school that finds teachers who have a passion for what they do.  To one, its just a job, in a system that wears them down.  To the other, they can show exactly how things are done, what they can really do with them.  
For most of us, we have had teachers that really were impassioned about what they taught, and at the same time, experienced the contrast of a teacher who is just looking from one paycheck to the next.  Ask them, how do I ever apply this to real life.  One will show you, another will tell you to open your book to page 5.
Don't take your's or your kids education lightly.  And kids, don't settle for poor education.  Every reduction in the quality of your education, is a reduction in your future quality of life.  If you don't leave a class room feeling excited about it's future, and yours, then you need to change something.
I recommend looking into charter schools, having talks with teachers, and ask them about their personal interest and history with their teaching subject.  What they do for fun, with it.  A good math teacher will usually like puzzles, and finding tricks and teazers for the kids.  A good english teacher will enjoy novels, and seek ways to get the kids excited about stories.  
Any teacher can require home work, but only a good one can make it exciting.