Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Know what the research questions are #3

Open
zzcgujl opened this issue Aug 1, 2016 · 4 comments
Open

Know what the research questions are #3

zzcgujl opened this issue Aug 1, 2016 · 4 comments

Comments

@zzcgujl
Copy link

zzcgujl commented Aug 1, 2016

The software is being developed for research purposes this means that the requirments are strongly linked to the research questions. You need to know what are the short term, mid term and long term research questions that this software will attempt to answer.

@gvwilson gvwilson self-assigned this Aug 3, 2016
@gvwilson gvwilson changed the title Research questions Know what the research questions are Aug 5, 2016
@gvwilson
Copy link
Contributor

gvwilson commented Aug 5, 2016

Agreed, but:

  1. How do you figure that out if you're not the PI (and possibly not an expert in the particular research domain)?
  2. How do you deal with the fact that "requirements" emerge as results come in? Or do we assume that this course is about building digital scientific instruments, i.e., we focus on construction of libraries and applications, rather than exploratory work?

@zzcgujl
Copy link
Author

zzcgujl commented Aug 7, 2016

The requirments specificiation for software is there to legally define the relationship between the developers and the consumers of their work who will pay the developers. Academic research is funded as projects where the funding is paid up front so the needs for requirements specification is not there. Many groups and people I know in research computing (I interviewed about this a few years ago) never bother with requirements spec because it is not useful. More generally I am assured where there are small groups of developers who have a long term relationship with the organisation they are paid by requirements do not work there either - commercial or academic. This way of working is exceptionally efficient. This is the basis of agile methodologies. I believe that research computing when done well follows a lean methodology i.e., the "requirements" emerge.

If you are someone who needs to figure out what is going on then you communicate with the others to find out. This is part of the getting to know the team step and it facilitates you to become part of a long term collaboration which I just mentioned as being important.

I would not recommend that someone who knows nothing about accounting writes accounting software - and I would really not recommend it to someone who is not interested in accounting. I am not sure why this person does not know about the particular research domain - a student should want to learn; a post doc applied for the post so should have an interest, a research software support expert picked the career because they like working in diverse research domains. If anyone else is being forced to write the software then you have recruitment and administrative problems.

@gvwilson
Copy link
Contributor

gvwilson commented Aug 7, 2016

I agree that agile is a better fit for small research projects because
of the emergent requirements - I've certainly never had anything that
looks like formal (contractually enforceable) requirements when working
in academia. Any good guides to agile requirement elicitation? "Ask
the PI" has a long history of not working out well.

@zzcgujl
Copy link
Author

zzcgujl commented Aug 8, 2016

I imagine that you may be getting caught in the idea that there is a ideal answer but when you think about any ideal answer the reality is not complex and it does not work. There is little recorded work on what the research computing method is - I read a great thing on it a few years ago I will see if I can dig it out.

Also I am not sure why the PI is so important to this discussion. One of our research councils is thinking of removing PIs and CoIs. The important think that you need to do when you are in a research software engineering team is have a team that is committed to a positive outcome, anyone who is committed to a positive outcome will spend time and help with a new member to the team. This could anyone in the team - students, researchers, the PI, CoI or people external the Dean or the head of school. You should aim to talk to whoever looks useful and is willing to help.

I think the best information on this will not be in the software engineering arena but in the management literature because those guys have really studied teams and how they work. Recently I worked in a team where towards the end of the project everything just seemed wrong. I used the management literature to analyse the team and the team meetings. It was through that I realized that the 2 members of the more extended team benefited from the projected failing and that they were buddying up to make the project less effective. Their careers have blossomed .

I think research computing is lean rather than agile. I used to think that lean and agile are the same thing but by talking to a number of freelancers I have come to realize that they are not. While some more established and better funded research computing teams may be more agile than lean I think most are lean. Some methodologies from agile can be used in research computing - coding dojos, paired programming sessions, hackathons for skill improvement and improving communication within the team but not the full methodology.

Lean is much more about having a good understanding of the market so that you can adapt quickly to changes in the market or take advantage of gaps that you notice. It is also about making sure that each bit of effort that each person contributes can be used in as many ways as possible to achieve your (and the teams) long term success. I think it is the lean nature of research computing that makes the development of tests and documentation relatively un-important. You need to have an established user base to make either really worth while and developing things that you do not need immediately just does not work in the lean method.

@gvwilson gvwilson removed their assignment Apr 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants