Posts

Been almost a year

I have been so busy since I left OSU (and Columbus) in May 2014, that I totally forgot to update this site. At some point, when my association with OSU has expired, this site will expire as well. In the meantime, happy browsing! You can get in touch with me by clicking on the LinkedIn logo down below.

How does freedom to experiment contribute to Developer Happiness at OSU?

Long time between posts on this topic; so long in fact that the original site that inspired the first couple of posts seems to have gone down for the count.

The freedom to experiment is actually not an alien concept in the dev sphere at OSU. In fact, one could argue that this is a freedom that is too often abused to the detriment of the employing unit. Lone wolf developers sometime decide to go with whatever new technology or framework that catches their fancy at the point of starting a new project. This usually leads to the classic OSU situation of an unsupported app (or set of apps) and users/customers left hanging.

Well, it need not be this way; experimentation and the freedom to do so are the reasons why a lot of developers do what they do. If you ask the average developer at OSU to list off their reasons why they stay at OSU, chances are that this ‘freedom to experiment’ will come in at some point. And why not? The use cases for a ton of software applications at the University are clearly unique and it would seem that the corresponding solutions are likely to be as unique. (Of course, writing a ticketing system from scratch because ‘all ticketing systems suck’ does not fall under this category.)

The freedom to experiment with software and applications should definitely be tied to an objective. Tinkering with the Lucene search libraries ‘just because’ is not a great use of time. However doing this so as to enable an application’s ability to do full-text search is definitely a good option. Here again, the manager of a developer has so much to do with the ‘shaping’ of the freedom to experiment. It might not be enough to simply say ‘get the job done’ and walk away, thus allowing the developer to use whatever open-source software they can get after Googling for relevant keywords. Boundaries such as sustainability, familiarity and usability have to be set up by the manager around these experiments so as to allow the developer to create or manufacture a truly satisfying solution.

Transition: u.osu.edu is now hosted by EduBlogs!

Over the week of Aug 5-9, a team of people from ODEE, ASCTech and ASC Comm was involved in transitioning the hosting of our WordPress MU installation of u.osu.edu from a local cluster of servers to a hosted service at EduBlogs. As the name suggests, EduBlogs hosts WPMU websites/blogs for educational institutions around the world.

About GradCentral

The fancy turn of phrase for the purpose of GradCentral is: graduate student lifecycle management tool. For a mouthful, that does encompass a lot of the things that GradCentral does. It started out as a project to consolidate several disparate (yes, Filemaker was one of them) databases in the Department of Math’s graduate program. The resulting unified web app with its nifty Bootstrapped front end made everyone involved realize the cross-unit potential of the system. Besides the resulting data (collected over the lifetime of every grad student) can provide some valuable insights into the factors that contribute to the success of a student, if not the success of the graduate program of that student. Math is still in the driving seat as far as features go, but several departments have expressed interest in using GradCentral.

Some of the things that GradCentral does:

  • Provide a snapshot of the graduate students in a particular graduate program
  • Provide a snapshot of the details (biodemo info, classes, tests, etc.) of a graduate student (including photos!)
  • Provide tools to periodically review graduate students at milestones in their graduate career
  • Provide workflow tools for students to submit and have approved various aspects of their academic coursework

Future features include

  • Automate a lot of the processes that are still accomplished in graduate programs via spreadsheets or paper/pencil.
  • Display comprehensive data about placement of students post-graduation
  • Modules that deal with the teaching and research workload of students, from a historical and planning perspective
  • Data reporting and analysis of trends.

GradCentral is built on the Ruby on Rails framework with a MySQL backend. It also uses MongoDB for a easy way to store user-defined question/answer pairs.

How does the team contribute to Developer Happiness at OSU?

This post is the first in a series as discussed here: Developer Happiness at OSU

Most times here at OSU, being in a team is like being born; you don’t get to choose your family. Having said that, let’s talk in bullet points about development teams at OSU.

  • Managers are the ones who are most responsible for their team’s composition. Firing is a non-option, so let us talk about the process you have the most control over: hiring. How do I make this absolutely clear? Hire well and hire the people who can work well with your existing team. Our team’s philosophy has been “Hire for mindset, not for skillset.” We define mindset as having an open and honest attitude, questioning-to-understand (as opposed to questioning to demean,) and always, always, always willing to learn. Warning signs are there in almost every interview; make sure that some members of your team (if not all of them) are along in the interview.
  • Hiring for longevity: I have been in hiring committees at OSU where the committee members were leery of hiring someone (who would have been great for the team) because “they won’t stay long at this job.” Well, personally I might be more interested in people who have an ambitious mindset and are entrepreneurial in their outlook. If they do jump for a more interesting opportunity (as opposed to OSU driving them away,) at least we had them for the time we did. Sustainability of an app or piece of software should not be related to the longevity of the people that work on it.
  • How about developers who are a team of one?: I worked in a position like this for a number of years at OSU. The main takeaway I had from my experience is this: You might be the only developer, but you are still part of a team that should necessarily exist. That team is the person that you report to, the people that bring work to you (business analysts, researchers, etc.) and the people that host/support the software that you have developed. Every person interacts differently with the members of this “team,” so I can’t presume to tell you how to change. However, the realization that a team still exists was one that changed my sullen woe-is-me-I-am-alone attitude to one of hey-I-can-talk-to-these-people.
  • Teams that are just so, and there seems to be no relief on the horizon: You know these teams.
    • The vibe is all messed up.
    • It seems like everyone hates their jobs (not necessarily hating everyone else.)
    • The intertubes from everyone’s laptops are jammed with resumes flying to job applications at other places.
    • The manager rules the team with an iron fist of authority.
    • Legacy applications (what we call toxic assets) are overflowing from the portfolio.
    • People are overruling the prioritization process to get in their own pet development projects.
    • Development seems like an afterthought in the overall IT structure.
  • Oof, I am getting the hives just writing all of the above. What does one do in such situations?   The developers will probably follow some variation of exit or voice [1] (sometimes both.) But it is the manager of the team who has the most latitude to do anything, so this is directed to the manager: You may think that there is not much you can do about the portfolio or the fact that your team seems like the step-child of IT upper management. But you cannot make excuses that no ideas exist. There are literally books written on the subject about how you can make life for your team better. Do your homework and see where you can make difference, however small.
  • Side rant: What is up with OSU developers reinventing the wheel? Who decides that rewriting your own database connection libraries in PHP is a fine way to pass time? We have encountered applications where budding geniuses decided to toss aside (or were plain ignorant of) years of open-source, time-tested libraries to connect to MySQL, in order to roll their own. Have fun supporting that after said genius leaves!
  • Shenanigans: Well, allow them, I suppose. 8 hours of productive work per day is an unsustainable target; make sure it is appropriately interspersed with whatever the heck the team wants to do.

1. Exit, Voice and Loyalty is an awesome book written by Albert Hirschmann. Here is a post about him and his life’s work: Exit, Voice and Albert O Hirschmann.

Developer Happiness at OSU

Developer happiness is a term that has gained traction over the last couple of years in the programming world. It seems like the Rails community (and 37signals) started using the term when justifying the decisions made in the Rails application framework. I could be wrong about the origins, but that particular community has definitely taken the term to heart. I like the basic idea of this term as expressed in this blog post by Chris Bell. Here is the main quote:

I believe that developer happiness is driven by the following factors:

  • The team around them
  • The freedom they are given to experiment with new technologies
  • Their working environment
  • The equipment they’re given
  • Good tools
  • The work they are doing

I am going to spend some time on blog posts that dissect this from an OSU perspective.

Edit: First post is here – How does the team contribute to Developer Happiness at OSU?

Resiliency, anti-fragility, code and Devops

BusinessWeek had an article (via GigaOm) a couple of days ago which talked about continuous code deployment with reference to a 15-minute outage that Gmail suffered. The premise was that with the advent of continuous deployment in software products, we should get ready for similar small (ish) outages from all our favorite websites. I really liked the three categories of reasons that rationalize continuous deployment, but what caught my eye were a couple of concepts being used in these rationales.

  • The rise of the DevOps movement: While the definition of DevOps is sort-of clear, it has different flavors within various groups. In some groups, devops is seen as the absorption of operations tasks by software engineers. In a small app dev shop, this might not be possible for all the developers to do, but they could all be skilled at operations tasks in varying levels. In our group, we are lucky that we have devs who are skilled at operations tasks from the metal-up. So OS-level changes are not an issue for us. However, outside of the virtual machine, other tasks such as firewall, load-balancers, content-filters, switches, routers, etc. are still in the domain of the operations team. For any successful continuous deployment to occur, there has to be excellent communications between the two teams. In my mind, however, the devops movement is an indication that (for a rising number of emplyment scenarios) app devs can no longer be niche in their skills.
  • The  ‘antifragile’ concept: Resilience of systems and processes is discussed in Nassim Nicholas Taleb’s latest book ‘Antifragile‘. It refers to the way some entities allow themselves to be broken periodically, but then rise back stronger. Taleb is a great thinker and his unique take on these ideas are quite valuable.
  • Developer happiness: Several times, the article touches on the concept of ‘developer happiness.’ That is an area where I believe a lot can be done to enhance a team’s productivity.

About the ASC Web Platform

Periodically I will write about the web applications that we build and maintain here at ASCTech.

Arts and Sciences home - one of the many sites on the ASC Web Platform

The ASC Web Platform is a massive Drupal multi-site installation. It houses all the departmental, college and main unit websites for the Arts & Sciences. The design and delivery of these sites is overseen by ASC Communications and the technical work and customizations are performed by ASCTech. The platform is built on a cluster of Linux VMs that talk to an NFS server and a MySQL database. The sites are deployed, managed and backed up using Aegir. This allows for multiple versions of Drupal to coexist on the platform. Web analytics are collected using Piwik which utilizes a Piwik server hosted by ASCTech. Availability (in case of accidents, etc.) is aided by a similar dormant setup (that is frequently updated) in another datacenter.

This page at the ASC Communications website has a partial list of the websites hosted on this platform. Also, at that site, you can get user-facing information about the delivery process of these sites.

About AdvisingConnect

Periodically I will write about the web applications that we build and maintain here at ASCTech.

AdvisingConnect (https://advisingconnect.osu.edu) is a flagship application. Originally conceived for advisors as a simple notation system about their individual students, it has grown into a student-advisor relationship management tool. AdvisingConnect (AC) is built on the Ruby on Rails framework with a MySQL backend. It also integrates with MS Exchange to populate advisors’ calendars with student appointments. Future features include the concept of ‘intrusive advising’ where advisors are prompted by AC to reach out to students that fit within troubling parameters. The features for AC are driven by the Office of Enrollment Services and Undergraduate Education. Programming is done by ASCTech and hosting is provided by the OCIO.