Thursday, July 7, 2016

Outward Thinking for Our Research Community

In our research community, besides teaching duties, university researchers commonly focus on securing funding resources to support their research group's research activities, recruiting and advising students along with collaborating with external (academic or industrial) collaborators to conduct research, and contributing professional services within the research community such as ACM SIGSOFT and IEEE TCSE along with their sponsored or associated journals or conferences. While sharing many of these focuses, industrial-lab researchers typically do not need to teach, secure external funding resources, or advise students to conduct research (except supervising summer-intern students during summer time). These preceding activities are mostly "inward facing" (e.g., within the research community): competing funding resources within the research community, publishing and presenting inward-facing research to serve the audience within the research community, conducting professional services within the research community, etc.

A couple of years ago, John Regehr (U. Utah) discussed "Inward vs. Outward Facing Research". When discussing why researchers have a tendency to face inward, he stated "This is natural: we know more about our research’s internal workings than anyone else, we find it fascinating (or else we wouldn’t be doing it), we invent some new terminology and notation that we like and want to show off, etc. — in short, we get caught up in the internal issues that we spend most of our time thinking about."

However, the research community (either broadly in computing or specifically in a research area such as software engineering) can be impacted by the broad ecosystem that the research community lives in. For example, a government funding agency needs to allocate total funding across different research areas; a university (college or department) or industrial research lab needs to allocate the total head count for new hires across different research areas; a student applying for graduate schools needs to decide on what research area he or she would like to apply for. Thus, it is important for the research community to sustain and further boost the importance, impact, and reputation of the research area perceived in the eyes of other computing research communities or in the broad society such as the industry and government. Only when we accomplish so, can the community as a whole grow better, e.g., attracting more resources such as funding allocation, faculty positions, industrial-research-lab positions, top student/junior-researcher talents, other communities' researchers to address our important problems.

In particular, besides the typical inward thinking that researchers in the research community already have, more outward thinking is needed for the research community to better grow in this broad ecosystem. In the broad computing community, there are quite some prominent researchers and other research areas with such strong outward thinking. For example, Ed Lazowska (U. Washington) "is widely viewed as the computer science research community's highest impact national leader and spokesperson." For the research area of Artificial Intelligence (AI), Eric Horvitz (Microsoft Research) has addressed "Rise of Concerns about AI: Reflections and Directions: research, leadership, and communication about AI futures". The ACM SIGAI Newsletter (the counterpart of our ACM SIGSOFT Notes) named as "AI Matters" includes its first-listed submission category "AI Impact": "Description of an AI system or method that has had a tangible impact on the world outside of the research community. These submissions are intended for dissemination to a general audience, and any technical content must be accessible to non-AI researchers."

In the research area of software engineering, there have been also various leading researchers with such strong outward thinking, playing important roles in the broad ecosystem. Although the research community has started paying attention to engaging and impacting the software industry or broadly practitioner community, the research community shall also put more eyesight on impact on and perception by other research communities in the computing community along with the broad society such as the industry and government.

Below I list some example activities towards such outward thinking for researchers in the research community to consider:
Please let me know if you have additional ideas for such outward thinking by sharing your suggestions here or submitting your writing to be considered for dissemination in the History and Impact column of the ACM SIGSOFT Notes!

Sunday, July 3, 2016

From Knowledge Economy to Maker/Innovation Economy: Towards Student Education and Training

I recently watched an online talk on "More Innovation Through Education" given by Richard Miller (President of Olin College). Among many great things mentioned in his talk (e.g., the education-program improvement at the College of Engineering at Illinois), I especially resonated with what he presented (during 6'40''-12'03'') in one of his slides, whose screen snapshot was captured as below:

Although Richard Miller's talk seems to focus on undergrad engineering education, my discussion below centers around educating and training graduate students especially PhD students in engineering based on the points that he made on the above slide.

The traditional education focuses on the Knowledge Economy: teaching students about knowledge, making them "knowledgeable". With technologies such as Internet, Google, and Bing at hand these days, being "knowledgeable" may not be as critical as in the ancient days.

The Maker Economy is about putting What you Know into What you can Do (in 2014, the White House started the movement of "Nation of Makers"). It is related to what I often tell students: "Get Things Done". In these settings, students are given an (often well-defined) problem/requirement (e.g., a programming task or data-analysis task), and need to solve the given problem (desirably in a timely fashion). In graduate-research settings, students are often encouraged to leverage whatever attainable resources to get things done (some of these ways of leveraging resources may not be common in settings of undergrad-course assignment): reusing/adapting open source code, building upon existing infrastructures, searching at Google/Bing or Stack Overflow, getting help from and collaborating with peer students or the advisor, etc. Note that conducting a task in such settings is different from conducting a programming task in a solo homework assignment in a course where students typically need to independently write their code for the task, not allowed to reuse/adapt code from the Internet, etc. 

As a concrete example, in graduate-research settings, graduate students (software engineers in industry too) may be given a programming task such as implementing a new feature upon an existing big code base. Many students may tend to take a relatively long time to understand the big code base, focusing on improving what they Know, without sufficiently focusing on what they need to get Done. Tips to Developers Starting on Large Applications include (1) don't try to understand the whole application, (2) focus on delivering immediate value, (3) important skills required to maintain large applications, (4) tools to find what to change and to find the impact of a change, (5) two caveats to the preceding tips: do not compromise on code quality and do not stop making an effort to understand the architecture. I myself practiced these tips in my past effective and efficient development efforts for tool features, i.e., Get Things Done Efficiently

The Innovation Economy is about what you can Conceive, new products, new markets, new ideas, ... Instead of being given a well-defined problem/requirement, students need to come up with (1) what they would like to tackle, either narrowing down to a target problem when given no (even vague) problem to start with, or concretizing a given vague problem to a specific, concrete one; and (2) how they could tackle the target problem with new ideas.

In the past, I summarized five critical research skills for PhD researchers/students in my talk on "PhD-Program Preparation for Successful Post-PhD Career" and below are my mapping of these skills to the Maker Economy and Innovation Economy.
  • Assessment skill. (Innovation Economy
  • Vision skill. (Innovation Economy)
  • Design skill. (Maker Economy & Innovation Economy)
  • Execution skill. (Maker Economy)
  • Communication skill. (Maker Economy & Innovation Economy)
By the way, mentioned in Richard Miller's online talk (at the time of 7'20''), the Nobel-laureate economist James J. Heckman found that success can be better predicted by grit (a combination of perseverance and passion, about attitude, behavior, and motivation), much better than knowledge (how much you know). Angela Lee Duckworth's 6-min TED talk on "Grit: The power of passion and perseverance" provides a nice quick overview of grit. There are also ideas on training grit, such as 16 Learning Strategies To Promote Grit And Delayed Gratification In Students.