29

I was hired as an intern software developer and I'm finding myself in a situation of working with a lot of complicated physics formulas and being left to figure out the maths by myself.

I understand that to a degree I should be able to work with mathematical formulas as a software developer but it's gotten to a stage where I spend most of my day trying to figure out the data and the formulas rather than working on the task I'm supposed to be doing.

Do I approach my boss about this or would it be generally expected for me to take time to solve the maths? I feel like I'm wasting their time and my time because I don't understand the physics and probably never will but I don't want to come across as unable to do the work.

Background:

  • Small scientific company where ~50% of employees are physicists.
  • Been working here about 3 months, full time mostly but part time at the moment.
  • Interview did not include anywhere near this level of physics.
  • I consider myself to be a science savvy person, I have high school equivalent knowledge of physics and chemistry and I have college level knowledge of some areas of math such as linear algebra.

Note for whoever marked this as duplicate: This is not a question about how to ask for help, this question is asking to what extent should I work on my own before asking for help with something I was not hired to do.

Note: Thanks everyone for your answers, I talked to my boss and he explained some things a bit more. Some of it's still out of my depth but to a manageable point! He seems to understand a bit better that physics is not my area of expertise!

marked as duplicate by Dukeling, gnat, IDrinkandIKnowThings, Masked Man, Rory Alsop Oct 21 '17 at 14:20

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 11
    These possible duplicates don't answer my question as they are looking for help with what they were hired to do. I wasn't hired to solve physics equations. I don't have a reluctance to consult my boss, I just want to know if it's generally expected to take extra time to solve it myself or to ask for help. – Clíodhna Oct 20 '17 at 13:34
  • 10
    This doesn't seem like a duplicate to me...I will vote to re open if its closed. – Mister Positive Oct 20 '17 at 13:38
  • 1
    While tool recommendations aren't really what we do here, I've found Wolfram Alpha to be incredibly helpful when I get in over my head math wise. If you aren't already using it, please check it out. – Myles Oct 20 '17 at 14:52
  • @MisterPositive, I am almost convinced that many of the duplicate closures on stackexchange is the result of badly programmed AI. One has to wonder what goes through the minds of the "dupe police" if they're actually humans that read. – teego1967 Oct 20 '17 at 16:02
  • 1
    FWIW, software development is not about writing code 8 hours a day. It is about spending time to understand the problem, then (hopefully) spending less time to writing quality code because you understand the problem so well. – cdkMoose Oct 20 '17 at 16:37
46

Maths beyond my ability to do efficiently, do I ask for help or take the time to solve it myself?

I would suggest you take this difficulty to your manager ( or team lead if you have one ) and ask for help. There is nothing wrong with asking for help, especially in your case where you seem to have put in the initial effort, and having deep knowledge of physics wasn't a requirement.

As a software engineer, I do not know all the complicated formulas and such that goes into my code, that type of information is provided to me by the appropriate expert.

As an example, I used to code for a large lottery company here in the US. The formulas used for the games were provided by the Math folks from another department, I just implemented them. This should be how it should done with complicated formulas.

  • 33
    "This should be how it should done with complicated formulas.": I'm not so sure about that as general advice. There are innumerable horror stories about the results of people implementing things they don't understand. – Nate Eldredge Oct 20 '17 at 16:53
  • 4
    @NateEldredge I think there’s a balance to be struck. Also, I’d submit that most of those horror stories are likely developers implementing something they don’t understand on their own, possibly after a quick web surf, while this answered says it’s in collaboration with the appropriate experts. That’s far different as those experts can provide relevant tests to make sure it’s right. – Paul Oct 20 '17 at 18:28
  • 9
    Many of these horror stories can also be mitigated by asking for validation tests in conjunction with the algorithm. If your implementation isn't doing what it's supposed to do, there's a good chance you'll immediately spot it. – Aza Oct 20 '17 at 18:52
  • 2
    Horror stories that I have seen were numerical issues, and that one is easy to miss with above suggested recipe. Scientist provide theoretically valid formulas without thinking about numerical corner cases (it is on engineering to get this right!), and engineers implement the formulas exactly as were given also not thinking about numerical issues (certainly scientist have completely thought it through!). – Akavall Oct 21 '17 at 4:11
  • 1
    @NateEldredge A couple times we've had to do this, and as suggested by Zyera, we ask for some example inputs/outputs. Converting those into unit tests works as great confirmation that we didn't make a typo when implementing it, and helps prevent issues later on when the code is touched by someone else. – Izkata Oct 21 '17 at 7:05
17

Bring this up with your manager.

Since scientific knowledge wasn't a prerequisite for you joining the company, it does seem a bit unfair to expect you to solve these problems when they're really not within the range of your employed expertise.

Possibly, you might be able to get someone else to help solve these, or be pointed toward a tool that can help you.

  • 5
    Agree, and management can also determine if they consider the time OP spends learning to be worthwhile. They might prefer him/her to do the calculations and learn something (even if it takes longer), or they might want the quickest, lowest-risk solution. – Mike Harris Oct 20 '17 at 14:07
9

You have to do both: spend time figuring it out and ask for help from experts.

Software developers all have to learn some amount of domain knowledge, regardless of whether they're working in finance or physics. You are lucky to be trusted with valuable domain work.

How much time you actually spend in the domain versus what you were "hired to do" is all up to your discretion and that of your boss. Some individuals learn more of the domain than others, everyone is different.

However, keep in mind that the more domain knowledge you master, the more valuable you become to the mission of the organization. A "pure developer" is just a cost-center that is ripe for externalization.

  • What is a "cost-enter"? – CodeSeeker Oct 21 '17 at 8:40
  • @CodeSeeker, Sorry, I meant to write "cost-center". It is any job/function/department within an organization that doesn't directly contribute to its profit. Orgs are apt to outsource such activities, and whether they do or not, the focus is always lower "cost" in a cost-center. – teego1967 Oct 21 '17 at 11:48
  • And organizations are often short-sighted or even stupid... – CodeSeeker Oct 22 '17 at 1:13
6

I believe the true point of your question is being missed by the other answers. Let's start at

working with a lot of complicated physics formulas

Is it the actual Physics you are struggling with, or the instability of the equations that the Physicists have provided you?

The tight closed formulae that Mathematicians and Physicists prefer as theoretical solutions are notorious for being unstable when evaluated with floating point processors. Most of the Physicists you work with are likely oblivious that (the particular form of) the equations and formulas which they have given you are highly unstable.

Knowledge of the Numerical Methods that translate these unstable formulations into stable floating-point algorithms is an Information Sciences speciality all its own. You could do much worse than to dive into Knuth Vol 2.; but at the least visit your local university bookstore or library and locate a text on numerical techniques in programming, to at least learn the vocabulary of the problem, and the scope of the issues.

Then, go in and have a meaningful discussion with your manager. If you do the latter first, he will think much less of you.

Disclaimer: I am a (non-practicing) physicist with two half-courses in numerical methods, and a full year of post-graduate courses in Physics and Mathematics, behind me. Programming by profession I find to be a much better outlet for my creativity than interpreting geophysics or integrating Feynman diagrams.

Update Consider the well known solution for the quadratic equation:

(−b ± √(b² − 4 ac) ) / 2 a

Even this simple, well-known, formula can be a challenge to programming:

  • Is the discriminant in the vicinity of zero, either positive or negative? A test must be determined whether the difference from zero is a calculation error and there should actually be one solution, rather than two or none.

  • Is the discriminant negative (but not close to zero)? Then there is no solution. Perhaps throwing an error is appropriate, and perhaps not.

  • Is the discriminant positive, but with square root of similar magnitude to b? Then perhaps zero is an exact solution, and a test must be done to determine this.

  • Only after all previous tests are determined to be inapplicable can one simply apply the simple closed-form of the standard formulation.

P.S. The discriminant referred to above is the factor

(b² − 4 ac)

in the closed-form equation.

0

You should tell your boss that the equations being provided to you assume too much knowledge of mathematics/physics.

The scientists need to further process the equations and lay them out for you in a way that a high school student can understand. They can do this, its just that they aren't bothering to.

(I should warn that your problem might be more than complex equations. Just because you understand an equation does not necessarily mean you will be able to program it. Scientific programming is a skill that can require years of experience. It is possible that both you and your employer do not realize that translating math into code is not necessarily a simple task. In that case they will either have to scale back their expectations or hire somebody with more experience, which they might not have the money to do.)

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