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.