Have been a Java developer all my career. Cleared HC, T5, all the teams I spoke with work on C++. How difficult is the transition? Is it worth it? How is it different in google?
Yeah.... but Java tends to spoil you with the GC and cool libs and api. Switching to any VM based language is easy. But C++ Little hard but not impossible.
It's not about the language. It's about the power/responsibility to have precise control over memory. You need to think and act differently
You are right I’m not disputing you. I like to exercise control and responsibility to things like concurrency, parallelism, security and error handling rather than mundane things like memory management. Totally spoilt by VMs.
It's a different mindset. You get more control over memory but with it comes great responsibility. You will do fine if you are willing to learn and suffer the occasional embarrassment of a crash or a leak as you master c++
The thing is that when you work at google. Such mistakes will be very embarrassing and career hurting. Everyone else will be so smart and probably well entrenched in C++. I can only imaging crashing a service at Google because of a silly reason like not deallocating something because JVM taught you never to bother about such stuff.
Most long-time high-level/GC language users I’ve worked with don’t really understand memory beyond it being a number that goes down as their code does more stuff. And their only exposure to a memory bug is running out & that’s fixed by calling IT to order more RAM.
C++ to Java is easy but not the other way. I did it too . Needs a mind shift in thinking, not just with memory management but also tools,wierd error messages and pointers. But it's just a learning curve initially and similar to other languages in the end. While an inconvenience don't see it as a deal breaker.
Biggest PITA about C++ is trying to figure out ,quickly, a STL signature. Reading a templated method which takes templated classes as parameters will make your eyes bleed.
Did you try asking your recruiter for teams that work in JAVA or Kotlin? What was their response?
I did this. 2 years with Java in finance, then 2 years of C++ in search. It was fine. Yeah I spent a few days debugging a segfault caused by storing a pointer to a vector element, but overall there was little practical difference.
Throughout my career, the most talented engineers I have seen were C++ experts. They understand how computers work and how resources should be managed. If your goal is creating a high performance software, C++ is the best choice. I got little bit fed up with JAVA...but frustrated that there are not good alternatives in distributed env.. not because java is excellent technically but because java engineers are easier to find..
This 👍 My rule of thumb: if you are worrying about memory pressure and figuring out when to invoke GC, you really should be managing your own memory. Life will be simpler and more predictable if you do core Mem MGMT in c++
What do you think of C++ projects that build their own garbage collectors (e.g. the Blink rendering engine used by Chrome)?
OP is about to become a real programmer. The transition should be easy for you. It will have its moments but generally not too bad if you are able to get hired at google as a software engineer. Like weakPtr mentioned, C++ template meta programming is a language all by itself.
What I know is that T5 need to have team match first and then HC. Isn't it true?
Life is too short to deal with C++ crap
You are T5 and afraid to switch languages? Languages have their nuances but it’s really not that different from an engineering perspective.
It’s not about being afraid. I want to be productive quickly, don’t want to spend a chunk of my time ramping up for few months, also from what I have heard the learning curve is steep, I can be functional in it quickly, but not an expert, that’ll take time and experience. Also want to know how “fun” the language will be, especially from those who transitioned to it from other languages.
Most engineers I know have a hard time moving to lower level languages. C++ is extra devious because it’s added a lot that especially in recent years that makes it feel higher level. But if you don’t understand what the compiler & runtime are doing beneath the hood you can easily write code that is not performant, buggy, & insecure. And to the newbie it will look almost identical to the code that is blazingly fast, solid, & secure. So I’d caution against presumptions of being “functional” quickly. That’s the downside of schools that only teach high level languages like Java & Python.