0

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.

  • Comments are not for extended discussion; this conversation has been moved to chat. – Jane S Mar 25 '17 at 4:22
3

I would suggest you work with the developers manager to align your needs with the skills the developers currently have.

Most likely, the developers will probably not want to move from C#, to R, or Python, or to BDD and frankly don't need to. Developers who are familiar and proficient with a particular stack will not typically want to switch to another.

I think your needs can be met by the people you have, but you will have to build a relationship with the developers and their manager to accomplish this.

In summary, I don't think this is really a technical issue at all, but rather a lack of teamwork and or communication.

  • 1
    downvote. you have no idea what the developers want to do at all. relationships need a structure - things need to work in a process, you cannot just say "have a relationship", there has to be a structure of communication. – bharal Mar 24 '17 at 14:12
  • 1
    @bharal - it's difficult to structure communication when you have none or very little. I'd prefer someone initially approach me with an offer for an open conversation. – user8365 Mar 24 '17 at 17:29
0

This is a perfect - honestly, just perfect - time to use BDD.

You know what you want the code to do. You can write code - use Cucumber. Right now this is the link

Have a look at it - effectively it lets you define the steps for a successful test, and then the developer goes and writes code that hooks into this definition.

You can then rest assured that whatever the devs have come up with works. Its also exactly what Cucumber purports to do (only it never does, because business people don't write code nor use things with an ugly UI - and who can blame them?)

I don't know if a cucumber port exists for "R", that would be neat you could have the one cucumber spec file and then have both codebases test against it - but i'm sure you could get your guys to just "call" your R code from C# and use that as input to the Cucumber code.

  • looks interesting for sure, I will certainly suggest that as one option... the devs might even like it :) – BootstrapBill Mar 24 '17 at 12:47
  • The thing I like about Cucumber is even if the team doesnt use a BDD Approach the specs it creates are a huge help in developing a system that the customer needs that actually works the way the customer is expecting. The down side is the customers are bad at thinking about edge cases and exceptions... So the cuc code can also waste time. I agree this is something that the OP should talk about with the dev team and maybe try to work together for a solution. – IDrinkandIKnowThings Mar 24 '17 at 14:42
  • yes, but thinking about edge cases is part of my job. I guess we'll need to sit together and talk about "what can I do to support your development more effectively". I'm still relatively new and maybe (as one of the comments above suggested) my specs are too "mathy" but noone wants to speak up... – BootstrapBill Mar 24 '17 at 15:56
  • @BootstrapBill - They you could probably be a good at BDD and those specs should help the dev team build the tools you are asking for. – IDrinkandIKnowThings Mar 24 '17 at 16:03

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.