The title itself is a recipe for disaster. Also this is a semi rant.
Yesterday I was informed that I will have the honour to implement the core functionality - which is an interface layer to use the driver of a very expensive hardware shit - of the software I’ve been working on as a frontend dev.
There are two possibilities for the language: C++ or C#. The one that was proposed/imposed is C#, which I know nothing of, while at least I have some hobbyist experience with C++; when asked if I could take some time to familiarise myself with C# I was basically laughed in the face, saying I will learn on the field and at least some of them have some experience with it.
Should I insist to go with C++, or is that an even worse idea in an already fucked up situation?
This doesn’t feel like a disaster to me at all. This is an opportunity to grow and learn new things and new ways of doing things. It looks like your environment is very supportive and understanding that it will take some time and effort to get up to speed and are offering mentoring. And businesses often have valid technical or non-technical reasons for using a particular software stack - for example C# developers are likely easier to find than C++ developers which makes hiring easier in the future.
My suggestion is to take some deep breaths reset your perspective. Yes, sometimes it’s not fun to push outside of your comfort zone, and it sounds like that is creating a lot of anxiety for you, but you’ll do fine. This is very similar to how I got started professionally programming 25 years ago.
If you’ve firmly but politely articulated what your skill set is, and they’ve told you it’s fine, you’re literally being paid to skill up. I don’t see the problem. You haven’t lied about your qualifications, instead you’ve been told they want you on the project, even though you don’t know the language yet. This is a good thing.
And the best part: you have a pretty good excuse if you do happen to fuck up
What do you mean? Your team says they’re going to help you learn as you go. I think you’ll be fine. Be proactive when asking questions, you’ll be fine! Just set expectations. Make sure your manager knows you don’t know this language and tell them you can learn as you go with assistance but you’ll need some time before you’re very productive.
If you can code in C++ you should be able to muddle through in C# no problem. The runtime will help prevent the worst SNAFUs; y’know, pointer errors (there are none, unless you use the unsafe block or p/invoke), memory leaks etc. Just look at the existing code and cargo-cult it til you make it. You got this. :)
The project is brand new (as in, the integration backend doesn’t exist), I have to code and architecture it
Okay that is a bit rougher. Best of luck I suppose. Hopefully you can lean on your colleagues somewhat. If I had one piece of advice, look up the using block, it basically ensures an object gets disposed immediately when it goes out of scope, which is the closest C# lets you get to deallocating memory. The object needs to implement IDisposable tho.
Other team members already being familiar with the other alternative makes it a better bet already. Besides, C# is fairly nice, it’s arguably much easier to learn than C++, C# and similarly (or more) high-level languages have been focused more than C++ in a lot of education, etc.
Have you used Java before? It’s not a big leap from Java to C#, most of the concepts are the same. At least C# is a memory safe language, although I’m not sure if you’re unfamiliar with the code base and languages if it really makes a difference which language you use here. Hopefully your coworkers can help hold your hand a bit here, this situation sucks.
There is no codebase, I have to write it from scratch. Also nope, I’ve religiously avoided Java so far
Honestly I felt kinda similarly to you when it comes to Java and Microsoft Java aka C#, but I found I was able to code in it with not that much struggle.
Not sure if you know python, but I feel like objects in C# are similar to python objects. You have to use the new keyword when you initialize a object though for some reason. Also PascalCase is used everywhere for some reason.
One of the largest gotchas for me was the
char
type being unsigned.I found Microsofts docs to be quite easy to work with honestly.
It’s not a fucked up situation. I’m a Ruby developer and I got hired in a Scala shop with no experience. It took just a couple weeks to get up to speed and everyone was understanding.
Since you know programming principles already, the difference between languages is mostly in their APIs. But even experienced developers spend half their time reading docs about APIs. It’s nothing out of the ordinary.
C++ is a worse idea, it is not a good web backend language.
C# is pretty easy. As long as your boss doesn’t expect you to magically already be good at the thing they refused to allocate time for you to train in, you probably can just start trying to glue bits of C# web API examples together as your first project.
It’s not web backend
Oh sorry, I saw “frontend dev” and assumed that meant web and not like local application.
If you are doing something less popular involving non-web messaging between processes that might be harder to break into.
I would say C# is a better bet as it abstracts a lot more from you than cpp. And as the name suggests the syntax is much like C so if you already have some basic understanding you should be fine. Also as others have said you’d is a learning opportunity, try to have fun with it!
C# isn’t that difficult to learn. Don’t be overwhelmed by languages or frameworks, they aren’t so different from each other.
deleted by creator
Tell me you are employed by an Italian IT company without telling me you are employed by an Italian IT company. While reading “I will learn on the field” it reminded me of my previous employer who was very fond of this “learning on the job” approach. To the clients’ detriment who had their expensive software developed by inexperienced programmers.
Tell me you know I’m from an Italian company telling me I work for an Italian company
Learn on the field of battle.
If it’s any consolation, it’s the same in all fields, I’m a field tech for industrial machinery and they throw me into all kinds of shit I’m not familiar with, all the time.
“Oh, you’ll figure it out, you’re good!” Yeah, fuck you.
If I would complain about any new language or environment I’d be dropped in, I’d probably in the loony bin by now.
Tell the team leader that you don’t know the language but are willing to learn, read the existing code which will give you a feel for the language, the project, and the local programming style, all in one go, and you should be fine. Imagine the backend was written in PL/I, Prolog, or LISP instead of just another ALGOL dialect ;-)
What existing code? I have to write the whole thing from scratch
If you have “some hobbyist experience” with C++, then you should definitively avoid it and go with C#.
You should be at least “C++ is a landmine, be careful there” tall before allowed to play with it alone.
If you’ve been working the front end, you know what the backend is supposed to provide, so you might have been picked because see you as a domain expert. Don’t be surprised if you end up acting as a leader in that regard.
And C# isn’t that hard. I earned my living with Visual Basic, Access, and VBA until thrown into a C# job. Other than the damned braces and semicolons, it wasn’t that big a deal.