first week at bosch
i started my position at bosch a week ago, and it has been pretty intense. it goes without saying my role here is a bit unorthodox, given that i have a bit more experience going into this, so it seems that i've skipped a few of the formalities that other interns need to experience.
it may also be that those formalities are still something i'll need to do, but regardless, what intrigued me was that i was pretty much thrown into the fire from day 2. the codebase is quite complex. their cloud stack in particular is what makes me scratch my head and it's all in go.
i am familiar with go, but switching to it mentally is quite taxing, coming from a rust background. i am constantly reaching for things that simply aren't there due to the simplicity of go. then there's the various modules, shared utilities and other programs across the project that are seemingly very tightly coupled. lots of different pieces of our platform talk to eachother in pretty intricate ways, and wrapping my head around that has been a huge pain, being frank.
i think more than anything though, the mental shift in the actual development process has been quite mind bending for me. though my background is in engineering (internships the last 2 years), i've kind of been the leader of my projects. i had a high level goal that could be solved in really, anyway i saw fit. that came with its benefits, but i'm seeing the downsides of it as well, now that i'm working here.
having to reason about the architecture, design and techincal implications of a project is a complete 180 from where i have been for the last 1-2 years, which was "let's solve this problem, someway, somehow". i focused on getting to the result, and along the way if i could learn a bit about why a broader design pattern fits this particular domain, it was a plus for me.
but it's kind of the reverse now. it's still quite early, but it's clear that i have to first think about how we want to solve this problem, engage in discourse about alternatives, tradeoffs, etc. then we need to actually organize the rampup in development, and only then do we start writing the code.
this may seem obvious to many, and truthfully i know this is how any good work is completed but being on the ground floor of that process has been quite an adjustment for me.
i say all this to say that i am well aware of how crucial being in this environment is for my development as an engineer. as insane as this first week has been, i could not be more grateful for that fact that every body around me is magnitudes smarter than me. it would be easy for me to express how much of an imposter i feel like right now; of course i think that there's something inherently wrong with the fact that me, of all people, is engaging with very important conversations happening around the initial phase of a very complex project-- but i don't think i would want it to be any other way.
i had been groaning about this to my fiance for a while. my last internship turned so stale that i began to feel worried i would stagnate as an engineer and be stuck doing glorified automation / IT work from the moment i graduate to when i retire. it seemed like that was where the start of my early career was headed. but now i have been given this oppurtunity to be engaged in something directly relevant to my goals as a programmer, both professional and personally, and i intend on taking advantage of every second.
on the more personal side of things, it's also given me the chance to work out a rigorus routine for myself. something i had been missing from my last two internships. now that i'm stepping my foot into this door that is my graduation, i feel much more comfortable committing all of my attention to this job, and it's been very enjoyable to come into the office and focus on doing what i love (i need to make a post about that soon: i have some very strong thoughts about this career i've picked for myself).
anyways, i can't tell if any of what i said was coherent but it was a well needed yapathon.