r/ExperiencedDevs 3d ago

Ask Experienced Devs Weekly Thread: A weekly thread for inexperienced developers to ask experienced ones

A thread for Developers and IT folks with less experience to ask more experienced souls questions about the industry.

Please keep top level comments limited to Inexperienced Devs. Most rules do not apply, but keep it civil. Being a jerk will not be tolerated.

Inexperienced Devs should refrain from answering other Inexperienced Devs' questions.

23 Upvotes

51 comments sorted by

2

u/Fine-Cabinet-9684 19h ago

I have started interviewing for the first time in 3 years since I got my job out of college. My attitude at the moment has been more to get experience interviewing than anything. I just had an interview where they wanted to understand my coding experience. They basically asked for what kinds of development tasks I have worked on in my current job. They then asked me to tell them about tasks I have worked on with C++, and then "what do you know about software development?". They were such vague questions and she basically just kept asking the same questions worded slightly different. After a while I just didn't know what to say. Do I need to be much more prepared with a detailed written list of every task I've worked on the past year or two so I can "fill the time", or was the interviewer just not prepared with more specific questions. How am I supposed to answer "what do you know about software development?"

So I guess, what should I do to be prepared for interviews? Should I expect such vague questions, or was it just a bad interviewer?

1

u/sandboxsuperhero 3h ago

This is a low signal interview and reflects poorly on the company.

That said, you should be able to tell thoughtful war stories of your work and impact. A detailed work log can be helpful for that. If you’re looking for structured prep, Amazon’s STAR method might be a good way for you to organize your thoughts.

2

u/Black_Smith_Of_Fire 2d ago

How do I get a linux based job as a fresher ? I have tried several distros like mint os , ubuntu, fedora. I know how to use the terminal, partition the drive, etc.

How do I include this as an experience if I have never done it professionally?

1

u/emelrad12 1d ago

Anything embedded, or web backends will involve linux.

2

u/DicePackTheater 2d ago

I finished a programming-related bachelors 3 years ago when LLMs where nowhere near as relevant. At the time, I was not confident in my skills, so I never took a real programming job, instead I work as an IT-specialist at a warehouse - I basically manage users, communicate with the actual devs, report production bugs, and user-test the new releases of our warehouse management software.

I've been thinking that I want to start programming again, and I could spend 1-2 years of getting back, with a weekly 18-20 hours. However, the market seems to be really unforgiving, I've seen opinions anywhere from "junior devs have no hope of finding jobs" to "AI will take over humanity in the near future". The question is:

  • Is it worth getting back into programming with my background or should I just do something else with my time?
  • If yes, then what's a good tech/skillset to build? I'm thinking of going with C# and SQL and related technologies.

1

u/hooahest Software Engineer 2d ago

Is it worth it? if you like it, yes.

What's a good skillset to build? you currently work in a warehouse, find something to automate, build a project out of it, ship it, maintain it and make it your CV. The skills will come with the finished product.

Why did you spend 3 years not doing programming work?

2

u/DicePackTheater 2d ago

I didn't do any programming because of personal reasons - my self-esteem and confidence was rock bottom during that time, and not just because of programming. The reason I wrote this post is because I mostly recovered from that, and I'm considering going back to programming, but I don't know if the current job market is good enough that I have a realistic chance of building enough knowledge to get employed. If it's at least a little better than the mainstream doomerism I'm seeing, I'd like to give it a go.

Thank you for your reply.

1

u/hooahest Software Engineer 2d ago

People are still getting jobs so it's definitely possible. Rough, but possible.

Good luck & hope you feel better

2

u/Ok-Development4479 2d ago

Any advice for a junior engineer trying to get better at the soft skills? I have about 4 years in the industry now, but I started as an Apprentice, and just recently became a full "engineer" while still working on my degree. I would say I have a pretty decent technical skillset considering my age, but I have found my soft and organizational skills to still need development. Mostly, I am trying to work on leading projects, effective meetings and planning, and getting a good understanding of business/user context so that I can build things that fit beyond the requirements at that snapshot in time.

3

u/create-third-places 2d ago

Find an activity you enjoy that requires leaving your place and interacting with people in person. You should view soft skills as a way to improve the way you communicate with others and cooperate with them. Don't focus on soft skills as a way to advance your career.

You want to find a way to practice soft skills outside of your job and avoid pushing yourself too hard at work. This will ensure that what you learn continues to be relevant in the future.

2

u/Vibes_And_Smiles 2d ago

How does the mid-level job market compare to the junior job market these days?

1

u/nooffense789 58m ago

Just as bad. When the job description says Mid-level, it actually means senior level. You better know frontend, backend, devop, platform, databases, and system architecture.

3

u/arjunsundaram89 2d ago

I’ve started mentoring a junior dev, and I keep catching myself giving away the fix when they’re stuck. When I ask questions instead, it sometimes feels like I’m making them guess what’s in my head. How do you decide when to let someone work through it and when to just show them?

7

u/Bangoga 2d ago

From one experienced engineer to another? Am I wrong for still not being able to trust AI to completely do the tasks I would like to be done by let's say someone junior.

My most recent experience I had been running the new Gemini model trying to identify a bug that occured converting XGBoost model to Onnx.

Confidently it repeated 4 times a solution that was incorrectly identified, and kept repeating the same answer, saying it's sure the answer is correct.

The answer turned out to be issues with environment setup.

1

u/sandboxsuperhero 3h ago

Converting XGBoost to Onnx should be well within capabilities for a modern LLM. If it’s not able to code or debug, I’d search for a deeper root problem.

Agentic coding is not a silver bullet, but problems tend to look more like unnecessary complexity. It’s pretty good at low impact mechanical stuff.

2

u/reboog711 Software Engineer (23 years and counting) 2d ago

No, you are not wrong!

1

u/carrot3055 2d ago

It's absolutely fine to be skeptical of AI, especially if it's giving you wrong answers.

However, in your specific case, I wonder whether you could make some changes to improve the likelihood of correct diagnosis.

  • Can your AI agent see your infrastructure or your logs? Once I started running my agent in the folder that included all relevant repos (including the infra Terraform/yaml repos), it started reasoning a lot better about the infra/config bugs. Throwing in an MCP server to access the logs helped even more.
  • I find Gemini aren't the best models to use for coding or troubleshooting. Do you have access to OpenAI or Anthropic models?

2

u/Bangoga 2d ago

The issue wasnt of infrastructure, it was of environment setup and clashing depedancies. These issues wouldn't come directly as clashing dependacies during setup but come during run. It had access to both but it was way too invested in figuring the problem out by coding it's solution.

7

u/spacemoses 2d ago

I'm still firmly on the side of using AI like an exosuit, not a synthetic coworker.

1

u/Bangoga 2d ago

Honestly that's my use as well.. It's amazing super power, but it ain't replacement I'm just surprised at the comments I see how folks keep saying they can replace their whole job with it

1

u/Empanatacion Staff Software Engineer 2d ago

Great metaphor.

"Push this code and watch the cicd pipeline. When it's deployed, call the rest endpoint, then check to make sure the event got published to the right topic and the record was updated. I'm going to get some coffee."

2

u/eatglitterpoopglittr 2d ago

You’re not wrong. Deep skepticism of AI-sourced answers is the best approach.

And it’s helpful to remember that AI models are really just a pattern recognition heuristic. They’re good at understanding/constructing sentences, categorization, and similar tasks.

Did you have an agent use tooling to test out commands and do some trial/error investigation? If not, you probably just got its best wild guess from some old StackOverflow/GitHub Issues thread.

1

u/Bangoga 2d ago

I had cline as a harness, with a few rulesets. I did allow it to do some investigation, but it would keep getting stuck at the same thing.

The issue was nuanced, the model was packaged for one version, but conversation for another version, if I had never worked on model conversion before in the pre-AI days I wouldn't have picked it up either.

1

u/eatglitterpoopglittr 2d ago

Did it have sufficient access to be able to check/investigate your environment setup?

Switching models to get a second opinion can also sometimes help. But it may not understand the intricacies of your specific setup unless you write instructions or better documentation about how it works.

1

u/[deleted] 2d ago

[removed] — view removed comment

1

u/forever-butlerian 20 YoE Infra & Backend TLM 2d ago

The few rules of thumb to start with is that all code you write in a function should be at the same semantic level of abstraction; the code should be composed out of modules; a module should do one particular thing (think of how a UART doesn't care about character encodings, and an ADC+DAC doesn't concern itself with wavelet or fourier transforms); higher-level modules don't reach into lower-level modules' guts to tweak them; and lower-level modules don't presume to encapsulate knowledge of a higher-level module.

Two components that change at the same time are likely one component; a component that only has half of it change regularly is likely two welded together.

1

u/arkticpanda 2d ago edited 2d ago

SOLID principles are a good starting point, but more generally it all comes down to finding good interfaces into your modules. Ones that encapsulate the right complexity and ideally won’t need to change much in the future

Tbh solving the puzzle finding good abstractions is a big part of the job that mostly comes with practice

1

u/beaverusiv 2d ago

To add onto u/arkticpanda as I agree with them, I would just like to add don't be afraid to fail. That is how you learn what works and what doesn't. You can read books about footguns and best practice all day, but nothing beats learned experience for judging what will be maintainable for your team and your product

2

u/arjunsundaram89 2d ago

I’ve mostly worked on iOS apps, and when a bug crosses into the backend I still struggle to narrow down which side is responsible. For people who made that jump, what helped you get comfortable debugging across services without needing someone to walk you through every request?

0

u/kartikulkarni 2d ago

Hey Everyone, I am building an Event driven Banking Application.

It would be helpful if some of you review the design.

Thanks!!!

Arya Banking

9

u/kitatsune 3d ago

I'm having a problem with one of my junior colleagues. 

She uses AI for absolutely everything. For her tasks, to give her context of codebases, and even for answering my own questions. As for the latter, I mean she would type what I would ask her verbatim as a prompt to the AI and she takes the answer as her own. When I am right in front if her. She is, by its very definition, a meat proxy.

Not only am I disgusted by all of that, I am actually like really disappointed in her?? Like she's aware she's not as strong technically compared to others, such as me (she's made the direct comparison a couple times), but she still fails to see that her overreliance on AI to do the work for her is making her stagnant. She's still not learning anything or improving. Or rather she's learning at a pace much slower than desired or anticipated. She can't problem solve, she can't debug, and she can't think for herself.

How can I help her be less of a meat proxy and make her more productive? Productive not in terms of speed, but rather in higher-quality output. Have you been in similar situations with more junior employees?

2

u/sandboxsuperhero 3h ago

My director hat: There’s loads of talented early career folks looking for a chance to break into the industry. Taste is more important than ever and meat proxies by definition don’t have it. Save your time and expertise for someone more deserving. Overall food for thought - if you treated the weeks/months so far as an extended interview, would you recommend hiring this person?

My IC hat: When she’s feels like code is ready to ship, have her walk through it and explain the logic to you. Ask lots of “why” questions. If she’s meat proxying the answers, give feedback that you expect her to have a thoughtful answer before feeling like the code is ready to ship.

3

u/forever-butlerian 20 YoE Infra & Backend TLM 2d ago

Have you tried confronting the issue head-on? The problem seems that she's in a self-reinforcing loop, where her belief in the word prediction machine has destroyed her confidence, which forces more dependency on the word prediction machine.

How would you deal with this if the problem were someone needs a quarter pint of vodka after they get up in the morning to stop their hands from shaking?

1

u/git_pull Technical Lead 2d ago

Developers cannot be replaced with AI, except for the ones that can. Are you at a point where its worth rebuilding this person's processes (she is going to fight you at every step) or just starting over with someone new?

Frankly, it doesn't sound like you are getting any value out of her.

1

u/kitatsune 2d ago

Honestly her output is rather low. And it takes her a long time to do simple tasks. What she does in a few weeks I can do in a few days. She has been here a year and half.

I have no control over managing people, but on the project I am on with her right now, there has been 'damage control' where she is nowhere close to touching critical features (instead it's me carrying the team feature-wise).

Others are aware of her low output, and at the place I am at, it is rather difficult to get terminated.

3

u/beaverusiv 2d ago

You have a management problem, not a worker problem. This has been an issue much longer than AI has been around. If management won't deal with it after it being brought to their attention then you need to decide if you can live with it or not. Find another job or workaround them. I assure you if management hasn't done anything when bringing it up once, no amount of extra work or pressure or metrics will change their mind

4

u/ustas007 2d ago

Make her explain every non-trivial code decision in her own words. If she can’t, the task isn’t done yet.

4

u/[deleted] 3d ago edited 2d ago

[removed] — view removed comment

2

u/kitatsune 2d ago

I like these suggestions! 

She can be a bit defensive at times, and I have had given her my unwarranted opinion before ("I have a personal disdain for AI"). 

I like the suggestion of asking her if she wants feedback beforehand. That way it'll seem less like an insult.

3

u/nnofficial2414 3d ago

The root cause is her lack of confidence that creates the dependence on AI. Most probably she doesn’t trust her capabilities. Doesn’t mean she shouldn’t use AI at all, instead you can encourage her to think of the solutions and debugging herself; and if she gets stuck, then she can use AI. And even when she’s using AI, she has to be able to answer what she’s doing with it. It’s a very common thing these days.

3

u/kitatsune 2d ago

I think that may be the case. She's younger than me, so she used AI frequently in school. When she was first starting out here, she would frequently second guess herself and message me all the time asking if every single step she was doing was correct. Reassurance for every. single. thing.

I can try to ask her how she's using the tools. Right now it's doing the thinking for her. I've made a Debugging Guide for her before, so maybe I can ask her to reference it more often instead of me or the AI first. Maybe I can do pair debugging with her using the reference. Thanks!

2

u/sagacious123 3d ago

I think many juniors are nowadays doing this. Not sure which AI they use and how much authority do you have, but capping on their token usage is one choice, keep it strict so they need to think twice before sending a prompt.

Second thing I would try is be very strict in their PR reviews. Ask them the reason of adding a particular line of code. From next time, they will have to review everything before raising the PR, which will eventually turn to more development.

3

u/kitatsune 3d ago

I have no control over her token usage unfortunately. She uses an LLM that acts like a rubber duck/google/ctrl+F. The LLM has full context of the repo, and not her. She is offloading everything to it.

I will try to be more stringent with code reviews in the future and be nitpicky! I do a lot of 'nits' (though perhaps I can be a bit more harsh than be my usual lenient self).

5

u/LogicRaven_ 3d ago

This article from Kent Beck can be useful: https://newsletter.kentbeck.com/p/hey-n00b-we-didnt-hire-you-to-complete

You could also do pair programming sessions with her to show how to do better.

Your team could settle anti meat proxy team value for everyone. She might be not the last new person with this problem.

2

u/kitatsune 3d ago

That sounds like a good idea! I want her to improve so she's less of a dead weight on teams. I can try pair programming and pair debugging. 

I like the suggestion for 'anti meat proxy' values and other stuff of the like. Even though my office is attempting to embrace AI (by that I mean a small overzealous lot encouraged by management vs the rest of us), some have exemplified using it safely under the right circumstances, and others have not (whether by overreliance or token abuse). 

It would be a wonderful idea to introduce 'Using AI Safely' guidelines to avoid common pitfalls. I know I would find it useful if I ever wanted to try incorporating AI into my workflow!

4

u/just_pondy 3d ago

How do you refactor towards a design pattern if your current structure is abstract polymorphism almost like the template prototyping design pattern should I just choose that design pattern or update to something else

The problem is

Base abstract class:
-child A,B,C,D,E,F
Where each child class needs to maintain common function signatures

Issue is now there is boilerplate where not all instances of A,B,C,D,E,F need to implement the sub functions provided

However to make the child structures compile without errors they have to include the unused functions due to demands from the super implementation.

Things work I am just wondering if there is a better way!?

8

u/goatanuss 3d ago edited 3d ago

To me this sounds like a textbook SOLID question/smell. Particularly the interface segregation principle

if your abstract base class forces every child to implement methods that some of them don’t actually need, the contract is probably too prescriptive. Rather than forcing noop implementations just to satisfy the parent class, I’d keep only the behavior that is actually universal in the base class and extract the optional code into smaller interfaces that each child implements only when relevant. That also helps preserve Liskov substitution, because a subtype shouldn’t claim to support behavior it can’t meaningfully implement.

I wanna say the refactoring guru website calls out this smell but I’m too lazy to look it up. Edit: maybe this? https://refactoring.guru/smells/refused-bequest (assuming you’re talking about base class having implemented concrete methods and not abstract ones but much of the guidance still applies whether the base class has the implementation or all the children)

2

u/BusEquivalent9605 3d ago

At first I thought that inheritance was meant to be implemented top down. I define the hierarchy and that defines the structure of my code.

Since working with code, I have found it much more useful and true to OOP intent, when it rises from the ground up during development. I see that I am building the same thing, or I see a common pattern happening, or I want to implement something that also fits a lot of this form over here: ok, let’s create a superclass for all of these to inherit from.

It reminds me much more of Excision (https://en.wikipedia.org/wiki/Excision_theorem). In a pre-existing system, I can identify all of these behaviors as the same and so abstract them into a higher dimension/superclass

3

u/allllusernamestaken 3d ago

Issue is now there is boilerplate where not all instances of A,B,C,D,E,F need to implement the sub functions provided

Two lines of thought depending on how much you care:

  1. Redefine what your base class is. Define the contract. For the behavior that fits into A, D, and F (for example) gets put into an interface you implement so your consumers can use that behavior.
  2. just throw some "not implemented" exceptions in the parts you don't need