8

As a software developer just starting out in research (working for a lab) I have this idea of a software application which is meant to target a specific need: specifically to help users query data using specific and novel methodologies (navigation languages and autocomplete methods).

Anyway, I know that ultimately I want to do science and not engineering. By that I mean that ultimately I don't want to build a tool (although it could help prove my idea) but that I want to investigate (that's really what research is about isn't it?) about how the navigational and autocomplete methodologies are important for querying data (for example)

So I'm a bit troubled wondering how I can transform this application idea into a more scientific research project. Should I look at the novel parts of the application (such as the autocomplete functionalities) and investigate how that might make querying better for users? Is that even research?

I guess overall I'm puzzled on how to make the idea of my software application stand on its own. How do I make my software idea contribute to the current body of human knowledge? Does software even count as knowledge? I guess I'm trying to convert the idea of my software application into a piece of knowledge. Any help/clarification?

8

Your software idea may be able to become a piece of research if you can come up with a few things:

  • Research question. Ask a question relating to your software idea - for example, "How can we do X?" "What is a better design for X?" etc. Check the literature to see what has been said about this question (and related questions) by others.
  • Research result. What is the actual, novel contribution of your work? Is it a new technique that hasn't been done before? A rule of thumb for designing certain kinds of applications? A much better way to do a certain kind of task (for some reasonable definition of "better")?
  • Validation of research results. What kind of convincing evidence do you have that your result is sound? Depending on the type of result you claim, your evidence may be in the form of performance benchmarks of your technique relative to state of the art, user studies from users of your application, or something else entirely.

The best way to get a better understanding of what constitutes a research question, research result, or evidence, is to read a lot of papers in your field of interest.

  • 1
    For papers in the OP field of interest, it would seem SIGGRAPH and CHI are good starting places. – user-2147482637 Nov 11 '14 at 1:43
5

Your desire to do research is commendable. But although you are a seasoned engineer, you are still an undergraduate at research and you need to slow your pace. Although you have a headstart in relation to your peers, you still need to develop some research maturity which takes time or a mentor who might give you a push to the right direction.

I was also an programmer first and went into researcher later, so I understand where you are coming from. But like me at first, you do not really "get" it. Autocomplete is not research. Period. A tool that shows a nice graph of semantic data is not research. Period. It is a DEMO and you can submit it to a demo track of a conference or a smaller workshop and that is it. But even then, unless the tool does something unusual it will get rejected. Unless you want to built the new Virtuoso or the new Neo4j then your tool is not research. Period. And developing a GUI tool is something that I would not easily recommend, because making a GUI tool that is good enough for showing to others, takes a lot of time. That is why developing such GUI tools, is usually reserved for MSc thesis projects and students like you and is not something like a PHD student undertakes on his own. Of course there are always exceptions, but this is what I have seen.

On the other hand, developing a new, better index for autocomplete than e.g. a trie is research. But even then, building the autocomplete module is not proof. You need experiments, related work section, literature review, proofs, complexity analysis, knowledge about data structures, which you may have but probably you have not.

Conclusively, you are now a good programmer. But that does not automatically make you a good CS student. You need to build a theoretical background to formalize research questions. And that I am afraid requires time and/or guidance.

  • Thanks. Do you know me by the way? I think you're spot on... lack of theoretical CS background. – Luca Matteis Nov 10 '14 at 18:36
2

Your first step should be an extremely thorough search of the scientific literature, in order to explore what's already been done in the area covered by your application - that is, assess the originality of "the idea" and its theoretical underpinning.

2

For software to "contribute to human knowledge", it needs to advance human knowledge -- a new algorithm, a new human interaction technique, a new approach to coding (often embodied in a new language tuned for that purpose, for clarity, though almost all such can be implemented in older languages with a bit of work)...

If you have a really new approach to performing or using autocomplete, that probably counts. If you're just using autocomplete in your program in a place where it's obvious to an experienced practitioner that autocomplete would be appropriate, it probably doesn't. You could do some legitimate research on measuring exactly how much difference which kinds of autocomplete help which users -- but that's human factors engineering, not software engineering per se.

Programming is just a tool. If you use it to conduct research, you're doing research. If you aren't, you aren't. Writing may be a good analogy -- you need to be able to write well to communicate, but "writing well" is usually not the creative act unless you're someone like e. e. cummings who can create a new way to approach writing itself. Deciding what to communicate and how, or finding ways to measure the advantages and disadvantages of varying approaches to communication, is usually where human knowledge is advanced.

  • Thanks. So the idea of autocompletion is obviously well established and not new. However, I want to apply it to datasets that exist on the Web (not locally). This is the novelty of it. Would that still qualify as "contributing to human knowledge". The software would then simply implement the idea. – Luca Matteis Nov 10 '14 at 11:33
  • As an example, here is a tool that was developed by Tim Berners-Lee to prove a concept. swui.semanticweb.org/swui06/papers/Berners-Lee/Berners-Lee.pdf However, what is truly the contribution to human knowledge that the tool shows? It's still a bit blurry to me. – Luca Matteis Nov 10 '14 at 11:47
  • 1
    Not everything TB-L does/publishes can be classified as "research". (Ditto for most mortals.) ... Here the contribution to knowledge would be the concept; the tool, as you say, exists in order to illustrate the concept and provide a starting point for exploring whether it's worth pursuing. – keshlam Nov 10 '14 at 15:37
  • Interesting, then perhaps this tool can also showcase the concept. – Luca Matteis Nov 10 '14 at 16:31
  • 1
    (The on-screen cursor was a new invention once; IBM had the patent on it. That doesn't make every program that uses it part of research on that concept.) – keshlam Nov 10 '14 at 16:58
1

I would start with a quality blog post, with references to other approaches, justification of claims. If you can accomplish it, this piece of software might be a candidate for a paper.

In a journal paper you need to have something novel concrete to show, to support it with evidence and reference with other research. But it needs to be something concrete not "it is a great app, because I think so, my friends and it got 10k likes". More like "new algorithm allows to compute X with 7% less error...", "we introduce a new statistical model for classification of words based on Y..." or "75% user accomplish goal of Z with autocomplete vs 53 who...".

Software engineering and scientific research (which topic? algorithms, statistics, linguistics, psychology...) are different skills.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.