Thursday, November 19, 2009

Advice for a college Freshman

My post about what you'd teach a 15 year old reminded me of a blog post I have been meaning to write since September. One of the message boards I frequent, SVT Performance had a thread about advice for engineers. Initially it was targeted at women written by an ME, but turned into some good advice for anyone in college. Sorry I can’t deep link to the posting but it is in 'road side'.

I added a few comments, but I have thought more about it so here goes:

Here is my advice to a freshman today in a technical field.

Ask for help. Join study groups. Don’t be afraid of getting to know your peers. You may have been the smartest person in your high school, but there are going to be people better than you in some subject and you better than others in a different one. Get to know your peers so you can help each other. Figure out who are the good people that help others and who are just leaching from the group because they are in over their heads. The guy who kicks ass in Calculus and helps you may struggle in Fluid Dynamics or Data Algorithms were you shine.

Get an internship/co-op as soon as possible. Even as a freshman. Here is one of the last times that you can use your parents and family and not be accused of nepotism. Ask everyone you know if they know anyone in the field you are interested in. Talk to them about summer jobs or co-ops. Of course work through your school’s placement and co-op departments, but sometimes a friend of a friend knows about better positions.

In your internship, make sure the people you work with know who you are. They are going to expect you to ask lots of questions, not know much and even make mistakes. Don’t be the ‘kid’ that no one remembers because you sat in the corner. Here is a chance to introduce yourself to a lot of people in the industry you are interested in. Unlike the rest of the world, these are people you DO have something in common with, so don’t feel awkward about your intelligence or interests. I’ll bet they have felt the same way!

Get a Linked In profile. Yes, I know Facebook is cool (I have one too), but Linked In is where professional people keep track of their networks. It is very rare to hear of someone removing a professional contact in Linked In. Why? Because the network is valuable for years after you’ve stopped working with someone or at a specific job. Being able to search on ‘who works where I am interviewing’ is powerful, but so is asking (or someone asking about you) ‘this would be a great job for Jill, I wonder what she is up to’ AND being able to find them.

Now this doesn’t mean you ask everyone you meet in your internship to be a contact. Instead wait until a couple of weeks BEFORE your internship ends for the semester and ask the people you’ve worked best with for contacts. This isn’t Facebook so you don’t ask everyone.

As you get to know your peers, invite them to Linked In as well. Not the leaches, but the people who genuinely are good at what they do and are people you’d like work with some day. The reason here is the same as above: these are people who are going to be in your industry one day. They are going to be looking for jobs one day or might be able to help you. They may also have the solution to a problem you have (or vice versa). By maintaining the relationship you have at least one way to find them (or them find you) when the time comes.

Again, don’t add everyone in your class. Only add the people you think you’d want to work with. A plus to having a medium sized college network with a small to medium sized professional network is when the hiring manager looks at your profile, they see real professionals AND peers, which tells them a lot about you.

Finally, update your Linked In profile at the beginning and end of each semester at a minimum. As you get closer to graduation the profile and resume should reflect your internships instead of your classes. Update your status regularly about what you are working on. For example, having a status of ‘taking thermo 313 this quarter’ or ‘loved the lecture on np-completeness’ may get people in your network to think of you and reply. This again keeps you in their thoughts.

This isn’t one way. By regularly checking your network you can also see where you could offer help to a peer or a contact. You will be surprised by how many people post about job openings. You may not qualify (or be looking), but the guy that helped you with Calculus might be. By putting them together you help all three of you.

One more thing: don’t cross professional networks and Facebook. While it is tempting to friend someone from your internship, you are in college and you are allowed some stupid things, but don’t let non-friends find out!

Wednesday, November 18, 2009

What would you teach a 15 year old interested in technology?

At last night’s AJUG meeting Burr asked the group a couple of questions about technologies needed today to be hired directly onto a team. The question morphed a little into ‘what would you tell a 15 year old to learn’ if they wanted to be in technology. That question got things going in a different direction with a lot of good feedback.

This post is about my thoughts on this, since I have a 15 year old, although one that isn’t interested in being a programmer.

First would be to learn how to think. I know that sounds strange, but learn how to take data and ask questions or given a problem think about how to solve it. Even when I was in elementary school 30+ years ago, a lot of what we learned was how to apply the processes and algorithms we were taught to the examples/questions we were given. Not, given this poorly defined problem, figure out how to solve it with your full knowledge, not just what the teacher gave you yesterday. Think of it as the difference between geometry on calculating the angle on a graph and assembling a Lego house without instructions.

How do you teach someone to think? Unfortunately I don’t really know. With 3 kids I see that each of them learns differently and the processes I use to help each learn something is different. My only advice on learning how to think: has them questions that aren’t what the teacher taught them in the same area, or ask a different set of questions from what the homework asked. For example, Courtney is working on European history during the colonization times. The expected answer about why the Europeans wanted colonies (from the book) didn’t include the greed factor. And the arrogance factor. So I pushed her to think like the King or Queen during that time and see what you’d want. While she was able to give the 'book' answer, she is also learning to think in someone else shoes.

Back to technology. Thinking about technology, I think learning any language that is ‘backend’ focused isn’t a good place to start. Java, C, Groovy, Ruby, C++, Perl and non-UI languages won’t interest the kids. Instead pair them with something that shows immediate usefulness. So use Grails or Ruby on Rails or even GWT. Get them working on making something they can see and show off.


When I learned to program, most people didn’t interact with computers each day, so showing a green-screen output from the Fortran or C I was writing to my peers or parents was novel and unique. Today, everyone knows the web and a browser so showing them a text output isn’t going to get the response the programmer needs as encouragement to continue. Show someone a web page you built and I’ll bet most kids will get ‘wow, I wish I could do that’ as a response.

Once they have a basic language under their belts, look at the Platform as a Service cloud systems like Microsoft’s Azure, Google’s AppEngine or even Force.com. Why? Because I believe these platforms are going to be where a lot of the jobs are will be in the future. Whether it is a startup taking an idea that MAY require greater scale later, but not today, or the IT developer putting together applications for departments to address specific business problems, these platforms are going to make it easy to deploy solutions fast, instead of waiting on hardware purchases. Of course the whole ISV space is going to make a comeback because of these technologies.

Finally, encourage the kids to get out of the house and play. Build things like go-carts and bird houses. Learn to cook, even if using a recipe from a big cook book (Better is a hand written card from Grandma) Encourage them to take things apart to see how they work. The digital world makes this hard, but what about their bike, scooter or old rusted car sitting in the garage?

Monday, November 2, 2009

ControlTier Presentation At AWSome Atlanta

A co-worker of mine presented about how we are using ControlTier at AWSome Atlanta.

I missed the presentation due to a softball tournament for my daughter, but heard it was great. Watching/Listening to the video I have to agree!

AWSome Atlanta ControlTier Demo

Sunday, August 23, 2009

The return of the small business ISV?

I've been doing a lot of research and thinking about Clouds lately. I know, Clouds is an overused and abused term, but the more I thought about the business uses of a cloud and less about the technology, one thing kept sticking in my mind: the ISV is coming back.

For those around during the rise of the MIS/IT department, business groups used to get what they needed done using computers by hiring a one or few person shop to build software to their exact needed. Ask most 40+ year old developers (and Directors and VPs!) and you'll find that they cut their teeth writing custom code for everything from TRS-80's and HP-1000's to VisiCalc and dBase to sell to small businesses or to larger businesses that didn't have IT yet.

See, before MIS/IT put a clamp down on all non-'approved' applications, it wasn't unusual for a business person who 'knew a computer guy' to hire him (or her, even in those days!) to do exactly what they wanted. So a dBase application to run HR or the dentist office or to handle commissions. In the 80's and 90's I heard a lot of 'so Bob from my Church group did this for us'.

As MIS/IT took control, these small ISVs were starved out by bigger consulting agencies that the IT guys had relationships with (there is a lot more to the decline of the ISV, but I won't get into it today.). Today in most organizations it is impossible to get an application build and installed for a department without IT involvement.

The main reason departments don't do (much) outside work is they don't have any place to run it. With desktops locked down and networks monitored a department couldn't just install an application on a machine bought at Best Buy for their use. I'll talk about all the Access applications that sprung up because of this in a minute.

Now Software as a Service (SaaS) has started to whittle away at this reliance on IT since the apps aren't deployed locally and pretty much all IT sees is the HTTP traffic.

Yes, an department head could get a Rackspace account and run their own hardware, but that is really pushing the box even for someone likes sales (just kidding.) It would also mean they need OS help, which wasn't that easy to come by.

Things are changing though. Take a look at Microsoft's Azure or Google's AppEngine (or the dozen or more similar systems for PHP, Ruby, Java etc.). Here the applications are running inside a container. Containers with well define interfaces with tons of information on the web about how to access them. Containers without any OS access, so you don't need to know Windows, Linux, Tomcat, IIS etc.

Unlike SaaS which typically requires a contract that involves the legal department, Azure and AppEngine can be paid for with a credit card. It wouldn't be a stretch that soon business people are going to 'know a computer guy' who can build apps in these containers. For very little money. Like the kind of money a department manager or director has signing authority over.

Remember those Access databases I talked about a minute ago? Well most of them came out because the business people used Access in school or their interns did and Access is a typical part of Office. So tons of simple (and eventually not-so simple) applications are built with Access, under IT's nose.

What do you think the interns are learning in school now? Not Access so much, but Big Table in AppEngine or SQL Server in Azure. Soon those 'hidden' applications are going to be deployed in the cloud instead of local machines.

So why do I think the small business ISV is coming back? How many business users have problems that could be solved by a small application. One that they'd pay $2000 or $3000 for? How many would be able to hide that amount from IT and the CFO?

Who do you think she'd get for $3000 to build a basic app? Not the big consulting companies, probably not even the local ones IT uses. It will be back to individual developers who will do it at night and over the weekend.

That guy you know from Church.

Thursday, July 23, 2009

Hadoop and Cascading presentation for AJUG July 2009

This week I presented about Hadoop and Cascading for the Atlanta Java Users Group. It was the first time I've presented to a group this big, but I think it went well.

Here is a link to my slides.

Here is a link to the video