56

I'm a junior developer and finished my training about a year ago but I have been programming since I was 15 so I have a fairly good understanding of programming.

The company I work at is based in Germany and is pretty small (only 4 people).

I started to work full time at the same company I did my training with and it started pretty good. I got client projects to work on on my own and was included in decision making, so my opinion is valued and I'm not the "young guy who doesn't know anything".

But about 2 weeks ago I got a new project assigned. The project is based around machine learning and the prediction of values. We use java and although I'm pretty confident with java itself I struggled with grasping the core concepts of machine learning (we use deeplearning4j) because it's a completely new topic for me so I have to learn a lot around it (terminology, math, etc).

As far as I can tell I'm the only developer working on the neural network itself and I'm expected to create a prototype to show the client.

I started pretty confident (since I'm interested in machine learning and normally don't have a problem with learning new things) but now I notice that I don't have enough experience to create a prototype in the near future. I have to look up too many terms, learn new concepts and that costs a lot of time.

That wouldn't be a problem normally but my manager thinks that I can just do that with a bit of trying. I have the feeling that they have too high expectations for me.

I could probably create a prototype but not within the timeframe that was given simply because I don't have enough experience (I'm only 23).

My fear is that my managers opinion of me/my skills would go down if I say I can't do it. But on the other side I know that the best thing to do would be being honest and explaining my situation.

How can I address my problem with my manager without sounding like I'm not competent enough?

3
  • 2
    @Tyzoid That actually was my initial plan since, AFAIK, python has a bigger community around machine learning. But management insists on using java all the time, even for prototyping.
    – LLJ97
    May 5 '20 at 15:24
  • I'm curious, you say you've finished your training, and have worked for a year. Did you do an apprenticeship in the same company? You seem to be too young to have done a degree and worked for a year. If so, that seems like an unusual project for you.
    – simbabque
    May 6 '20 at 16:50
  • @simbabque you're correct. My apprenticeship ended last year. How come that you think it's an unusal project?
    – LLJ97
    May 6 '20 at 17:51

10 Answers 10

88

But on the other side I know that the best thing to do would be being honest and explaining my situation.

You're right, honesty up front is better than setting yourself up for failure.

At the very least you will make your manager aware that you have limitations and therefore cannot be blamed if the manager insists. The onus is on them to use the correct tools for the job. You may end up pleasantly surprising all concerned by handling the project, but best to make it clear that you're not confident given the parameters and timeframe.

7
  • 31
    It is easier for me (as a leader) to coach someone and help negotiate deliverables and timeframes if they're honest about their capabilities as soon as they know something has changed. It's also creates less tension and anxiety all around if a lack of knowledge is identified early rather than letting a project fail or be late unexpectedly. May 4 '20 at 14:18
  • 2
    I have a good saying for this - it is better to admit you don't understand and feel a little foolish now, then to press forward and fail and feel a lot foolish later.
    – Zibbobz
    May 5 '20 at 13:10
  • Note that depending on management style, the OP may get blamed anyway. So it's time to polish the CV and look around what's available.
    – toolforger
    May 5 '20 at 13:51
  • 33
    Thanks for the answer. I've talked with my manager. Turns out that the timeframe is way bigger than originally communicated and he told me to just keep working and take my time with learning what I need to learn.
    – LLJ97
    May 5 '20 at 15:16
  • 3
    @LLJ97 Consider looking for some training course. Machine Learning is not necessarily a topic you should "self-learn" without guidance. Not that it isn't possible. It's just so much easier with people who can explain rather than some books and figure things out all alone.
    – Fildor
    May 6 '20 at 9:16
46

There's too much hype around machine learning. Perhaps your boss and client are victims of this hype? The fact that they're putting all the responsibility on a single junior to implement the solution means they're not aware of the scope and complexity of the problem domain.

You'll need to somehow give them a sense of what's involved and what are reasonable expectations. Generally speaking, expectations should be LOW for the initial solution even if there's a team of experts working on it.

Keep in mind that there are other ways to "predict values" than machine learning. If you're the only one working on it, that means you have some freedom to choose other approaches, like basic data analysis and statistics. Your boss and client can still say it's "machine learning" and it may be perfectly viable for an initial effort (and often better than a pure machine learning approach).

Generally speaking, picking the tool before choosing an approach to the problem is a recipe for hard times. Having someone else, who is not even involved in the work, pick the tool for you in advance, is a recipe for failure.

6
  • Would you really advise calling it "machine learning" just to stay with the hype, even though you are employing another statistical method? What if somebody knowledgeable calls the bluff? May 5 '20 at 9:33
  • 1
    I'm not sure if you are working in the area. Machine learning isn't complex anymore. There are frameworks you just have to feed with the data. Even the threshold fine tuning can be automated today. Big companies are saving millions with small use cases implemented by 1-3 programmers in a few months, doing the same with statistics is much more error-prone and requires highly paid experts. Therefore I think you should focus your answer on the workplace tactics, instead of starting a technical discussion which is off-topic here.
    – Chris
    May 5 '20 at 10:40
  • 4
    @FerventHippo, machine learning is such a broad umbrella at this point, it is a loose constellation of tools and techniques with no firm definition and that's OK. Cluster analysis and regression are very old techniques that get lumped with machine learning routinely. I am merely pointing out that there's almost certainly more than one way to approach the problem. Whatever the case, picking the tool before choosing an approach to the problem is a recipe for hard times.
    – teego1967
    May 5 '20 at 11:28
  • 1
    This is actually my preferred answer - particularly, I would combine it with @Kilisi 's answer. Don't just tell them "I can't do this", take your research and knowledge that you've gained on the subject, and explain why you can't do this - which is infinitely more valuable information.
    – Zibbobz
    May 5 '20 at 13:12
  • I've had a similar thought when they first explained the project. Unfortunately we have to use machine learning because of the project requirements.
    – LLJ97
    May 5 '20 at 15:19
25

You’ll need to cut down your bosses expectations. Doing anything useful with machine learning requires lots of learning first. That’s not something you can do in weeks. It will be months at least before you can do anything useful. Does it sound like you are not competent enough? Yes. He can try to hire someone who is competent enough and look at their price tag.

PS. I was about 25 when I learned the biggest lesson in my professional life: There are things you can’t do. If you run into these things, don’t make promises, don’t stress out, but tell your boss the fact that you can’t do it. Then he can stress. Your boss stressing is much better for your health than you stressing.

2
  • 1
    I hit that point about 40. :) There are certainly things I can't do as well as other people, sure. I've always been broadly competent with maths but not a massive theory person. For improving our sensor linearisation, we wanted to use cubic splines - but the optimal solution with noisy data and non-fixed endpoints turns out to be mathematically "interesting", so much so that it's still bleeding-edge research territory. After 2 weeks of melting my brain, I had to throw it back to our engineering director (who did maths puzzles for fun, so he enjoyed fixing it!).
    – Graham
    May 5 '20 at 10:18
  • +1 for the cutting down expectations. Sometimes people believe, just because they don't understand it, anyone else can do it easily. ML is NOT easy, unless you're rolling someone else's pre-trained system. And even then you're still going to have to learn how to do everything with it. It's neither easy nor fast. Good luck.
    – J.Hirsch
    May 5 '20 at 18:29
6

I do understand your concern and it's a vaild one.

And it's not unlikely that your manager maybe let down because his expectations are not met. But it is as you stated yourself.

But on the other side I know that the best thing to do would be being honest and explaining my situation.

Also i think denying a unreasonable request is a skill you also have to learn in your carrer. You simply can't please expectations every time.

0
4

but I have been programming since I was 15 so I have a fairly good understanding of programming

I just want to stress here that being a software developer entails more than programming. Navigating the workplace, interacting with coworkers and (most importantly for your current case) dealing with unknowns are things that are all expected of developers in their day to day tasks.

Asserting that you "know your stuff" based on your programming experience alone may backfire.

  • Non-technical managers are liable to trust your self-assessment and expect that you are proficient in all developer tasks, not just programming. Since you're a junior being tasked with a new tech stack all by yourself in a tiny company, this point is very relevant.
  • It can hurt your image when it suggests you're oblivious/naive about the non-programming aspects of your job and their importance to your tasks as a developer.

How can I address my problem with my manager without sounding like I'm not competent enough?

The definition of "competent" is the core issue with the problematic situation you find yourself in.

Since the ability to deal with unknowns and to coordinate with your team are essential skills as a developer, you not knowing how to approach something that you don't yet know is a form of "not being competent" in this particular part of your job as a software developer.

Based on how you describe your ability purely in terms of programming skill, it seems like you equate developer skill and programming skill. This is causing the issue you're faced with. You're focusing (to an unhealthy degree) on how to avoid detracting from your programming skill (or the reputation thereof).

But, and this is very important, "not competent at something" does not equate to "bad employee". It just means that you need some assistance (from a peer) or guidance (from a manager or senior dev). And that is absolutely fine. No one is a one man team, everyone has something they don't know anything about. There is no shame in that. Your question even paints the picture of this tech stack being completely new to your company, which further supports the idea that not having all the answers from the get go is perfectly acceptable.

Software developers commonly have to deal with things they don't know yet. That's sort of the point of our profession: to figure things out. If you can solve it efficiently by yourself using a reasonable amount of time, then you solve it by yourself. If you hit a roadblock that you cannot solve by yourself, or it would take an unreasonable amount of time to do it yourself, then you coordinate with your team/management in order to find the best approach for this solution.


That wouldn't be a problem normally but my manager thinks that I can just do that with a bit of trying. I have the feeling that they have too high expectations for me.

You read this as your manager insistently putting a workload on you that they (allegedly) know you can't or shouldn't handle.

But what I read here is a manager who's telling an employee (who has just communicated uncertainty or a lack of self confidence to complete a task) that they can take the time they need to figure things out.

I can't conclusively say whether your or my interpretation is correct. But what I can say is that your interpretation isn't the only one, and your observations are susceptible to being skewed by your fears of being labeled as an incompetent developer.


I struggled with grasping the core concepts of machine learning (we use deeplearning4j) because it's a completely new topic for me so I have to learn a lot around it (terminology, math, etc).

Needing time to learn a new tech stack is different from struggling with grasping the core concepts, and you need to distinguish between these two. Is the issue here that you need more time to learn the materials, or that you find yourself unable to understand and learn from the material?

I could probably create a prototype but not within the timeframe that was given simply because I don't have enough experience (I'm only 23).
My fear is that my managers opinion of me/my skills would go down if I say I can't do it.

Again, you need to distinguish the correct problem. Is this a matter of "I can't do it", or "I can't do it in this timeframe". This distinction matters.

In either case, talk to your team (or manager - whichever applies in your tiny company environment), but make sure to explain what exactly is the problem. Some tips on how to communicate such an issue:

  • Can you handle this yourself, or are you stuck until someone else helps you? If getting someone to help, how much time will it take to get them up to speed?

If someone helps you, keep in mind that the company is paying two wages while this problem is being addressed.

Using a simple mathematical exercise, if you can do it alone in 7 hours or two of you can do it in 5 hours (= 10 manhours), then you shouldn't be asking for someone to help as it actually increases the cost rather than decrease it.

There are contextual considerations (e.g. a deadline involved which is more important than the amount of billable hours) that I can't factor in here. Talk to your team/manager.

  • How much time do you estimate it will take to deliver?

If the issue is that you need more time to study the new tech stack, then get a grasp on how much time you think you need. If it's reasonable, you may simply get the extra time you need. But you need a concrete and reasonably accurate estimate if you want your team/manager/company to make a decision.

  • Can the company help reduce the problem, e.g. purchasing books, sending you on a course, giving you more time to study, ...?

If the purchased materials cost less than the extra time you'd need if you didn't have these materials (calculated by your hourly wage), then it makes sense for the company to invest in these materials.

Using a simple mathematical example: If you make $100/day, it would take you 5 days to learn it alone, or you could do it in 2 days using a $200 paid course, then it makes sense to send you on the course since the total cost (2 days of wage + $200 course fee = $400) is lower than when you do it yourself (5 days of wage = $500).

Again, there are contextual considerations (e.g. the continued benefits over the project's lifetime) that I can't factor in here. Talk to your team/manager.


In all cases, the next step remains the same: Talk to your team/manager. If you can't fix it yourself, you need to discuss it and coordinate with your team/manager. The longer you delay asking for help, the less efficient you are at tackling this blocking issue.

10
  • I'm not sure why this was downvoted. This is actually a pretty good answer. It describes that the OP isn't necessarily as good as they think they are, but also not as bad as they think they are. It also helps to decipher the various meaning of the manager's statement, as well as determining cost & time considerations. And it also covers the difference between new tech and expectations of a 100% perfect prototype. It even covers the difference between ego and skill proficiency when talking with a manager about a project. And the resolution of "talk to the manager" is spot on. May 4 '20 at 20:24
  • I want to downvote because he explains management/project management things that a junior dev shouldn't care about. How much does it cost to your employer is YOUR employer's problem, not yours. A dev is a human and doing maths to know if buying a book helps more than spending time without it, is a very strange way of thinking. Big chance he doesn't get overtime anyway. The point is can he get the job done and correctly on time or not.
    – Alexis
    May 5 '20 at 12:09
  • @Alexis_FR_JP: (1) Keep the company size in mind. The smaller a company is, the more roles a person will take on, and OP's company has 4 employees, which is tiny. (2) Who's talking about overtime at any point? (3) The point of the cost example wasn't to imply that OP needs to crunch the actual numbers, it was to show that this is how companies do cost/benefit analyses and can conclude that it makes sense to spend funds on resources that help more than they cost the company. (4) Why is being human a reason for not doing math? Are you implying managers are not human since they do the math?
    – Flater
    May 5 '20 at 12:25
  • He is a human and then can't do everything, the job of a manager, dev, data scientist, architect and researcher.
    – Alexis
    May 5 '20 at 12:34
  • As a consultant or one task contract. The goal is to deliver a POC to get a potential new contract. Even tho the company spends more on buying materials or having a second employee to help him, the potential gain (the OP has no idea) might be much much more beneficial.
    – Alexis
    May 5 '20 at 12:38
2

This is one area where I think school does people a disservice. School conditions you to believe you are failing if you don't already know the answers by the time the test starts. In the real world, some of the most interesting work you will do, you won't know how to do it when you start.

The trick is to acknowledge you don't know yet, that programmers learn by doing, and to communicate only the next step or two to management. I don't know much about machine learning, so this is a good example to show how I would communicate that.

"I am interested in machine learning, but haven't done it before, so I can't estimate the entire feature with any precision. Some quick research shows OpenCV and TensorFlow coming up a lot for people who are doing similar projects. I'm going to spend a few days doing tutorials on those projects and getting a sort of 'hello world' of machine learning in place for further experimentation."

Then after the hello world is done:

"It looks like OpenCV and TensorFlow will do what we want, but I came upon a lot of jargon about different ways to do things, and I don't understand the differences between them, and which would be the best fit for our application. I have about 15 possible approaches, and I'm going to spend a day or two on each to figure out how they work, so I can proceed with confidence and avoid too much rework on the feature we want.

Or alternately:

"I did the hello worlds and it looks like OpenCV really isn't what we want. I found these alternatives I'm going to do tutorials for."

Eventually, you'll get to a point where you can envision the feature to completion, and you can lay out the steps then. Just communicate your best guess at every point in time, and make sure to communicate how your uncertainty changes.

Good managers already understand this is how knowledge workers operate, and other managers can be taught.

1
  • Solid advice but not for the situation the OP is in: Managements already promised a demo to the customer.
    – toolforger
    May 5 '20 at 13:56
1

Most answers focus on the problem itself here so I won't add yet another opinion on how to best handle this. Instead I want to address the question that is probably lingering in the back of your head "Should I really take the risk of butting out on this assignment because that would be an admittance of incompetence?"

First, if the manager gives that assignment to you who is 23 and basically a freshman in the company and with larger software development projects, most likely also a first timer at this level of responsibility, he is a bad manager. Any "manager" who is worth his salt should be able to put the right man on the right post. Reading your self doubts and unless you are the most cunning of psychopaths, the manager should have noticed that you are not ready by reading you and judging your work so far. A good manager will be able to judge the abilities of every man on his team and pick the right man for a job. You clearly are not and thus it's his fault.

Second, he will most likely not see it that way and if you try to communicate what I just said, he will hold it against you. A junior does not criticize his elders. So if you go and ask to be taken off this assignment, make sure you don't blame the mistake on him. That would also reflect badly on him with his superiors and he won't like that

Third, if you don't get off this assignment and you fail, the failure will be blamed on you and not on your manager for picking the wrong man. If you are confident that you will fail in the end, it will be best to end it now rather than dragging it on.

Forth, in my experience, when you take up a new tool, most notably a language, which I assume your tools are equivalent to (I am not familiar with machine learning so I just assume it's on par with learning a new language) the first few projects you create WILL be garbage. There is just no way around it. It takes some practice to understand not only the concepts of a language but also to learn how to use them effectively. Since this is your first project with the tools you are using, it will not come out pretty.

Five, I don't know about your background, I don't think you wrote about it, but my guess is you are a self made man and did not go to college or university to study IT given that you are only 23 and have already been working there for a while. Nothing wrong with it. But If your superiors are phd or whatever they call it in Germany, you can bet 10:1 they will look down on you and take you as not fully equal. Maybe the other chaps in your company are self-learned too, that's fine then, but if your higher ups or even you co-workers have a degree, they WILL look at you as inferior. And you will earn less money. Yes I know 75% of those who read this are phd and are already getting furious reading this, but this is just my experience from 30 years of IT work in various companies and on various products. It's a fact.

So what you do is up to you, this is just my guess about your situation and I'm trying to give you some more insights about the parameters that apply to you so you can make a decision that is not just based on "can I handle this job or not". I had one or two situations in my life where I was rushing ahead because I wanted to advance my career and got into something that I was just not able to do. I know it's not a nice feeling when you know that you can't do what others expect you to do. And before anybody says "Then why don't you tell the guy how you got out of that pit?": The company went bankrupt before the fact that I was not suited for the job came to light, so that saved my behind. And no, it wasn't my fault that the company went belly-up.

Best of luck with whatever you decide.

1

This is an excellent opportunity to use your training budget to learn a new skill. The company has identified:

  • A topic it is interested in pursuing (Machine Learning)
  • A person with the availability and aptitude, although not the knowledge, to pursue that topic (you)

It's a no-brainer that if they want this topic pursued, then the right approach is to upskill you into being competent with it. A line manager should always be eager to see their direct report identifying topics for their own self-improvement.

If your company doesn't have a training budget; leave.

1
0

When this happens to me I do 2 things:

  1. Communicate (in writing) that the project is way more difficult than the allotted time frame allows. If they say to keep going, keep going without the pressure.

  2. Work as hard as you can and give a write up on what you learned and why a prototype isn't feasible.

0

"Right now, reach out(!) both your boss and to your co-workers!"

Don't be afraid to reach out to either one – and, don't delay doing it.

"Okay, you feel like you've just been asked to take a sip from a fire-hose!" Welcome to the profession.

Get this: "successful software development is a team effort!" No matter how good you think you are, "the task at hand is bigger than you are." Therefore, nobody's asking you to be a rock star. They only ask you to be a great team player. First, reach out to your teammates. Be frank. Be candid. "It's okay!"

Then – if need be – do the same thing with your boss. (You think that "he hasn't been there?" Guess again.)

Welcome aboard.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .