That's something I have to talk with this new customer, I'll try to start with a reduced amount of dedication and then increase it if needed as the project evolves.
Leetcode questions were never brought up in the interviews I've had for the time being. There were the kind of questions I've mentioned in the OP and some code exercises.
Yes, I'm not really thinking about doing freelancing hands on work. The only possibility would be to help them come up with a high level solution, as I had built a very similar product in the past.
Update: I've (politely) declined the offer and told them to 2x the number if they wanted to bring me in. They've asked me if I can work some hours for the rest of the year in order to help the engineering team launch the first iteration of the product and then revisit the proposal in January.
Thanks for all the comments, you're all being very helpful.
I really appreciate your (and everyone) help. I've always knew I was behind some things but this real world experience slapped me in the face and now I'm trying to readjust.
My manager has already been aware of my lack of knowledge but I'll talk to him to know if they still want me there. If I keep my job I for sure will be asking for more help at the start of a new project.
Crucially, don't start the discussion with "do you still want me" but with "I'm concerned that I might run into problems and wanted to discuss how we can avoid them" (or something like that).
Some managers would welcome this discussion. It shows that you are aware that you have limitations and that you would like to improve. If nothing else it helps keep the manager / company from placing you on a task that you wouldn't be able to complete successfully, which would ultimately hit their bottom line. If the company / management are sufficiently enlightened (such companies do exist), they may be able to find additional training or development opportunities to enhance your skills
FWIW, when I was a manager, I ALWAYS liked to find things out before they created a problem, when there was time to fix them, rather than in the middle of some critical task.
An even better starting point would be: "Hey Manager, I'm dissatisfied with the quality of my work on medium_complexity_project and want to make sure that I'm improving going forward. Here are the steps I'm taking (list steps) do you have any other suggestions on what I can do to improve here?"
Yes. In fact this is an interesting topic in its own right - how do you approach management when you have found a problem. In my experience, there is a sort of scale here, along the lines of:
* do nothing and keep quiet (almost always the wrong thing)
* say "help"
* say "I've found this specific problem, but I don't know what to do"
* say "I've found this specific problem, here are some options for fixing it - what do you think?"
* say ""I've found this specific problem, doing X will fix it - what do you think?"
This will vary a lot in practice and depending on circumstances, but I think as people increase in experience and knowledge they tend to approach management with solutions rather than just problems.
I agree with the sibling, but let me be more explicit: It's going to be hard to take time off, "level up" and then come back and get another job. Your best bet is to stay where you are and keep your job. The company has already invested in you and your manager has every incentive to help you improve rather than finding someone else.
You should go to you manager with a look to the future: come with some specific things you can do differently on the next project, and perhaps also some general 'goals' for improving your skill.
Then, most importantly, do what you said, and get better.
All this assumes you are happy and want to stay in engineering, if you do think you'll be happier doing something else, then by all means go ahead and do that.
Don't phrase the conversation like that. If you want to get better start there. Say you'd like to improve. That your first attempt here was rough and didn't work out but pairing up with a more experienced developer would give you some rails to keep you on the right path.
Either way. Keep your head up! Asking for help is the first step of an endless journey.
Make sure to really listen to what your manager says is the real problem. Sometimes in these situations we get flustered and jump to solving the wrong thing.
Maybe the real issue here isn't engineering ability but communication, that you didn't let anyone know you were having challenges, didn't set expectations about how the project was going.
There could be more or less going on here than just code quality, so like I said, really listen and ask questions and keep an open mind.
Also to reiterate what others are saying, don't go asking about being fired because it can come off like you want to leave or have given up. You've been humbled but it doesn't take away the good parts of what you do, you're a pragmatic, independent, get stuff out the door type adjusting to a larger team. This is normal growing pains.
> I'll talk to him to know if they still want me there.
Why would you think they don't want you there? This is not a helpful mindset to have. Here are the facts:
1) You passed the interview process.
2) They made you an offer.
3) They've continued to invest in you as an engineer by giving you feedback on your weak spots and where you can improve.
If you were really that far behind, they would have realized that in the hiring process and you would /not/ have received an offer. So let's start there. They definitely still want you there. That is why they hired you.
Second, let's talk about your "lack of knowledge," "being behind some things" and "real world experience" that "slapped [you] in the face" -- based on your mindset it looks like you are viewing this as a negative, or as proof of failure. Why is that the case?
You have 10 years of experience solving problems and getting paid for it. Now, you are solving different kinds of problems, so you're developing new muscles. It's expected on their end (and should be expected on yours) that there is some kind of /ramp up/. Talk about what ramp up means. Figure out your manager's expectations, and figure out what resources you have available to engage in ramp up. I guarantee you this, there's ramp up at any new medium-big company anywhere you go. There's tribal knowledge, spinning up on the industry vertical, etc -- all of this is incompressible, doesn't matter how good of an engineer your are.
If your manager is any good, they likely know about this and will appreciate you being aware of this problem as a logistics problem, not a moral problem. So think about it that way. Stop thinking about "whether they want you there" -- start thinking about "what blockers are in your way towards being productive" and start building a game plan with your manager. Worst case scenario, you're not able to accomplish it, but at least you gave it an effort and approached it the right way. That's a much more mature, proactive and effective approach than self-sabotaging yourself with feelings of inadequacy. I have a hunch that you won't fail if you do this, though. Just thinking about what you want to get accomplished and the nitty gritty details of how you get there and collaborating with your manager to get to a plan you're both happy with is /a lot/ of work -- once you've done that, if you work at a functional organization, the chances of you succeeding are very high!
Give yourself a pat on the back, while you're at it. Getting to a point where you're still being challenged after 10 years of experience is a /good/ thing! It reflects well on you and indicates your desire for growth. In all likelihood, your company saw this motivation in you and that's why they hired you. Look at the positives and opportunities here, and I'm sure you'll do amazing.
A different situation brought me to a similar experience.
I have a good professional network but it's mostly local (Argentina). I've been planning to live here all my life but it's not a good place to live anymore. I'm planning to relocate to Europe so I had to start with the interview process again and being a "generalist problem solver with software" is getting difficult to get good job offers.
Yes. For example, if your problem is important for construction companies, than they will give you data to solve it (otherwise, how would they solve it). In return, they will get to use your models.
In any rate, unless you have a dataset of your own, the ML part does not matter.
I think that any ML project today, it more of a solution engineering type project, and not a product.