What I Learned during my Sabbatical in the “Real World”

Timothy Urness
8 min readDec 16, 2021

--

Introduction

I am fifteen years into a rewarding career as a computer science professor at Drake University, a small liberal arts college in Des Moines Iowa. During the fall of 2021, I spent my sabbatical working at Granular Inc., an “Ag Tech” company that develops technology-based farm management systems. I had several former students working at Granular and the opportunity to join the company for a short-term, three-month “externship” evolved during informal conversations. My primary objective was to experience the “real world” of software development and bring this knowledge back to the classroom.

One of the biggest challenges in teaching of technology that the content, tools, and practices quickly change or evolve. How can those in academics keep up to date with the current practices used in industry and ensure the technology taught in the college classroom isn’t out of date? How can professors, especially those entrenched in academics for over a decade, be certain that the skills introduced are pertinent to the current practices in industry?

Academic Lessons Learned: Curriculum Changes

Overall, my impression is that the CS curriculum at Drake is academically rigorous and includes the foundation of a strong computer science education. However, there are a few areas where the curriculum can improve. These are tasks that I did regularly in my role as a software developer that were and are vital to success but are often overlooked when teaching students programming. For example, I believe that our introduction to computer science sequence of courses should include units on integration testing and debugging. I think it would be best to establish good habits early and often. Furthermore, the cloud computing course should remove the unit on Hadoop and increase the time spent on serverless computing technologies and containers. Lastly, many of our upper-division courses (not just the software engineering course) should incorporate code repository systems (e.g. github).

There are others lessons learned, but they are more “tool” oriented and less skills oriented, and thus less important. VSCode with the integrated terminal is a great software development platform used throughout Granular. Using command line interfaces, especially with git and AWS, provides a lot of control for managing branches, code repositories, and routine interactions with AWS. I’ve gotten comfortable with tools like this, and will likely recommend them to students in future courses, but the concepts are far more important than the set of tools used. ­

Academic Lessons Learned: Motivating Students

There’s a trend in CS education to utilize “many small problems” in repetition to establish competency doing small tasks well. Current development environments or web textbooks can allow students to practice on one small aspect of programming without having to deal with the structure of developing an entire working program. For example, a student could be presented a series of small problems that require developing if-statements. The big advantage is the reinforcement of foundational elements. However, I think that the potential disadvantage is reducing the practice of programming to a series of academic exercises.

An alternative approach is to use compelling real world or “nifty assignments” to motivate the learning. The potential drawback is the lack of repetition of foundational aspects of programming. However, the advantage is that the assignments can better illustrate the value of computing. Students get exposed early on that knowing how to program can help solve real problems. If the main goal of the course is to inspire students, and hopefully get them to continue studying computer science, then I think that more “real world” examples and “nifty” assignments have a greater chance than the many small problems approach.

The exclusive use of many small problems especially for students in a liberal arts college like Drake feels like the wrong approach. It feels sterile, academic, and (while easy to grade) doesn’t motivate computer science well. The real-world problems, I think, have a better chance of motivating students to learn to love to solve problems with technology. And motivated students who are excited about using technology to solve problems are exactly the kinds of people we need more of in academics and industry.

Academic Lessons Learned: Advising for Graduate School

I had a meeting with a student that was contemplating graduate school vs. industry. When I asked my manager’s advice, he said, “I think you should go to graduate school if you love studying computer science; I think you should go to industry if you love solving problems using computer science.”

There is a lot of wisdom in the above advice, and there is a fine but important line between the two perspectives. As professors, I think we have some influence over how we approach the study of computer science: is it a tool that can be used to solve problems or is it an academic discipline? By incorporating real-world examples throughout the curriculum (see Academic Lessons Learned: Motivating Students), I think we can help foster a love for computer science either as a tool to solve problems or as an academic discipline.

Academic Lessons Learned: Communication Skills and Technological Skills

Communication skills are important. Very important. It’s something that students get in a variety of classes in college (e.g. speech or English courses), but I feel like technical communication skills is an area that can be improved in the typical college curriculum. At Granular, nearly every day, at “standup” meetings, each team member is expected to briefly articulate what they are working on, how it affects the rest of the work being done, and ask and answer relevant questions. At first glance, it feels like an intimidating rapid-fire Q&A session. However, it’s simply part of communicating and developing software in a team. Engineers and software developers need to be able to articulate what they are doing, ask specific questions, and give accurate answers. All of this should be done succinctly with the appropriate level of detail. This is a skill that can be developed. My first several standup reports left a lot of room for improvement but eventually improved with practice.

Academics and the Corporate World are Very Different

There are many things that the corporate climate at Granular does extremely well. The office space is inviting; free (delicious) lunches on Mondays and Wednesdays; a kitchen area that offers free snacks and beverages that resembles a modern convenience store. They have adopted the “silicon prairie” business model, and the morale of the employees is very high. For example, on one day, a fire drill required all employees to evacuate the building. The administrative staff had arranged for a food truck with a specialty for coffee to be in the parking lot. It was like a free, mandatory coffee hour! Near the holidays, a free, catered brunch had the option of mimosas and a bloody marys. You certainly would not find this on our college campus!

The Open Office Environment has Pros and Cons

A lot can be written about the open office, where the working environment has no walls, no doors, and no cubicles — just open space with lots of (standing/sitting) desks, some whiteboards on the walls. My experience is that the main disadvantage is noise pollution. If someone near to you is on a zoom call or having a conversation with another colleague, the noise cancelling headphones will only work to a certain degree. There is also a lack of privacy that exists in the open office environment. Fortunately, the Granular office does provide many different alternative spaces to work or take a private phone call if necessary.

However, there are other sizable benefits of the open office. Informal conversations amongst teams can lead to collegiality and important and impromptu work-related (and/or social) conversations. It feels a little easier to make eye contact with a colleague and have a conversation as opposed to sending a Slack message or setting up a Zoom call.

In the end, in my opinion, the advantages of the open office outweigh the disadvantages for doing software development; although, I will appreciate the privacy that my office door allows when I return to the office next semester.

The Employee Review Process

Granular was undergoing their annual review process during my externship, and I believe that the academic review process could learn from how industry conducts assessments of employees. My experience in academics is that much of the documenting and judgement of the annual faculty performance was shouldered by the department chair. This process was overwhelming for the chair and enforced a top-down, single-point-of-authority assessment. At Granular, however, each engineer was responsible for writing reviews for others on their team. The reports were fairly extensive — often requiring approximately 30 minutes to an hour a piece to write responses to what each team member does well in addition to areas in which they can grow in the future. Employee is only asked to do a handful of evaluations of only those engineers with whom they worked closely. The reports were passed to the team manager, which could be consolidated into a comprehensive evaluation from multiple perspectives.

“Onboarding” and Mentoring

The “onboarding” or orientation process was particularly impressive at Granular. I had a mentor that provided one-on-one questions and answers. He was was knowledgeable and approachable. His commitment to mentoring made him less productive in his regular role, but the company had allotted for this time by reducing his workload expectations while during the mentoring stage of my externship. This process made me feel welcomed, valued, and like I was an important part of the team from the very first day. The formal mentoring lasted for about the first eight weeks until the stream of questions eventually tapered to a trickle. I didn’t have a background in agriculture, so the learning curve was steep and the questions were numerous, but he answered every question (even the seemingly inane questions) with thoughtful, gracious answers. He made the learning process enjoyable. First impressions are important, lasting impressions. And this is another example of how Granular did it well.

Conclusion

Granular’s mission (literally printed on the wall) is to “use technology to help farmers run stronger businesses and steward the land for generations to come.” The work is inspiring as it is involved developing software that had potential to really make a difference in farmers and how agriculture utilizes technology. I’m left with the impression that Granular is a great place to work. They are doing interesting and meaningful work that utilizes the cutting-edge of technology. I will have no hesitation in recommending students to interview for a career at Granular in the future.

--

--