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

Tuesday, October 28, 2008

Jeff Sutherland at Agile Atlanta

Last night I attended the Agile Atlanta meeting last night where Jeff Sutherland, co-creator of Scrum, presented his experience with distributed teams and Scrum. He was a really impressive presenter.

The general idea of his presentation was that distributed teams should be working on integrated Scrum teams instead of isolated. He presented a number of cases where the teams had 'local' resources with the Product Owners and 'remote' resources elsewhere. For example one company built a scrum team of 4 engineers, with 2 in Denmark and 2 in India. Initially they all were together in Denmark for 2 sprints, then they broke them up. Jeff claimed that the velocity and quality of the team from the 2 sprints 'together' was continued when they were separated.

His reasoning was that because the team had started together, knew (and to some extent trusted) each other and were using the same tools they continued the same velocity when they changed location. He also said that the team had a shared sense of urgency about what they were trying to accomplish and the remote team knew the product owner and what he was trying to accomplish instead of him being a voice on the phone. He showed their velocity over a dozen or so sprints and pointed out a couple of anomalies, including one major one where the velocity took a nose dive. They found that it was the culture of the Indians, where the junior members (they now had 8 total members) were waiting on the senior engineer to tell them what to do. Once the team understood this, the team made the senior engineer the scrum master and told him to fix his velocity problem.

He also presented a number of cases where non-integrated distributed teams (both outsourcing and different offices) didn't provide anywhere near the same velocity as the co-mingled teams, as he admitted, contradicting all the Agile best practices of putting the teams in the same room. He presented that this was due to the silo building that went on with these teams since they had different priorities and sense of urgency.

He also had a great comment to someone asking about the lone expert who is the only one who knows how to do something: he advises his teams to not commit to anything where there is only one person who can perform the task. if they find a task that only one person knows how to do (he used the example of a deployment configuration manager at one of his clients), then the sprint should stop and the team immediately begin cross training.

The main presentation is here.

A posting about one of the teams he worked with is here.

A paper about the findings is here.

Sunday, August 24, 2008

50+ hours and still a full charge

I really think the battery problems are related to the devices hunting for a signal. I didn't really go out this weekend, so I used the phone only a few times for a few calls. However, the # and time of calls were definitely less than last week when I didn't have a signal most of the time.

Anyone else notice poor battery life when the phone is always hunting for a signal?

Friday, August 22, 2008

Thoughts on cell phone (and iPhone) batteries

I was at an off site meeting most of this week and one very odd thing happened (well, several odd things happened, but I'll only write about this one ;-)

My AT&T Razor's battery would last less than 24 from the minute we arrived until we left (a little over 3 days). I have never had problems with this phone and batteries. What is odd is when I got home and fully charged it, it is now 11 hours later and I have a full charge.

One piece of information: I didn't have a signal at all in the buildings were we were staying. No edge or 3g. Is it possible that the reason so many people have bad battery life is that the phones are wasting a lot of power trying to find signals, or switching between edge and 3g?

If the phone is still fully charged in the morning that I know it has something to do with the lack of a network, since I get a strong 3g signal in the house.

Thursday, August 14, 2008

IASA Atlanta - August 08 Meeting

Last night's IASA Atlanta meeting was a good one. The main topic was a panel discussion around 'Design Patterns'. Unfortunately, I thought the names of the speakers were on the IASA website, so I didn't write them down (Please comment if you know their names and I'll update this.)

The discussion started with a definition by each of the presenters of what 'Design Patterns' are. The crowd then got involved with their definitions, where they have seen abuses of patterns and suggestions for how to present patterns to their work environments. Having worked almost exclusively with experienced engineers (or junior engineers who ate up anything new or interesting that they didn't know) I was surprised by some of the suggestions and challenges those working in bigger companies had to introduce these concepts. As part of the discussion on how to introduce patterns into an organization we got into a discussion about how people learn and how some (like me) have a 'gut' feeling about what parts of a complex topic can be skipped until later to get the bigger picture. Great discussion on this with the group as well.

About an hour into the session the subject changed to hiring questions, including a favorite of mine: 'what have you read recently?', or how I ask it 'what do you do to keep current with the changing technologies?'. Several good suggestions for Pod casts and RSS/email lists. My suggestion was IBM's developerWorks. I get both the email and the RSS feeds. A number of people joked about the answers they received to these questions. My personal favorite is a candidate who 'reads the internet'. When asked for more details he said he surfs around looking for articles and posts.

One of the group asked about certifications and whether they were useful metrics when hiring or when looking for a job. I personally don't put a lot of weight into them. Some are non-trivial to obtain, but a lot of them have a lot of fraud behind them. I've (unfortunately) interviewed enough engineers (software, network and hardware) who were certified MS-this or Novell-that and Cisco-whatever who couldn't explain the basics of where they used these technologies or answer non-trivial questions. There was also a lot of fraud during the earlier part of this decade where people were paying examiners to pass them and some 'training' companies even advertised they could guarantee you'd pass. One of the IASA officers countered with the rigorous testing that you need to reach the more advanced Java certifications, so I need to look into that some more.

Bringing the discussion back on topic (part of the reason I enjoy these meetings is they tend to be very interactive with the crowd and the speakers/organizers let things get off topic for a little while if the group wants it to.) we talked about Anti-patterns. The general consensus was that 'anti patterns' are mostly about personnel and management, but have a place in development. One comment was the the people interested in patterns hate anti-patterns. I personally enjoy reading about anti-patterns so I can see if I'm doing something others flag as bad, or my organization is, or to see what things can go wrong as we implement a new process or technology so we can avoid them.

The last few minutes were a discussion of patterns again, with Burk asking if this was a topic we wanted to cover again. I chimed in that I thought it was a good idea, but to include more advanced/complex patterns since most people with an architect title or role should know the basics like singleton or command.

There was one mention of scrum, in passing. One mention of offshoring, again in passing. (Both of these usually lead to some detailed discussion, but not tonight.)

It was also one of the best attending meetings in a long time. Lots of the same faces, but plenty of new ones.

At the end I got to check out the Kindle that one of the speakers uses. Pretty impressive device, I may need to add it to my Christmas list.

Sunday, August 10, 2008

Norton 360

I've been a user of Norton Antivirus for over a decade now (I think I bought it when I joined Earthlink back in 1995?). A couple of the releases have sucked (2006 had to be reinstalled every couple of months after a failed dictionary upgrade for example)

My subscription was up this weekend so I went an bought an upgrade to Norton 360 this weekend at Best Buy. They had for $10 less than online. Plus I was there getting a WII Fit and Mario Kart ;-)

First I had trouble uninstalling the old versions on both PCs. Eventually found a tool on the Symantec site to remove ALL products. This tool even found left overs from 2004 versions. With them gone, the install went pretty smooth.

First thing I noticed was the difference in memory footprint. Easily 150 MB smaller with the new version installed than with 2008. I also noticed that the disk thrashing has stopped. To the point that the disk on my main desktop isn't spinning at all, and sometimes goes into powersaving mode. That NEVER happened with the previous version.

This version also has an anti-spam gateway, firewall and anti-malware systems. They've also bundled the disk defragmenter from the standalone tools product.

Odd thing is they added an on-line (Internet) backup tool. I've been using Mozy for a month now (I'll write about it next week after I test restore some files.) I have 20 GB backed up and the Norton tool comes with 2 GB free, but I didn't use it.

I also kicked off a full system scan, then did email and surfed. I didn't notice any delay. In the past the machine was worthless when it was scanning.

Only downside: Norton 360 doesn't like Windows Defender. Not sure why, I'll research that some more, but it told me to uninstall it before it could install.