Wednesday, May 30, 2018
Sunday, May 27, 2018
An Important Gap in Software Development Process: How to improve what already exists
Current Focus of most Processes is on getting things done (i.e. productivity) and not on encouraging/generating/collecting/discussing Ideas (i.e. innovation?).
Below post is on one of the problematic side-effects of such a focus, and a trivially simple, but powerful solution to deal with that problem.
In Software Development, when Tasks are created in Project Management tools like Jira, they are usually:
A Big Gap
Above categories miss one area - improving what already exists & works
Example:
How do we improve what already exists and works?
I have realized that when a team identifies a problem and discusses it, it generally tends to make a good decision about the solution.
This simple idea/tool can help with the following:
Why can't the person who has a Suggestion, just go and talk to the Product Owner/PM, OR discuss the idea in one of the meetings?
The reason why Discussing-with-PM-or-in-Meetings will not work is -
I am not sure about this. My current opinion is -
Alternative Implementation
UserVoice is a widely used tool whose purpose is to collect ideas like I have discussed above.
Below post is on one of the problematic side-effects of such a focus, and a trivially simple, but powerful solution to deal with that problem.
In Software Development, when Tasks are created in Project Management tools like Jira, they are usually:
- Bugs to fix
- existing stuff is not working as intended
- Feature Improvement
- client wants to make changes/additions to the existing stuff
- OR client asks for a brand new feature
Bugs & Feature Improvements have one thing in common - the Point of Initiation of Work is a very clear business need. If all work is initiated like the above, we will end up with one Big Gap in our product development process - existing stuff never improves.
A Big Gap
Above categories miss one area - improving what already exists & works
Example:
- Let's take one webpage in our web-application where things are working as intended (i.e. no complaints/change-requests have come from clients/users)
- But there are aspects about it, like UI/Performance/UX, that different members of the team/company feel, can be improved.
- Currently there is no way for anyone to initiate work on that webpage
- and that is the Big Gap i am referring to - there is no way to initiate work on existing stuff
- And this Big Gap continues to exist indefinitely, because there are always going to be tasks with higher priorities that need attending to, than discussing, for example, about some minor UX/UI improvement on a webpage that is seemingly working fine.
How do we improve what already exists and works?
I have realized that when a team identifies a problem and discusses it, it generally tends to make a good decision about the solution.
Simply put, if a topic is brought up on the agenda, it gets addressed/resolved.
The converse is unfortunately true as well - if an issue does not reach the agenda, it never gets addressed/resolved.
So we need to somehow bring tasks related to 'improving Existing Stuff' onto the Agenda.
How do such tasks come into existence, so that they can be added to the Agenda?
We need ideas, in fact a lot of ideas, big and small, to improve what already exists.
In order to do this, in my opinion, we need to create/implement a new Category of tasks, perhaps called Suggestion For Discussion, or Discussion Task, or something like that.
So we need to somehow bring tasks related to 'improving Existing Stuff' onto the Agenda.
How do such tasks come into existence, so that they can be added to the Agenda?
We need ideas, in fact a lot of ideas, big and small, to improve what already exists.
In order to do this, in my opinion, we need to create/implement a new Category of tasks, perhaps called Suggestion For Discussion, or Discussion Task, or something like that.
- Creating a new category should be a trivial thing to do in tools like Jira
What is a 'Suggestion For Discussion / Discussion Task' ?
- if ANYONE in the team/company has a suggestion/idea, they create a Suggestion For Discussion /Discussion Task in the Project Management Tool (e.g. Jira)
Who is it assigned to?
- this is assigned to whoever is in charge of that specific area (a Project Manager or Product Owner, etc)
What is the Goal of such a task?
- The goal of such a task is to make sure a Discussion happens around the Suggestion given
How is such a task completed?
- the team can meet periodically (once a week, biweekly, monthly etc) to discuss such Suggestions
- the Agenda for such a meeting could be the set of Suggestions that PM/Product Owner has received recently. This is a very important aspect because
- having a very clear list of things to talk about is very different from adhoc-brainstorming-sessions
- ensures a sustainable way for doing the meetings
- People often stop going to meetings that are haphazard, and suddenly such meetings stop happening
- a decision is made to accept a Suggestion, not-accept a Suggestion, or to revisit the Suggestion later on, and this is how such a task is 'resolved'.
How will these tasks help in improving what already exists?
This simple idea/tool can help with the following:
- Provide a path in the process: This will give an official path for an idea/suggestion, however small or big, to reach fruition
- This is the main contribution of this idea/tool.
- Everyone thinks: Instead of Devs only writing code or QA only spotting issues, everyone will get a chance to think about how to contribute via Ideas/Suggestions as well
- Prevent Ideas from being forgotten: A person who has thought of an idea can create a Suggestions-for-Discussion task at that moment - this will prevent ideas from being lost
- Short-term effect: immediatley get to the job of improving existing stuff
- Long-term effect: foster a culture of innovation
- Maximize potential of existing team & Reduce burden on Superstars: Innovation/Ideas/Suggestions will not depend on just a few key individuals in the company, but will be the domain/responsibility of everyone. Superstars (i.e extremely talented individuals) like to work in stimulating & engaging environments where everyone is contributing, otherwise they also get fatigued.
- In cases where teams do not have Superstars, they can at least perform to the best of their collective potential.
- No Barrier for Contributing: New Employees Or Junior Team-members Or even Experienced team-members who are Not so Social, i.e anyone, can contribute ideas/suggestions without depending on what kind of personality they have OR what kind of personal rapport they have with a PM/Product Owner.
- Improved job satisfaction when ideas/suggestions are accepted
Why can't the person who has a Suggestion, just go and talk to the Product Owner/PM, OR discuss the idea in one of the meetings?
The reason why Discussing-with-PM-or-in-Meetings will not work is -
- Things that are not urgent are better handled in an Asynchronous manner
- e.g. we stick a PostIt note or add a ToDo item somewhere to remember to do stuff that we have to do later.
- The very reason we use ToDo lists or PostIt notes, or even Project Management tools like Jira is because we cannot do all the things that need to be done at the same time.
- By this argument, Ideas/Suggestions for Discussion need to be treated in the same way.
- People might not feel comfortable suggesting minor improvements in a meeting-setting
- Consider the scenario of a Dev/QA who has thought of, not major improvements, but just a couple of minor UX improvements
- They might not feel comfortable speaking about such minor suggestions in meetings
Limit this idea to Existing Stuff ?
This simple tool/technique is actually about gathering ideas from everyone, and hence can be used to gather ideas about Existing Stuff as well as for New Features.
So the question is - is it better to limit this tool to gathering ideas about Existing Stuff?
I am not sure about this. My current opinion is -
- Initially i.e. until everyone gets used to it, it is probably better to limit this tool only to suggestions related to Existing Stuff
- This is needed because, it is important for everyone to understand that it is OK (and in fact, desirable) to contribute minor changes as well.
- If brand new Feature Improvements also are allowed to use this tool - this tool might get hijacked by the new & shiny stuff (and people might not feel comfortable contributing 'small' ideas).
- Perhaps we could have 2 separate categories, one for Existing Stuff and one for New Stuff.
Alternative Implementation
However UserVoice is being used to collect feedback mostly from Clients/Users and not from Developers/QA/PMs.
Perhaps Devs/QA/PMs can use something like UserVoice for the exact same purpose too.
However I feel it is easier & better to treat Discussion of Suggestions/Ideas as Tasks and hence use the same Project Management tool that is used for Bugs and Feature Improvements.
Final words
Current Focus of most Processes is on getting things done (i.e. productivity) and not on encouraging/generating/collecting/discussing Ideas (i.e. innovation?).
Suggestions/Ideas, however minor, are very important and hence need to be handled in the same process that is used for Bugs/Feature Improvements.
Suggestions/Ideas, however minor, are very important and hence need to be handled in the same process that is used for Bugs/Feature Improvements.
Monday, May 21, 2018
Sunday, May 6, 2018
Thursday, May 3, 2018
Rails & Electron, nativefier
Rails app inside Electron -
https://stackoverflow.com/questions/31967854/how-to-properly-run-a-rails-app-inside-electron
nativefier -
https://github.com/jiahaog/nativefier
Electron - Mac App Store Submission Guide
https://github.com/electron/electron/blob/master/docs/tutorial/mac-app-store-submission-guide.md
Electron - Signing a Mac Application (contains other useful links related to Electron)
https://pracucci.com/atom-electron-signing-mac-app.html
Detect if running in Electron
https://github.com/electron/electron/issues/2288
https://stackoverflow.com/questions/31967854/how-to-properly-run-a-rails-app-inside-electron
nativefier -
https://github.com/jiahaog/nativefier
Electron - Mac App Store Submission Guide
https://github.com/electron/electron/blob/master/docs/tutorial/mac-app-store-submission-guide.md
Electron - Signing a Mac Application (contains other useful links related to Electron)
https://pracucci.com/atom-electron-signing-mac-app.html
Detect if running in Electron
https://github.com/electron/electron/issues/2288
Subscribe to:
Posts (Atom)