/r/ExperiencedDevs
For experienced developers. This community should be specialized subreddit facilitating discussion amongst individuals who have gained some ground in the software engineering world.
Any posts or comments that are made by inexperienced individuals (outside of the weekly Ask thread) should be reported.
Anything not specifically related to development or career advice that is specific to Experienced Developers belongs elsewhere. Try /r/work, /r/AskHR, /r/careerguidance, or /r/OfficePolitics.
Welcome to the /r/ExperiencedDevs subreddit! We hope you will find this as a valuable resource in your journeys down the fruitful CS/IT career paths. This community leans towards being a specialized subreddit facilitating discussion amongst individuals who have gained some ground in the IT world.
For an idea of what is encouraged in this subreddit and what is not (please report anything that does not follow the rules):
1. Do not participate unless experienced (3+ years)
If you have less than 3 years of experience as a developer, do not make a post, nor participate in comments threads except for the weekly “Ask Experienced Devs” auto-thread. No exceptions.
2. No Disrespectful Language or Conduct
Don’t be a jerk. Act maturely. No racism, unnecessarily foul language, ad hominem charges, sexism - none of these are tolerated here. This includes posts that could be interpreted as trolling, such as complaining about DEI (Diversity) initiatives or people of a specific sex or background at your company.
Do not submit posts or comments that break, or promote breaking the Reddit Terms and Conditions or Content Policy or any other Reddit policy.
Violations = Warning, 7-Day Ban, Permanent Ban.
3. No General Career Advice
This sub is for discussing issues specific to experienced developers.
Any career advice thread must contain questions and/or discussions that notably benefit from the participation of experienced developers. Career advice threads may be removed at the moderators discretion based on response to the thread."
General rule of thumb: If the advice you are giving (or seeking) could apply to a “Senior Chemical Engineer”, it’s not appropriate for this sub.
4. No "Which Offer Should I Take" Posts
Asking if you should ask for a raise, switch companies (“should I work for company A or company B”), “should I take offer A or offer B”, or related questions, is not appropriate for this sub.
This includes almost any discussion about a “hot market”, comparing compensation between companies, etc.
5. No “What Should I Learn” Questions
No questions like “Should I learn C#” or “Should I switch jobs into a language I don’t know?”
Discussion about industry direction or upcoming technologies is fine, just frame your question as part of a larger discussion (“What have you had more success with, RDBMS or NoSQL?”) and you’ll be fine.
tl;dr: Don’t make it about you/yourself.
6. No “I hate X types of interviews" Posts
This has been re-hashed over and over again. There is no interesting/new content coming out.
It might be OK to talk about the merits of an interview process, or compare what has been successful at your company, but if it ends up just turning into complaints your post might still be removed.
General Programming Discussion
/r/ExperiencedDevs
Just started a new job after leaving a FAANG at a bank. I was in the shit for 7 years and the pressure here might be lower but I can't help having panic attacks since I don't know the systems, and I still have the FAANG mentality of GO GO FK'N GOOOOOO.
I don't know what else to say, I'm just out of my head in panic mode.
I work at my current company and team for about 1.5 years. Recently we got a news that product being built in our team is not profitable anymore, with client demanding a lot of complex functionality, but we don't have enough budget and resources for that. Manager decided to dissolve our team, with most of them transfered to his another, sister team, which has much more impact, visibility and resources. But I'm being transfered to another team, which has nothing to do with products, but building internal tools, which I never worked with. This new project is quite interesting, complex and it seems I will learn some new stuff while working there. But I feel sad that my manager didn't offer to transfer to that sister team as others... He always gave me glowing feedback, we seemed to be getting along very well, I had a raise recently as he was very content and happy with my work. I know there could be a lot of different reasons, but doesn't it look like he was disappointed with me or something. This and the fact I won't be working on product development directly made me very upset, but should I be, idk.
I’d appreciate some outside perspective from experienced engineers to help me evaluate a challenging situation.
Context:
The Dilemma:
My Advice vs. Theirs:
Concerns:
Other Factors:
The CEO is open to feedback but wants me to be clear and explicit about my recommendation. Perhaps I'm being too polite. I am deeply sceptical of outsourcing but I'm trying to keep an open and balanced mind.
I want to make sure I’m not letting personal biases cloud my judgment. Should I press harder on the in-house approach, or is it wiser to let the CEO go with the cheaper outsourcing option as a stopgap?
Would love to hear how others have navigated similar situations and what advice you’d offer in my position.
TL;DR:
Inherited a revenue-generating app in poor technical shape, tasked with stabilising it for 10x growth. Fractional CTO advises outsourcing to agencies for infrastructure, PHP dev, and support due to low cost, while I recommend building an in-house team or using on-shore contractors for flexibility and ownership. Concerned about communication barriers, lack of product/QA functions, and potential coordination chaos with multiple agencies. Seeking advice on whether to press harder for in-house solutions or roll with outsourcing as a short-term stopgap.
Hi experience folks,
I am here to check how many of you aware about conde nast.
I need to know how good their product and their culture.
It’s pretty late at night and I want to complain. Not sure if this is the right subreddit but this place always seems like the best place to post negative stuff (LOL).
Oh boy, I feel pretty old now that I am no longer in my 20s. I definitely remember starting out in my career feeling excited to go to work and hang out with co-workers. We used to go out to eat after work with co-workers. Boss had low expectations of me (low salary) so I always had an easy work week.
Not really sure where the years went. Felt like the pandemic years just flew so fast. Most nights it’s hard to get a good night sleep. I work at home 3 times a week out of the 5 work days. I dread attending stand up most days. Then the work week is filled with endless work to get to a goal that senior engineering leadership vaguely defines. After which I juggle many Slack notifications and interaction with engineers and other stakeholders. I empathize, honestly, no complains from me. Everyone has different personalities and goals. I’ve noticed there are some lazy engineers that want to do the bare minimum, toxic individuals that want to make you look bad in front of others, one who wants to take all the credits, or less intelligent folks that insist on doing their way (sub-optimal). As a result, since being a programmer is a team sport, I am force to juggle interacting with different personality types and ensuring I meet my manager’s goal.
Work for most days has been a strict 9 to 5 with some days I should probably extend my work day to meet my goals. My manager will let me know he is unhappy because he will Slack me past 5 PM, 7 PM, and 9 PM complain about something or asking me a random question. The two work days I am expected to work in the office. Traffic sucks. I see my co-workers and I am not happy to see them or interact with them. I have seen the under belly of the corporate world and I frankly believe many people who work in tech are psychopath and narcissistic. The work days end and more stuck in traffic.
Promotion not in sight. Probably all a good sign I should start job hunting (LOL).
Not really sure what I am working for. Buying a nice home is probably out of reach and buying an okay home is probably a waste of my money.
No major complains from me. I am able to live comfortably and have time over the weekends for my hobby. I did get random jobs during college and was able to see the real world. There’s way more BS others are facing than me. A bit of me miss being a stupid high schooler. The adult world sucks.
I've been in the game for over 11 years now, yet I still find myself occasionally plagued with anxiety-inducing imposter syndrome. The other evening, l was preparing for a progress report with my boss and having a particularly hairy barrage of anxious thoughts. I caught myself and wrote down this note:
Just refer to your dev log (a daily journal I keep to track my efforts). You've been working awful hard and have a lot to show for it. Be proud of what you have accomplished.
This immediately helped me calm down, and sure enough, my meeting the following morning went extremely well. Wanted to share this in the event it's helpful to anyone else who may feel overwhelmed by the pressure that being in a higher-level development role can bring.
I have 7 years of experience in Backend Development in PHP, Laravel, CI and Symfony, I switched as an Salesforce Developer 1 year ago but now I need to switch but unable to find job now due salesforce job market, what should I do? Should i go back to Backend or stick to salesforce?
When I work on a feature I find I can often spend 2 or 3x the time writing tests as I did writing the actual feature, by the time I write unit tests, integration tests, and maybe an e2e test. Frontend tests with react testing library are the absolute worst for me. Does anyone have tips for speeding this process up? What do you do and what's your time ratio like?
Software developers should be hired based on their skills, not their location.
For example, a talented developer in the EU, India or Asia should be paid the same as a developer in the United States.
discuss?
IMHO, it's a difficult problem, and nobody really wants to solve it for many reasons, such as political reasons, a lack of resources, capitalism, etc.
It’s true. But I see many good companies don’t differentiate and are paying equally globally.
Quick question, I’m not tech (at least on a traditional sense). Had an interview for an advanced Google position, didn’t get it. In my previous field, I always have the contact info of interviewers (but honestly I’ve only done like a couple interviews in my entire life). So don’t know the culture that well. But in my original field, it’s normal to email the interviewer to say thank you (but optional - nobody really cares). But wondering if I should add my interviewer on LinkedIn and thank him? It’s been a few weeks though. I just thought of this today. I don’t have his contact info.
I already thanked my recruiter many times.
Don’t wanna do anything cringe. Honestly my gut feeling is trying to connect to an interviewer (since it was all done at arms length through the recruiter) is weird. But not sure if I’m missing a tech culture piece?
From 1 to 10, with 1 being mouse jiggling and 10 being "I just dropped a prod db and I need to get it back up before the client finds out", where abouts are you on a usual day, when not in crunch mode?
I'd say I'm at about a 4. I set that pace on purpose, because I don't want to burn myself out. I've had jobs where I had to be at a constant 9 and it was not maintainable.
The reason I ask is that I'm considering moving jobs, and I'm worried that a new place might push me to work at burnout pace again. So I'm trying to see how hard most places push people.
Maybe something about security, or coding guidelines, or workplace dynamics.
In our current PR process, we require a CO approval and one additional approval. Half of my team is in the US, and the other half is in the UK. When the UK team is off the clock and unable to review PRs, we handle them on the US side.
I’m not a CO, and neither is my other US coworker. Over the past six months, I’ve noticed that he only approves PRs after I’ve reviewed them. Sometimes, I don’t understand why he even approves them since he’s not a CO either. If I’ve already approved, that only leaves the CO to give final approval.
It’s becoming frustrating because he only reviews small PRs and approves them before me, but for anything over 200 lines of code, he waits for me to review it first.
What’s a good way to address this? My manager often asks me to take a look at outstanding PRs, so it feels like I’m being relied on more heavily for this work.
Big rant, if you have some advices I'll take them.
I'm working as Frontend engineer. The project is okay interesting, with a big code base which is about 70% legacy, but still in active development in some areas.
I have 10yoe with experience in several aspects of the dev/tech jobs, mainly in startups. My job until now have been to ship fast, put teams together that ships fast, manage teams that ships fast, manage budgets to ship fast... Etc, you get it. Always in web dev, fullstack with large datasets to handle. When changing to my current job, the idea was to get back to an actual engineering job, even if it meant taking a drop in salary.
The issue I have with my current job, is that I'm still considered intermediate level after 3 years. This is because I am producing too much code smells, and my PRs tends to take quite a lot of back and forth to be approved. I kinda get that, code quality expected when shipping fast is not the same.
However, as I told you, the code is quite fragmented. 3 different frameworks in the same code base with js and TS, different coding styles depending on the age of the code, sometime we have even 6 different ways available to do the same thing. Because there is no written standard or tool to define/enforce them (outside of linters), it's quite difficult to follow. When working on an old code, I tend to follow the coding style of the feature I'm updating. But what's expected is to mix current ways with old ones, without refactoring (too time consuming). We have to guess what's the right "new way", as there is several as well.
One engineer in particular LOVES to implement new libs and tools, and the code moves really often. ie: he introduced a new lib to fetch data, we went from "function based fetch or axios or API classes, with or without VueX state management" (that can sometimes be used as is or composed with each other's, with or without functions to compose them together) to Tanstack Query. Tanstack is used only on new things and it's a nice addition, but in 6 months, the way to use Tanstack changed 4 times. With no warning or communication, refactors are done silently, introducing breaking changes everytime. And not everything is reactored. Atm, we have 3 ways to use it, but picking the right one is important. Details are provided in PRs tho, or not, depending on whatever.
When reviewing PRs, sometimes the reviewer changes his mind and the same stuff needs to be refactored several times to achieve different styles. I also have the case where someone approves my PR only for someone else to RFC while the PR is in QA. It happens mainly on my PRs, but also on other ppl PRs.
I made quite a lot of proposals to avoid those situations, by promoting communication frameworks, tools or the creation of guidelines. It always has been declined as not following the team's culture. Which is undefined btw. I had no mentoring when joining, and no real project to work on for several months. I had to refactor quite a lot of old code tho, with no guidelines of what was expected or references to look at. It was full remote, so I was basically trying to figure things out, team mates taking 1 to 2 days to answer questions. Usually with vague answers.
Now I'm used to it, the code I produce is mostly good, even if my past habits are strong af.
Any idea of how I could follow up to those moving standards without reading 10 PRs a day? It's a big team, so we produce around 40 PRs a day, but only a few are affecting my work. Any idea of what to promote to actually fix those "issues", either in my own practice, or to improve the team culture?
Like the title says, I was with an org up until very recently. Spent almost 2 and half years there, no raise. When I started, it was at first an early stage startup where we "wore a lot of hats" and had do a lot of things quick and dirty to land clients. For the first year and a half or so, things were fine. And then leadership changed, we got a new head of Engineering. During my 1-on-1s with him, I'm told different things, I make the necessary adjustments only to be told something else the next time. In retrospect, I should have trusted my gut and took to looking for a job post-haste, but I tried to tough it out. Fast-forward to early Q1, right after coming back from a week of PTO I'm told I'm a "good engineer" and then summarily canned. Moving on to the job search, I suspect my abilities don't match what is expected of a 6YOE Frontend Developer given the current job market. The advice I'm asking for is two-fold.
Given my circumstances, does my self-assessment feel accurate?
I'm split between going for a mid-level fullstack somewhere in lieu of competing for a position where I supposedly have the commiserate experience. TBH this firing has shaken me to the core of my confidence.
Hey ExperiencedDevs! I'm considering a move from a product-based company (where I've been on a single, long-term project) to a service-based company (where projects can be short and deadlines tight). If you’ve made a similar switch:
Thanks in advance!
As per title. Presuming that at least one of the interviewers is an Experienced Dev, what are your red and green flags in a pairing exercise with a candidate to join your org?
I'm wondering if this would be a viable career path. I'm a senior dev with ~12 years experience. 3 or 4 of those years was at a mature software company with a decent tech org. We had a great dev ops group, solid developer tools, good git practices, a mature CI/CD pipeline, did pretty by-the-book agile (say what you will about agile but it seemed to work well for us), and other stuff that really facilitated developer efficiency.
This allowed for devs to come up and face minimal friction for ramping up to making their first code change and seeing it all the way to production.
Since then I've been at a couple other organizations who very clearly did not have any of this. Most recently I joined a team working on a product that had been acquired by my employer and this product was developed entirely by a team in Asia. Those devs in Asia still pretty much own the product but my employer is working in more FTE, US-based devs onto the teams, I'm one of them.
I'm realizing all these things that are missing. For example, deployment is owned by a small subset of more senior engineers (only two or three people spread across a large dev org), QA is entirely manual, most devs have zero access to logs in hosted environments (staging and prod), and various other things like this. (think documentation, git practices, code review, etc)
I think I have a pretty good sense for what could be improved because of my background being on these more mature engineering organizations in the past. I'm also a certified SCRUM master so I can also help with the process of introducing agile practices if that is something the org wants to do.
I'm wondering if I could turn this into some sort of consultancy. Basically a company that acquired a product or built a product using scrappy devs that churned out something fast and drity and wants to integrate it more with the organization to facilitate growth. Basically bring it up to organization-level standards and not just a project that 3 guys worked on in their garage.
Now I don't really have experience actually implementing the things I would be suggesting so I would be more of a person to come in, maybe embed myself with a dev team, point out these areas of improvement and help the company get the product and tech stack to a place where it can more easily scale and onboard new devs.
Can this be a whole job or consultant gig on its own or am I just describing the role of an experienced engineer who is doing all these things plus contributing to actual development of the product?
I know we’ve all been there. We’ve developed a lot of poor quality code that we’re not happy with at all. We all know that the jumpy process of ticket development and out of the blue “urgent” feature requests all leads to significant technical debt. I (6YOE) look at some of the code I wrote even a year ago and I cringe so I always try my best to put myself in the shoes of other developers and usually think it was probably some external factors that resulted in the code becoming difficult to read/maintain but I was asked to look over a codebase the last few days at work and it’s honestly shocking. It is what should be a somewhat simple React app but it is completely unnecessarily using very confusing Redux code while also using standard React Context frequently. It uses state to manage all state half the time and the url to manage it the other half, perhaps this was in the middle of migration to go with the url but there are no comments whatsoever to indicate that. The prop drilling is absolutely insane even though it has a complete overuse of context.
Has anyone else run into an issue like this and what steps did you take to address it, if you became responsible for it?
So I've got about 50 or so repos with a total of ~15 Mloc in them. Maybe 1 Mloc or so under active development (or within the influence sphere of the active development work). My responsibility being defining and looking after adherence to coding & quality standards, DevSecOps processes and general application level security, as well as application architecture.
Any tips on what tools y'all use to keep an eye on such a set of code & code changes?
Naturally we've got the basic toolset (SonarQube, SCA, SAST & DAST from GitLab & DynaTrace, unified deployment pipelines & base images, etc.) up & running and I've compiled a set of scripts to keep an eye on things like change velocity, commit size distribution, commit author distribution, etc. in each repo. Are there any other things I should be looking at or what other tools to use in order to stay on top of how development work is going on the code level in the organisation?
I feel like I know nothing lol. Will it just magically reappear in my head after a week or two? I'm so not looking forward to all the fake daily banter and RTO
Ugh
I may be invited to join pre-seed start up in SF. There is half a dozen of how. I have 10 years experience and have mainly been a front end IC with some lead experience
What sort of compensation range is reasonable to ask for? Outside of SF I making 150k as a dev for IC.
I have an open source library ( MIT license) that a company may soon be asking me about licensing commercially and probably support options.
Aside from a base price, what kind of terms should I ask for and what kind of gotcha things should I watch out for?
An additional complication is that I'm currently an employee of this company.
I'm also interested in referrals to legal experts in this area.
Hey guys,
Where do remote web developers network with others from remote companies(preferably through online events)?
I’ve checked online events from Meetupdotcom, but are there better platforms or events for connecting with like-minded devs?
Thanks!
I'm at a start up where I'm learning a lot of non-engineering skills. People, business, about myself and how to operate a little better, etc. All the soft skills. It's engaging but not my favorite. Comp is also good and that's the bigger upside.
I'm not bettering my technical skills. In previous roles I spent most of my time coding or solving technical problems. My current role is solving a lot of business-side problems. Sometimes with code.
I get that this is common at start ups.
My question is, how do you approach learning when your job takes you away from technical work?
Do you just lean into making it a chapter of non-technical learning? Do you do classes or self-learning outside of work? I would rather not do the latter. Do you alternate priorities when you switch jobs?
Thanks
I made a small comparison between AI code generators to see how a rather objective test aligns with my personal assumptions and I thought to share my results with you because this topic seems like lava here.
For the sake of time constraint, they had one shot with the same input.
GPT got two chances because I forgot that I've been using o4-mini with my custom preferences at first, so I added another run and kept the original as well. Not much difference, though.
Bear in mind that this test is quite a limited one with a single request, but it seems to have aligned very much with how I felt throughout my experience with all 3 tools used in the last couple of months.
Since I suppose that not everyone is interested in the details (at first), I will first provide my conclusion, then list my points of evaluation and finally add the explicit Request and Result content.
For Context, I asked it to help me extract a component from a razor page in dotnet with some sprinkles. No rocket science, but a task most of my previous medium-sized C# teams would easily estimate to 2 hours without any further actions like testing.
Note that I've been using JetBrains IDE for Copilot as well to provide an equivalent environment.
My Conclusion is, of course, highly subjective, however, I was surprised to see how clearly different in communication style the three tools are from each other.
I think these tools should be our assistants and thus "replace junior capabilities" and not act like the know-it-all senior whom we help to achieve what it wants. JetBrains AI seems to aim for the latter.
Based on my personal experience and this quick test run, I think Copilot fits the "assistant" feeling the most, where it does exactly what is asked without superfluous commentary or laziness. It is the true Santa's little elf.
In comparison, ChatGPT proves to be the jack-of-all-trades with its quick and precise answers, but it feels more prone to hallucinate methods that would be great if they existed, except they don't. I think it is better suited for quick researches and conversational processes than immediate code generation.
Last but … well, last and least, JetBrains AI leaves no mark to desire replacing any other AI Tool at the moment when it comes to pure code generation.
Outside the test run, I managed to get JBAI to produce an actual diff commit for suggesting a code change. So, it may have some surprises once they get it working as dreamed, but Copilot's superior inline code-generations still easily beat the familiarity of the IDE API of the AI from JetBrains.
My main problem with JBAI is that it acts as a senior know-it-all, leaving out "easy" code parts and suggesting you to do the sweaty work unless requested.
For now, I would not consider JBAI even if someone already had a JetBrains account as Copilot provides a much neater licensing for similar pricing (you cannot use a business JetBrains AI license with a private JetBrains IDE license, while Copilot is totally cross-functional in that sense).
ComponentBase
inheritance or MudBlazor
usingusings
GlobalLocalizer
importHasError
-based showing of the inner component outside the inner componenttrue
HasError
, but ended up still handling outside only (as should)bind-IsOpen
to avoid having to generate a property and handle IsOpen
logicGiven the complete razor class below, I want to extract the MudCard as "GeneralErrorContent" into a separate .razor.
We need to pass the action of DoRecover into it and the collapsible rework applied to the StackTrace as well:
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ErrorBoundaryBase
@inject ILogger<GeneralErrorBoundary> ExceptionLogger;
@inject ILogger<LicenseException> LicenseLogger;
@if (HasUnhandledError)
{
<MudCard>
<MudCardContent Class="mud-elevation-3">
<MudText Typo="Typo.h5" Color="Color.Error">
👹 @GlobalLocalizer["UnexpectedError"]
</MudText>
<MudText Typo="Typo.body1">
@CurrentException?.Message
</MudText>
<MudText Typo="Typo.body1" Color="Color.Info">
🙈 @GlobalLocalizer["StackTrace"]
</MudText>
<MudText Typo="Typo.body2">
@CurrentException?.StackTrace
</MudText>
</MudCardContent>
<MudCardActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@DoRecover">
@GlobalLocalizer["Recover"]
</MudButton>
</MudCardActions>
</MudCard>
}
@ChildContent
@code {
private bool HasUnhandledError { get; set; }
protected override Task OnErrorAsync(Exception exception)
{
ExceptionLogger.LogTrace(exception, "An error occurred.");
switch (exception)
{
case LicenseException le:
Snackbar.Add(le.Message, Severity.Error);
LicenseLogger.LogError(le, "License error occurred. Snack bar message added.");
break;
case AEException ae:
Snackbar.Add($"[{ae.GetLocalizedKey(GlobalLocalizer)}] {ae.Message}", Severity.Warning);
ExceptionLogger.LogWarning(ae, "AE error occurred. Snack bar message added.");
break;
default:
HasUnhandledError = true;
break;
}
return Task.CompletedTask;
}
private void DoRecover()
{
ExceptionLogger.LogTrace(CurrentException, "Error state cleared, recovery in progress.");
HasUnhandledError = false;
Recover();
}
}
ChatGPT 4o-mini with custom preferences
MudCard
into a separate GeneralErrorContent
component and pass the necessary action (DoRecover
) as well as the collapsible StackTrace, follow these steps:GeneralErrorContent.razor
ComponentGeneralErrorContent.razor
with the following content. This component will handle the error display, including the MudCard
, the collapsible StackTrace, and the DoRecover
action.
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ComponentBase
@parameter bool HasError { get; set; }
@parameter Exception CurrentException { get; set; }
@parameter EventCallback DoRecover { get; set; }
<MudCard>
<MudCardContent Class="mud-elevation-3">
<MudText Typo="Typo.h5" Color="Color.Error">
👹 @GlobalLocalizer["UnexpectedError"]
</MudText>
<MudText Typo="Typo.body1">
@CurrentException?.Message
</MudText>
<MudText Typo="Typo.body1" Color="Color.Info" @onclick="ToggleStackTrace">
🙈 @GlobalLocalizer["StackTrace"]
</MudText>
<MudCollapse IsOpen="isStackTraceVisible">
<MudText Typo="Typo.body2">
@CurrentException?.StackTrace
</MudText>
</MudCollapse>
</MudCardContent>
<MudCardActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="DoRecover.InvokeAsync">
@GlobalLocalizer["Recover"]
</MudButton>
</MudCardActions>
</MudCard>
@code {
private bool isStackTraceVisible = false;
private void ToggleStackTrace()
{
isStackTraceVisible = !isStackTraceVisible;
}
}
GeneralErrorBoundary
ComponentGeneralErrorBoundary
component (or wherever you're using this MudCard
), replace the MudCard
code with the new GeneralErrorContent
component. You'll pass the necessary parameters (HasUnhandledError
, CurrentException
, and DoRecover
) to this new component.
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ErrorBoundaryBase
@inject ILogger<GeneralErrorBoundary> ExceptionLogger;
@inject ILogger<LicenseException> LicenseLogger;
@if (HasUnhandledError)
{
<GeneralErrorContent
HasError="true"
CurrentException="@CurrentException"
DoRecover="DoRecover" />
}
@ChildContent
@code {
private bool HasUnhandledError { get; set; }
// METHODS PROVIDED UNCHANGED
// protected override Task OnErrorAsync(Exception exception)
// private void DoRecover()
}
GeneralErrorContent.razor
:MudCollapse
component, controlled by the isStackTraceVisible
boolean.GeneralErrorBoundary.razor
:GeneralErrorContent
component is used in place of the MudCard
from the original code.HasError
, CurrentException
, and DoRecover
) are passed to the GeneralErrorContent
component.GeneralErrorBoundary
component remains clean and focused on managing the error state.GeneralErrorContent
component can now be reused across different parts of the application.GeneralErrorBoundary
component focused on its core responsibility.ChatGPT 4o default
MudCard
into a separate GeneralErrorContent.razor
component, you will need to move the MudCard
markup and related logic to the new component. Then, you will pass the DoRecover
action and the StackTrace
collapsibility as parameters to this new component.GeneralErrorContent.razor
componentGeneralErrorContent.razor
, and extract the MudCard
from the original component.
@using AE.Common.Domain.Exceptions
@using MudBlazor
<MudCard>
<MudCardContent Class="mud-elevation-3">
<MudText Typo="Typo.h5" Color="Color.Error">
👹 @GlobalLocalizer["UnexpectedError"]
</MudText>
<MudText Typo="Typo.body1">
@Message
</MudText>
<MudText Typo="Typo.body1" Color="Color.Info">
🙈 @GlobalLocalizer["StackTrace"]
</MudText>
<MudCollapse @bind-IsOpen="IsStackTraceCollapsed">
<MudText Typo="Typo.body2">
@StackTrace
</MudText>
</MudCollapse>
</MudCardContent>
<MudCardActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OnRecoverClick">
@GlobalLocalizer["Recover"]
</MudButton>
</MudCardActions>
</MudCard>
@code {
[Parameter] public string Message { get; set; }
[Parameter] public string StackTrace { get; set; }
[Parameter] public EventCallback OnRecover { get; set; }
[Parameter] public bool IsStackTraceCollapsed { get; set; }
private bool IsStackTraceCollapsed { get; set; }
protected override void OnInitialized()
{
IsStackTraceCollapsed = true; // Default stack trace collapse state.
}
}
GeneralErrorContent
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ErrorBoundaryBase
@inject ILogger<GeneralErrorBoundary> ExceptionLogger;
@inject ILogger<LicenseException> LicenseLogger;
@if (HasUnhandledError)
{
<GeneralErrorContent
Message="@CurrentException?.Message"
StackTrace="@CurrentException?.StackTrace"
OnRecover="@DoRecover"
IsStackTraceCollapsed="true" />
}
@ChildContent
@code {
private bool HasUnhandledError { get; set; }
// METHODS PROVIDED UNCHANGED
// protected override Task OnErrorAsync(Exception exception)
// private void DoRecover()
}
StackTrace
collapsible with the MudCollapse
component, it’s already handled in the GeneralErrorContent.razor
file. The collapsibility is controlled via the IsStackTraceCollapsed
parameter.JetBrains AI Pro
// GeneralErrorContent.razor
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@parameter Action DoRecover { get; set; }
@parameter Exception CurrentException { get; set; }
@parameter bool HasUnhandledError { get; set; }
@parameter Dictionary<string, string> GlobalLocalizer { get; set; }
@if (HasUnhandledError)
{
<MudCard>
<MudCardContent Class="mud-elevation-3">
<MudText Typo="Typo.h5" Color="Color.Error">
👹 @GlobalLocalizer["UnexpectedError"]
</MudText>
<MudText Typo="Typo.body1">
@CurrentException?.Message
</MudText>
<MudText Typo="Typo.body1" Color="Color.Info">
🙈 @GlobalLocalizer["StackTrace"]
</MudText>
<MudText Typo="Typo.body2">
@CurrentException?.StackTrace
</MudText>
</MudCardContent>
<MudCardActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@DoRecover">
@GlobalLocalizer["Recover"]
</MudButton>
</MudCardActions>
</MudCard>
}
// ErrorBoundaryBase.razor
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ErrorBoundaryBase
@inject ILogger<GeneralErrorBoundary> ExceptionLogger;
@inject ILogger<LicenseException> LicenseLogger;
<GeneralErrorContent
HasUnhandledError="HasUnhandledError"
DoRecover="DoRecover"
CurrentException="CurrentException"
GlobalLocalizer="GlobalLocalizer" />
// And the remaining original content goes here
@ChildContent
@code {
// Existing @code block
}
GitHub Copilot
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inject IStringLocalizer<Global> GlobalLocalizer
<MudCard>
<MudCardContent Class="mud-elevation-3">
<MudText Typo="Typo.h5" Color="Color.Error">
👹 @GlobalLocalizer["UnexpectedError"]
</MudText>
<MudText Typo="Typo.body1">
@CurrentException?.Message
</MudText>
<MudText Typo="Typo.body1" Color="Color.Info">
🙈 @GlobalLocalizer["StackTrace"]
</MudText>
<MudCollapse>
<MudText Typo="Typo.body2">
@CurrentException?.StackTrace
</MudText>
</MudCollapse>
</MudCardContent>
<MudCardActions>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="@DoRecover">
@GlobalLocalizer["Recover"]
</MudButton>
</MudCardActions>
</MudCard>
@code {
[Parameter] public Exception? CurrentException { get; set; }
[Parameter] public EventCallback DoRecover { get; set; }
}
@using AE.Common.Domain.Exceptions
@using AE.Common.Domain.Extensions
@inherits ErrorBoundaryBase
@inject ILogger<GeneralErrorBoundary> ExceptionLogger;
@inject ILogger<LicenseException> LicenseLogger;
@if (HasUnhandledError)
{
<GeneralErrorContent CurrentException="CurrentException" DoRecover="DoRecover" />
}
@ChildContent
@code {
private bool HasUnhandledError { get; set; }
// METHODS PROVIDED UNCHANGED
// protected override Task OnErrorAsync(Exception exception)
// private void DoRecover()
}
New junior joined and was always offered help consistently. Chase him down often to see if he has any questions or need help. However this junior does whatever he wants. Goes missing sometimes, not very responsive, only does half the ticket and leaves it hanging sometimes. He tends to just push a PR without checking whether his code works so there are many reviews for the same ticket and even when you provide the solution for any errors found in his code review, he only changes whatever he feels like. When you point out issues he gets defensive. I am burnt out from cleaning up his mess. What to do, i plan to tell the manager he might not be a good fit for this role with his current skill set and work habits. Is this too much?
The other devs on the team agreed with me that this junior is an issue.
I’m current an embedded software engineer. Having mainly hardware experience but finally broke into the C++ and Linux realm like I wanted. I got into this job during a merger and was honestly about my skill level where I wanted to break into the field and wanting to learn.
A year or so later, the treatment I get here is rough. Most people here are at retirement age and would not assist me when it comes to help on work. This causes me to look bad but I’m doing my best to pull through. Been thrown under the bus and manager is never on my side. I like the field and what I do but the constant insults and lack of support is killing me. I’ve grown to have thicker skin but just dealing with the constant insults and when defending myself they would just talk over me. My question is, what do I do if there is no support in a smaller company?
As I join a new company as a Staff Engineer— a role I've never held before—what should I prioritize during my first few months? What should I focus on in terms of technical leadership, team dynamics, product ownership, and any new responsibilities that may arise from stepping into a more senior role?
Additionally, what non-technical skills should I be aware of in this role?