Stephen Balkum

Agile Enthusiast, Leader, and Developer

Branch outside computer science

no comment

Frequently, I have budding developers ask me about college and computer science degrees.  Whereas most developers I work with have a computer science degree, I do not.  I have a degree in astronomy which means I have a very strong math and physics background.  The years I spent doing astronomy or physics research required significant time writing software to analyze data.  I found myself enjoying the coding more than the research.

This past weekend I was at Rice University attending several centennial celebration activities.  I was speaking with a professor from the Computational and Applied Mathematics Department Friday afternoon and the subject turned to the value of a computer science degree.  He expressed concern about how much time is spent by students in computer science courses.  Further, he commented that these students are fantastic computer geeks and understand the theory of software engineering very well, but struggle with what they are coding.

In contrast, the computational and applied math degree at Rice does not have as rigorous of a course load.  Instead, the department encourages the student to pursue an area of interest as a minor or double major where their software and analysis skills will come to bear.  I have been preaching this to aspiring coders for many years and it was confirming to hear a professor in a related field share my beliefs.

As software developers, we spend our time modeling some aspect of the real world, not writing code for the sake of writing code. My first job in the private sector was with Origin Systems (EA) working on Wings of Glory, a WWI flight simulator.  Later with Eclipse Entertainment, I lead the teams writing the simulator Jack Nicklaus Golf.  My math and physics background were my strengths and I was frequently asked not coding questions, but math and physics questions.  Economics, finance, accounting, business, and marketing are all great areas of study and can lead to careers developing software for ERP systems, eCommerce, banking, investment firms, etc.

When considering a college education to become a future software engineer, keep in mind that your future career is more applied and less theoretical.  The programming courses I took were very useful, but only taught me how to use the tools of the trade.  The rest of the courses I took provided the real knowledge I use everyday.

Make them equally awesome

no comment

I’m all about the team.  In all my experience I enjoyed my work most when it was part of a team.  So, when I am coaching a group of developers, I preach a team culture frequently.

One important aspect of a team is a level of redundancy.  If any one member is out, there are others capable of pulling up the slack.  A historical problem with most software development teams is silos of knowledge, individual developers each hold unique engineering information.  This causes all kinds of problems when a key developer is out sick, on vacation, or worse, leaves the team.

Beyond just talking about culture, there are several more mechanical methods for tackling this issue.  Pair programming is popular and works very well.  I encourage it.  Pairing is useful for the tough tasks where two brains are warranted.  It is also great when one brain is experienced in the area and the other is not.

The latest tactic I am enjoying is desk shuffling.  My team basically sits in a big ‘U’ shape with chairs on the inside.  It is very easy to lean over to your neighbor or “row” your chair over to the opposite side.  Every quarter, I shuffle the seating arrangment.  Every developer will move to a new location with new neighbors.  This fosters different pairs and team building as those spontaneous conversations will now involve someone new.

As the leader, the new seating arrangement is not random.  Each quarter I consider pairs that would be beneficial for culture or knowledge transfer.  New guy next to company veteran.  Younger developer next to seasoned engineer.  Subject matter expert between members that want to be.

In the end it is all about making everyone on the team equally awesome, constantly striving to improve themselves and the team.  Little actions like this keep everyone fresh and sharply focused.