I'm a biologist and mathematician by training, my job is to come up with algorithmical and conceptual (sometimes UX) solutions for problems in a laboratory environment (typically optimization stuff, sometimes data analysis) to help our project be successful. I've been with the company for about 2 years, I like my job because I get to do a lot of different things.
The set of problems:
a) Since I'm the one with most expertise on the customers' business, this is not the only thing I do, I also do a lot of project management work (Requirements engineering, writing other specs, communication with customer, ...) ==> I can rarely spend more than a couple of hours on one thing.
b) I know R, Matlab and very little C (2 university courses). My company works with C#. So I can neither easily test code nor write it myself - it has to go through a developer. ==> This causes misunderstandings which cost time.
c) It's neither an option to go project management only nor to go 100% developer because my other skills and knowledge are very useful elsewhere. Also, I'm currently the only "real" maths guy at the company.
Current situation: I solve the problem and write a prototype in R. Someone else does the implementation in C#.
Good: I can come a with a testable solution quickly.
Bad: Devs don't like documenting or working from too detailed specs and have a hard time judging if it works as expected, I can't understand code, code gets written in a way that makes it hard to adapt to new problems. ==> lots of time lost and unhappy me and dev.
How can I make the situation better for everyone? My ideas:
find a way to convince devs that having well documented code and test access for me is not because I want to control every little step but that it's a way of working together.
learn C# so I can write specific parts of the software myself (takes a loooong time I guess)
learn C# just well enough so I can understand code and spot misunderstandings early (might not efficient)
learn something like Python that is closer to what I know (faster), connect it to rest of software and deploy it alongside C# parts. If it's performance critical (very rare), hand over those parts to real dev.
pray that we're selling cloud solutions soon and keep doing everything in R
[your idea here]
My question to you: what do you think is best to alleviate the situation? I really want to stay with the company and want us to be successful. I can count on some support from the boss.