I was asked several questions by a journalist about open source and the public sector. I’m answering them here in sequence. This is the first of four blog posts and the first question was: Should the public sector use open source software?
The public sector and public governments should use the software that lets them provide the desired services best, long-term. How much open source software this involves is secondary, in my opinion.
That said: Like any industry, the public sector already uses substantial amounts of open source software by way of open source components built into commercial proprietary product. Estimates of the percentage of open source code in commercial products and services go as high as 80-90% of the total code. Open source is everywhere, including in Microsoft Windows and Office.
Continue reading “Should The Public Sector Use Open Source Software?”
I often get approached by software vendors with the suggestion that I teach a course using one of their product tutorials. There are plenty of open source databases, operating systems, and cloud computing solutions who want to make it into my curriculum. Of course, vendors don’t always call their product tutorials by that name, but use labels like college-level courses or the like, but this doesn’t change the content: They are still product tutorials. I can’t teach those and no self-respecting professor will ever do this. Let me explain.
Continue reading “What Software Vendors Don’t Seem to Understand About University Teaching”
Abstract: The aim of this project outline is to describe how universities and other higher education institutions (HEIs) can work with businesses to conduct teaching projects for and with students. Both parties stand to benefit; the projects generate recruitment, outsourcing and innovation (ROI) for businesses and provide HEIs with new partners for cooperation, a source of funds, and a boost to the attractiveness of their teaching.
Keywords: Industry university collaboration, research-to-industry transfer, business model, teaching
Reference: Dirk Riehle. “The Uni1 Project (2016).” Friedrich-Alexander-Universität Erlangen-Nürnberg, Dept. of Computer Science, Technical Report, CS-2018-05. Erlangen, Germany, 2018.
The report is available as a local PDF file and on FAU’s OPUS server.
Please note that this report is a translation to English (by FAU’s Sprachendienst) of the prior report Das Uni1 Projektkonzept (2016).
As mentioned in a previous blog post, my Ph.D. students are often experienced software developers who take on the role of a chief programmer in the development of the software system supporting their research. In this work, at any point in time, each of my Ph.D. students is typically supported by 2-7 Bachelor and Master students who contribute to the system under development. Taking a long-term perspective, my Ph.D. students develop quality software rather than throw-away prototypes.
The chief programmer idea is key to making such work successful. While I usually conceive and direct the research, the size of my group has led me to let my Ph.D. students take care of any actual development themselves. (Usually…) In this role, as the chief programmer, they become the central point of coordination and integration of engineering work. In academia, this is a necessity, because an engineering dissertation is typically a multi-year project, while final thesis students, the main source of junior programmers supporting the chief engineer, are only around for six months. Thus, the chief programmer becomes the central technical hub and provider of sustained knowledge of the system under development.
Continue reading “How my Ph.D. Students Work With Supporting Students (Hint: Not Scrum)”
According to Wikipedia, “a chief programmer team is a programming team organized in a star around a “chief” role, granted to the software engineer who understands the system’s intentions the best. Other team members get supporting roles.” Amusingly, this set-up is alive and well in academia, and for good reason. At least my research group is using it and it works well for us.
Continue reading “Chief Programmer Teams Alive And Well in Academia”
As noted previously, Scrum uses the term product to mean artifact. This is fine, as long as the user of Scrum is a software vendor, developing a product for a market. It is confusing, however, if the user is a consulting firm, performing a custom project for a client. If you are a consulting firm, you are not delivering a product, and every time you hear product, you need to think artifact.
The confusion is worst when we talk about a product vision. As always, there are many competing definitions and confused ones at that, but we can safely assume that a product vision is at least a particular type of vision. About a vision, by definition, we know that it is time-less. It describes an abstract future state that we want to achieve, but never actually can reach. As such, a vision serves as a guiding north star for the decisions we make about on-going work. IBM’s vision is (shortened) “client success”, SAP’s is “improved economy”, etc. Any number of management books expound on what a vision is so you can read more there.
Continue reading “Scrum’s Product Vision vs. Project Mission”
In a previous blog post I noted how the terms project and product are being confused in open source. However, it is agile methods, specifically Scrum, where it gets really bad. To recap: A project is a human undertaking to create an artifact. A project, by definition, has a start date and an end date. A product, in contrast, is an artifact (not an undertaking) that is born but typically has no planned end date. Most vendors, selling products to a market, hope they can do this forever.
Continue reading “How Project vs. Product Confuses Agile Methods Terminology”
The terms project and product are used with continued confusion. Both open source and agile methods are particularly bad offenders, leading people astray. Adapted straight from the textbooks:
- A project is a human undertaking with the goal of creating an artifact. Its life-cycle is determined by a start date and an end date.
- A product is a human-made artifact for a market of customers with an open-ended llfe-cycle. It is born with no end date in sight.
Not always, but typically, a project is used to create a custom artifact, while a product is (by definition) made for a market, that is, many different customers.
Continue reading “How Project vs. Product Confuses Open Source Terminology”
I was recently asked why I argue against company-internal marketplaces for software components yet emphasize the need for pricing components that cross company boundaries within the same holding company (also known as transfer pricing). The answer is simple: Setting up an internal marketplace is a managerial choice and pricing the movement of code (IP) across company boundaries is a taxable event that you need to deal with: It is not a choice.
Let me take it in steps.
Continue reading “Internal Component Marketplaces vs. Transfer Pricing of Inner Source”