Usability issues in software development tools
Dennis Mancl
Nov. 8, 2018
(This talk was part of a panel discussion at a talk sponsored by User Experience Professional Association - UXPA-NJ.)
Usability – software development tools
There are many complex tools to support software development. What are some of the issues for usability?
- Coding - Integrated Development Environments (IDEs)
- Unit testing
- Code inspection
- Source code management
- Automated build and test
- Project management
What kinds of tasks are involved?
Code creation, editing, reviews, testing, code management...
- Create code in a series of small code files
- Compile and test the code in each file
- Multiple team members perform “code reviews”
- Use a source code management system to store current files
- Multiple times per day – automatically build and test the system
IDEs – Integrated Development Environments
Most coding work is “editing files”
- Coding can still be done with a simple text editor
- Or you can use an IDE – Integrated Development Environment
- Microsoft Visual Studio (Visual Basic, C++, C#)
- Eclipse (Java, C++, Python)
- many others... (Xcode, NetBeans, IntelliJ)
An IDE is big and ugly – like running a nuclear power plant
many windows, many buttons
- it’s OK... software developers are managing a lot of things
Why IDEs? Possible problems.
syntax directed editor – the main editing functions in an IDE provide automated help with formatting, finding the right function to be called
- it reduces some coding errors: finds some problems before compilation
Many other “one person” coding tasks
- compile one file
- compile an entire module (multiple related files)
- run a program (in “single step” mode), inspect memory
- write unit test code
- run unit tests (if they pass, show a “green bar”)
As a software developer, you are the pilot of a “one-man scout ship” – not so good at interworking with others
Why IDEs? Possible problems.
- IDEs are like text editors, each person has a favorite
- Syntax directed editing is good
- saves effort, code is easier to read
- Syntax directed editing is bad
- good formatting – can disguise code logic errors
- Unit testing is a good habit, and the tools provide great support
- But you don’t need a fancy IDE – it is OK to avoid complex tools
Code review tools
- good to have other people do an “inspection” on your code
- the old-fashioned way is to have a face-to-face code review meeting
- the new way is to use a code review tool
- examples: Collaborator, Crucible, Gerrit
- code reviewers enter comments into a web-based interface
- code developers use the comments to make improvements
- usability issue: most code reviews are for “changes to existing files” (more than for “new files”)
Notes:
- Reviewing code changes is tricky
- It is difficult to see the “big picture” within the review tools
- Some reviewers do not provide good written feedback... some reviews are better face-to-face
Source code management tools
- even in a small project, it is good to keep the latest source code in a management tool
- absolutely critical for large projects and for agile projects
- most popular tools: CVS, Subversion, Git
- many open source projects use GitHub (web-based code repository)
Notes:
- Tools are great for code and documents... everyone should learn about Git and GitHub
Automated build and continuous integration tools
- every agile project wants to build and test as often as possible (daily, hourly)
- it is a good way to keep multiple developers in sync, find and correct errors quickly
- CI tools run on a server machine
- “check out” the latest version of code and tests
- build everything and run a set of acceptance tests
- keep an on-line report of the latest build status, send notifications about failures
- most popular tools: CruiseControl, Hudson, Jenkins
Project management tools
A constantly-evolving set of work tasks
- Coding: create new code, modify existing code
- Requirements and design: create and modify documents
- Test plans, user documentation, status reports
Project tools try to address the needs of managers and team members...
- The best “agile” tools focus on team members – lightweight, simple views of low-level tasks (Product Backlog or Kanban Board)
- Popular tools: Jira, VersionOne, Bugzilla, ...
Notes:
- These tools have very good “human factors” – using color to show success or failure
- Reports on build history – “sun” for always passing, “storm clouds” for frequent failures
Conclusion
- There are a number of “domains” for tools that support software development
- Some tool choices are based on personal preferences
- code development, unit testing
- Tools can help support team activities
- code reviews, continuous integration, project management
- Don’t go overboard...

This work is licensed under a Creative Commons Attribution 4.0 International License.
Last modified: Nov. 8, 2018
Dennis Mancl - http://manclswx.com