JPMorgan Chase & Co. is an American multinational investment bank and financial services holding company headquartered in New York City and incorporated in Delaware.
Hey all, I’m a new grad who has been working at JPMorgan Chase for ~3 months, and I would really like some perspective on my experience so far. This
essay question will be long, but the overall theme is that my growth feels stagnant and I’ve unfortunately grown to dread coming into work. I’d really appreciate any new perspectives or advice.
For reference, my current career goal is to grow to senior engineer at a startup/Big Tech company as quickly as possible (because a) I like working towards long-term goals and b) software engineering is lots of fun).
A quick timeline:
I joined JPMC in early August on a React + Spring Boot team
The first 4 weeks were solely dedicated to training and getting access to stuff
Thus, I’ve been with my team in full capacity for ~8 weeks now
A core problem is no one is really interested in how I’m spending my time or enabling me to be productive, even with me trying to upwardly manage. For instance:
On my first day, I had to actively ask my manager and TL for my first task, but they had no immediate plan for me or the other new joiner(s)
During my first couple weeks, I (nicely) bugged my TL for work so I can get my hands wet and start learning the codebase, to no avail
Recently, I had a full week of no tasks assigned to me, and no one minded (I had stopped bothering asking for work)
I’ve considered the following:
Self-assigning myself work
Asking to pair program
I’ve mentioned this to two engineers, to no avail
Everyone seems to be focused on getting their own JIRAs completed, and pair programming will inevitably slow them down
Also, because my TL is so busy, it’s hard to get immediate, synchronous help whenever I get blocked, which leads to me having much downtime. In fairness, I understand people are busy and can’t drop their work on a whim, and I should have taken the initiative to get help from other team members too (to not overwhelm my TL).
In any case, the handful of tasks I have been given have tended to be very menial in nature - the type you could better offload to ChatGPT. For instance, adding 1-line changes to business logic or writing unit tests for existing code (that I only partially understand). Most of the work hasn’t helped me develop a mental model of how the system works or learn the business domain.
Here are a few other traits about my team that I’d like to mention, to provide more context in debugging my situation:
My TL and manager spend most of the day pairing up to deal with production issues
My manager doesn’t have 1-on-1s with anyone (even new grads)
Everyone else on the team is busy, as if I’m the only engineer without much to do
The engineering culture often seems middling at best - unit tests are often written without asserts (solely to reach 80% coverage) and code often has buggy execution paths
The whole experience is unfortunately becoming really frustrating to me. For comparison, I worked on a React/TS + Firebase side project over the summer (it couldn’t have been more than 80-100 hours of work, tops) and I learned so much stuff really quickly - not merely in terms of code velocity, but other higher-level concepts like the tradeoffs of SQL vs NoSQL, data modeling, reading documentation, how to keep a codebase organized, etc. and I also gained much more confidence in my technical abilities. The experience I gained of building something has given me more context to understand how software engineering works. Also, it was tons of fun (like grinding in an RPG, but productive).
On the other hand, I’ve spent almost three months at my first real job and I’ve objectively learned very little. As a result, I’m finding it hard to be motivated to take extra initiative and apply myself when it seems like the environment I’m in has turned out to be so stagnant and slow-moving.
Beyond this, the other major problem is I don’t feel like I’m providing value to anyone (including myself) when I go into work. My only incentive has (unfortunately) become running down the clock so I can leave, which, coupled with the boredom from a lack of work and a 2+ hour round-trip commute, is incredibly draining. It’s really silly - my primary goal right now is to get good at software engineering, yet I’m currently doing the opposite!
I have considered starting a dialogue with my manager and bringing up (some) of these concerns, but there are a few problems. Mainly, I doubt my manager would provide the best insight:
He directly equates hours worked with productivity and suggests ambitious JPMC engineers should probably work 10-11+ hours early in career
He suggested using my downtime to do some kind of arbitrary training (unclear what he is referring to), instead of finding real work to learn from
He doesn’t seem to understand that the work I’ve been assigned is not very meaningful
He spends all his time coding and very little time managing
My manager (as part of JPMC for decades) seems to be in the siloed-off JPMC bubble where engineers join and stay for decades - so growth discussions would be centered around being the best JPMC employee, not the best software engineer in general
I don’t mean to criticize - my manager is actually a cool, friendly dude.
Plus, not everything is bad about my experience. There are several green flags:
Most of the other engineers seem to like their work
There appears to be some camaraderie in the team culture
My manager seems flexible and understanding regarding people’s schedules
My TL/manager have given very positive feedback on the code quality of my (few) contributions so far
During my placement conversation, it sounded like there’s tons of work/scope available
Nonetheless, it still feels like I’m in a no-win state where my options are:
Stay until the tech market improves
It feels really bad to intend on spending a minimum 1-1.5+ years working at a job where I’m learning very little and accomplishing almost nothing. It seems like it would hurt my career growth (and continue to be a really taxing, sucky experience).
It seems like the only two things I’m getting out of this right now are a) income and b) resume continuity.
It feels almost as bad to want to look for a new job after ~3 months, given JPMC’s tech side is so large and reasonably well-known.
Also, job searching as a junior in this current market would be very RNG-heavy, and I don’t want to have a short stint on my resume if I can avoid it.
Internal mobility isn’t an actionable option because the program managers want us to spend at least 12 months in our first role.
Also, to switch, you’d need to both find another team via internal networking and have your current manager sign off on the transfer.
The large amount of downtime means I have to spend significant parts of the day running down the clock by simply sitting in my chair and doing literally nothing - which turns out to be far more mentally grueling than one might expect.
The WLB on my in-person days is poor because I have a 2.5 hour round-trip commute, so I have little energy to do anything useful in my free time.
I’ve tried to use my downtime to read books (like Designing Data-Intensive Applications), but this doesn’t remotely replace doing actual work.
I have no expenses so I could quit, though that isn’t the best option. I only mention it because staying at my job comes at the cost of continually enduring this.
What does the Taro community think of my situation? I’d appreciate any and all suggestions on how to fix this.
For people who work on side projects: I was wondering what is your system when it comes to coding at work and then coding after work? How do you divide your time effectively between the two?
Sometimes I feel like I didn't get 40 hours "worth" of productivity after a week, and it didn't make sense to physically spend 40 hours working that week. Is it possible to succeed as a software engineer working less than the traditional 40 hours? I imagine it requires being able to get the work done faster - What are some techniques to do that?
In this , Alex mentioned that his technical documentation stood out because no one wrote docs in that much detail.
Are tech docs mainly for how you plan to accomplish a project and are they useful for junior engineers? If so, how do you write good technical documentation?
How can we identify what are the core in-demand "Legos", especially in the context of what we do commonly on our day to day job?
As software engineers, we are tackled with new things to build regularly, so I was wondering how I could focus on the components (i.e. "Legos") that are built more regularly and learn to build them with high-quality.
I don't have a concrete need for this right now, but I want to be more efficient at work and keep this in mind for when I do get into a new technology. As a web dev, a core in-demand Lego will be like responsive design or something like that right?
For context, I mainly work on the web-side, building customer-facing surfaces. I don't want side projects to be something like DSA where it's good for interviews and that's it.
The concept of side projects makes me think of Flappy Bird when it came out. It seems like it started off as a side project, so this is all interesting to me and would love to learn more about the benefits.
I see a lot of engineers get excited by new frameworks, and I can’t emulate that same enthusiasm. There are some exceptions (e.g. when I learned about Storybook.js, I was excited to pick it up as it was applicable to my work), but for the most part, I'm just not as excited as other software engineers about picking up the latest and greatest tech. If I’m not going to get my hands dirty with a new framework or use it at work, I just don’t really care for it. What can I do to be better about this kind of learning?
I'm currently moving a bit slower than other engineers on my team. Here are some of the problems I'm facing:
I feel like it's more joyful to positively impact the life of others vs. only getting a really high title/pay. The latter also has high stress, and I don’t want work to be everything. I believe that teaching is a way to improve communication skills and software engineering skills overall, and I would like to mentor more junior engineers than myself at work. Another option I'm considering is going back to my bootcamp App Academy bootcamp to teach others how to code.