What Makes a Great Engineer?

I have hired a lot of engineers. In different locations, in the US and globally. Men and women. Super experienced or straight out of college. I’ve learned that the best engineers don’t conform to any specific demographic (gender, age, race or ethnicity). 

Hiring is really hard. To be successful, you have to have a solid strategy that absolutely includes technical questions and demonstrated ability to code (yes, I know some people don’t like this, but if I’m applying for a job as a car mechanic, it seems reasonable that I have to demonstrate I can, ya know, work on  an engine.) Even with the best strategy, a hire can turn out to be average, or even below average. 

There are three key traits that are found in the really great devs:
  • Aptitude - Fearless because they have the ability to quickly learn new concepts, programming language(s), tools, environments, operating systems, etc. 
  • Self motivated - Internally driven by the desire to solve hard problems. 
  • Integrity - Transparent, even when the news isn’t good. Tells it like it is.

All you have to do is interview people and hire the ones that have all three of these traits. Easy right? Actually, it isn’t easy at all. If we drew a quick Ven diagram, it would look something like this


Depressing but accurate in my experience. I sometimes joke that the intersection on the diagram means that about 5% of the world has all three of these attributes and that seems to be about right.




NoSQL/Big Data in the Cloud

Great post about NoSQL and Big Data in the cloud - an overview that also discusses a portion of the Bing Social Data Platform (I managed this team and the larger platform effort during my time in Bing).

The numbers are quite interesting for scale geeks like me:

It’s also used by the Bing search engine to provide almost-immediate publicly searchable content from Facebook or Twitter posts or status updates. With around 350TB of data, the scope of Facebook and Twitter data is remarkable. When this data is being ingested, transaction throughput reaches peaks of around 40,000 transactions per second and totals between 2 to 3 billion transactions per day.

To summarize:

  • 40k trans/sec at peak
  • 2 to 3b trans/day
  • 350TB of data. The numbers and scale

Google, Red Means Danger

The "new" Google Reader

 

The "new" GMail

 

Twitter's Bootstrap site and their commentary on buttons

 

Is the "Compose" button supposed to tell me when I'm sending mail that is dangerous? I don't get it. Or is the danger here that a designer at Google is actually trying to drive away users?

Running Java, Play! and Scala Apps in the Cloud

SVJUG held their January meeting on 1/18/2012 with guest speaker James Ward, a Principal Developer Evangelist at Heroku.

James did a rapid-fire 90 minute presentation covering multiple web frameworks. He started each project from scratch, wrote code, configured, tested locally, pushed to Heroku, built and scaled each app.

Whew.

It was fun to watch.

We covered the following frameworks:

Spring Roo

James created the basic "Pets" app using Spring Roo commands. He made minimal configure changes, built and ran everything locally. To push to Heroku, he created a Git repository (the push mechanism for Heroku at this point, didn't sound they support SCP, etc) and then pushed this repository to the Heroku Git repository. After starting a Maven build (interesting in that Git only contained his source and configs, no binaries/jars), all binary assets were obtained, a build was run and then deployed and instantiated.

 

Play Framework

There was a lot of interest in the Play Framework. James built a basic CRUD app, creating a basic input screen and a service that emitted the items in JSON. He showed us how modifying both the markup and the source caused no noticable pause to rebuild (no service tomcat6 restart to reload the binaries)

Utilizing a bit of JQuery, he took the JSON output and included it on the input screen to demonstrate the ease of using Play with JQuery. His IDE was IntelliJ because he noted that IntelliJ v11 has built-in support for the Play Framework while Eclipse currently does not.

His demo was using Play 2.0, which no longer uses Groovy for templates as Play has moved to Scala templates instead. Additionally, he noted that Play 2.0 uses SBT (Scala Build Tools) instead of Maven..

Like SpringRoo, the Play CRUD app was pushed to Heroku via Git, built, instantiated and scaled on Heroku. It all looked quite simple from the audience.

 

Scala with Twitter Finagle

The last demo of the night built an app using Scala instead of Java and used Twitter's Finagle framework (we didn't cover Lift unfortunately). James discussed the trials and tribulations he has had learning Scala ("challenging") and demonstrated building a basic app. Like the prior frameworks, he pushed via Git to Heroku, built, ran and scaled the app.

 

Discussion Items/Links

  • Demos - James put all his demos (including a few we didn't have time to cover) up at http://java.herokuapps.com
  • Bootstrap, from Twitter - highly recommended taking a look at Bootstrap for help with design.
  • Netty - Next gen app server built with Java NIO

Overall, a great talk - we covered three very interesting frameworks in 90 minutes and discussed basic pros/cons of each. Time to try them out!

SSE in the News

SSE (aka Stanford Incubator) has been getting a bit of press lately:

As a mentor, it's been great to watch things take root and grow!

Moving to Posterous

After mulling it over seemingly forever, I’m going to migrate off of Moveable Type and onto Posterous.

The reasons are numerous, but mostly because Posterous is just a great blogging platform. I tried several others, including WordPress.com, but in the end liked Posterous the best.

Things will now be here but the current address should redirect you. Now just have to spend some time with mod_rewrite to make sure all my link goodness doesn’t go missing

Facebook Comments Have One Bad Interface

We’re busy creating new UI for PersistentFan, including the addition of Facebook comments. Having comments on each video is something we’ve been after for a while, especially comments that have a built-in social graph.

Imagine my surprise, after fighting with the pretty simple plug-in markup, to discover that Facebook comments are pretty awful from an interface perspective.

Here’s a basic example from the Facebook Social Plug-ins page

Facebook Comments

 

Note that I’ve entered a comment and checked the box to have it published in my news feed, which is shown below

fb:comments in news feed

It is pretty hard to figure out what the context of the comment is (i.e. what is the comment in regards to? Shouldn’t there at least be a snippet of the site the comment was from?) and the citation of the source URL certainly doesn’t help.

At least with a like from the comment plug-in, a friend could have somewhat of an idea about the content:

fb:like in news feed

This feature is definitely a #fail in my book.