Categories
Remote Work

The Importance of Remote Work and its Potential as an Equalizer

In the grand scheme of things, remote work is still a relatively new phenomenon. This is easy to forget when it’s part of one’s everyday life — which is why it’s all the more important to remind oneself that nobody has it figured out perfectly yet.

People and organizations are still experimenting — succeeding, yes. But also: struggling. Failing. We’re all exploring and negotiating the future of work.

Categories
Remote Work Theory

Computer-Supported Cooperative Work: A Useful Lens For Looking At Developer Tools

Software developers use computers not only for writing programs — they also use them to communicate and collaborate with one another. Software development is very much a social activity: collaboration and communication activities can have a powerful impact on the success of software projects.

Computer-support for these activities is not restricted to remote companies or distributed projects — even co-located teams use software that supports group communication and collaboration in their daily work.

Categories
Popular Theory

Self-determination Theory: Understanding Human Motivation for Fun and Profit

When you build software, sooner or later you’ll want to think about human behavior — most notably about what motivates humans.

I don’t mean Skinner boxes, points and ladders, variable reward schedules and the like as you might find them in “free to play but we have an in-game currency” games or in casinos.

Instead, I want you to think about human motivation in a sustainable manner that is also good for your users. Making them addicts isn’t the way.

Categories
Popular Theory

On the Diffusion of Innovations: How New Ideas Spread

If you build software products, chances are you’ve worried about adoption before.

Will anyone use what I’ve built? How can I get more people to use it? And why do people leave after a few days?

Categories
Remote Work

Working Together Through Computers: 6 Recommendations

Developers use many, many tools to collaborate. Those tools solve problems, but also create new challenges: distractions impede productivity, developers struggle to keep up with everything, or partially adopted tools — those are just a few examples. But how can we tackle those problems?

Categories
Research

Fragmented and Overloaded: Challenges in Developer Collaboration

Software developers use many tools to support their work. They coordinate with their teams on code hosting sites, interface with non-developers in project management apps, use microblogs to network, and learn through Q&A sites and podcasts.

They do derive value from those tools — but what problems and challenges do they have to cope with in return?

Categories
Personal

New Habits: Nine Tactics That Worked For Me

Studies have shown that about 30% to 50% of what we do in a day can be called habitual. However, adopting new habits is hard: at least I have always struggled with making things stick. But now I think I’ve found something that works for me.

Categories
Research

More Than Just Coding: A Study on Supportive Channels and Activities in Software Development

Software developers use more and more tools in their work. Some are directly aimed at creating software, such as IDEs or editors, but many tools play more supportive roles. They help developers communicate, collaborate, and coordinate with others, find new work, or keep up with new technologies.

All these tools and channels are built by people who are software developers themselves.

Categories
Research

Open Source Collaboration Practices in Commercial Projects

Lots of research in software engineering is using publicly-available data from GitHub nowadays. But do findings from such studies translate to closed-sourced development projects?

Categories
Personal

From Playing The Piano to Algorithms You Can Trust

A few days ago, my piano teacher recommended a book to me: Play It Again: An Amateur Against The Impossible by Alan Rusbridger, formerly editor-in-chief of The Guardian. I devoured it within three days.

Categories
Research

Nudging Novices: Five Persuasive Patterns

Back when I was at the University of Hannover working on my PhD, I was also involved in teaching. One of the most memorable experiences was organizing and managing the “software project” course four years in a row.

Every year, multiple teams of five students each went through a waterfall process to create software for a customer. This course wasn’t about programming, really: it was about working on a team, communication, and good practices. That’s what made it so memorable.

Categories
Popular Research

How Software Developers Use Twitter

Many software developers use Twitter in their work, but how and why exactly do they use it? Why do some developers choose not to use Twitter, and what — if anything — do they use instead? We conducted a qualitative study to investigate these questions in depth.

Categories
Personal

ICSE 2013: Four Days of San Francisco

From May 22 till May 25, I attended ICSE 2013 — the 35th International Conference on Software Engineering — in San Francisco. Apart from learning about new research and connecting with colleagues, I interviewed local practitioners, hugged the Octocat, and was ON A BOAT. This blog post provides some (non-comprehensive) details for these four days I spent in San Francisco.

Categories
Personal

Dissertation Published

On February 11 2013, I defended my PhD thesis with the title “Improving the Adoption of Software Engineering Practices Through Persuasive Interventions”. Thanks a lot to Felienne who live-blogged my defense talk and the questioning by the committee.

Due to German regulations, having defended my thesis merely meant that I was no longer obligated to correct someone else calling me a doctor. However, I was not allowed to call myself that until I had published it — again, adhering to some regulations. Due to the power of self-publishing / print-on-demand (I used lulu.com), I obtained several copies of the book and my certificate only 8 days after the defense.

Categories
Research

On Testing Culture in GitHub Projects

Previous research suggests that the publicity on GitHub that is making developers’ actions and interactions more visible might have an effect on how software development practices are communicated and how they diffuse in projects.

My colleagues (Raphael Pham, Olga Liskin, Fernando Figueira Filho, Kurt Schneider) and I wondered: which influence does this have on testing practices? Does this create new challenges, and if so, how do developers cope with them? Which strategies do members of GitHub use to create a beneficial testing culture in their projects? To investigate this, we conducted interviews and questionnaires with diverse users of GitHub.

Categories
Research

Mutual Assessment in the Social Programmer Ecosystem

Developers use social media sites to communicate, collaborate, connect with each other, and even for competition. These sites and their users create a social programmer ecosystem with dynamics that are the subject of ongoing research.

Recently, websites have appeared that create profiles from developers’ content and activities on other sites — they are developer profile aggregators. Examples are Masterbranch and Coderwall. Among other mechanisms, both services award achievement badges to developers for specific accomplishments — such as being the most active committer in a project, or having a project forked by others.

With colleagues from Brazil and Canada, we studied users of these sites, providing us with a window into the social programmer ecosystem.

Categories
Personal

Backbone.js and AngularJS at HannoverJS

HannoverJS is a local JavaScript user group that I’ve been attending. We meet once a month in rooms provided by a local school. Founded in August 2011 by Christoph Burgdorf, we now usually have around 10 to 15 attendees and two presentations each month.

Categories
Practical

A Collection of Notable Git Resources

Whenever a student or colleague asks me about getting started with git, I look up a set of resources I found quite enlightening and / or useful and give them a bunch of links, often with a hand-crafted description of each. To repeat myself less often in the future, I’m now using the power of a blog post that consolidates that material.

Categories
Practical

Have git show what changed after pulling

When pulling in the latest changes from the Cappuccino repository, I often ask myself what changed, that is, in which places I can expect improvements or differences. I found it therefore favorable to have git show me just that. After some searching, it turns out this is quite easy.