My work involves a lot of abstract and obscure constructs. We could say I am a theory guy. However, I have an extense background in programming and general software development, which I like to cultivate. I write code almost every day.
I have found that the best way to go deeper in many of my abstract and highly theoretical endeavours is to build a software tool that implements (part of) the idea. For example: some time ago I envisaged a new approach to metamodelling for software development methodologies. I spent some months drawing diagrams, visualising ideas and writing notes. Eventually I decided to write a tool, so I fired up Visual Studio and, in a few weeks, I had written a nifty toolset that implements the core ideas behind my metamodelling approach. The amount of things I learned and discovered as a result of implementing these tools cannot be overstated. I have observed this many times: building tools is extremely useful as a research method. I guess because you need to formalise everything in your head in order to write the code, so any assumption or hole is eventually detected.
You may agree or disagree with this. In any case, it poses two issues. The first one is that not many theoreticians are good at programming, and most programmers are not trained as theoreticians. So, useful as it is, my approach is hardly generalisable.
The second issue is that, traditionally, building tools in academy is a task for research students or interns; you know, any body can cut some code. I, the researcher, come up with the great idea, and then give it to any student so they “translate” it into a program. Evidently, I completely disagree with this. First, very few students can write a decent program. Second, you would be giving away the opportunity to learn a lot about your work. Third, I don’t think that the communication between the researcher and the student is as good as to make this work.
Do you have any experience in this area? I would love to hear from you!