8

I've done three internships (4 months each). My grades in university from Software Engineering were so-so - I've always done well and had a good grasp of our labs, but I test horribly.

My biggest weakness is that I'm not a good programmer in the sense I am often crippled by anxiety, preventing me from mapping and planning out projects and getting started. As someone who has played countless instruments, I understand that practice is required for mastery and I feel that programming is no different. When my programming experience is limited to just labs, I feel that it isn't necessarily representative of the real world.

Regardless, I was hoping my 3 internship experiences over the course of my bachelors would give me the confidence I needed. So far, working at 3 different corporations, my role has been tasked in simple coding tasks/bug fixes and I've noticed that I'm...much slower than the other interns. Implementing a UI feature took me a week and during one of our Agile standups, another engineer made a remark after a colleague congratulated me saying "...what? that's it? that's all he did?".

I thought I had the skills based on the labs and reports I've done in academia, but

My last internship was abysmal. I wasn't given any concrete tasks so I just decided to be proactive and go into their issues and attempted to fix bugs in their codebase (which was almost 15 years old). Most of the time I just spent my time mindlessly sifting through undocumented code, not knowing where to even start and trying to debug something so massive without any guidance that in the end I just resorted to doing QA work just for the sake of reducing their backlog.

I guess the advice I'm seeking from other software engineers is their own personal experience and what was it that propelled/inspired them to the discipline - what made you realize that you have something to contribute?

Because from my experience in my last three internships, the feedback I've gotten were neutral. To be quite honest, I'm not even sure if I am even worth the salt to be hired as a software engineer.

4
  • 6
    "n the end I just resorted to doing QA work just for the sake of reducing their backlog" -- you reduced their backlog as an intern -- I think that is a success in itself. -- As for the whole post, you are suffering from imposter syndrome, it is something that is very common. You seem like you know the basics. Speed will likely come in time. – さりげない告白 Feb 2 '20 at 15:11
  • 2
    QA is a valuable field in itself. you can make an entire career out of it. – Simon B Feb 2 '20 at 17:20
  • Neutral feedback -> average developer. Consecutive Negative feedback or repeated rounds of realigning your targets setup by your manager should get you start reflecting, not neutral feedback. Not everyone can be outstanding especially at the beginning of their career. – Frank Hopkins Feb 3 '20 at 8:03
  • I think you will profit very much from working on (bigger) open source projects on github for example. If you are working on some projects in your free time, you have no time pressure and that makes learning easier. Pick a project that fits your programming stack. Ask for help. Update the documentation (if its not helpful). Ask for mentoring. You will be helped. You are only getting better from here. Take care – a1300 Feb 4 '20 at 11:04
13

It sounds like you've got a case of imposter syndrome which is so common, the Harvard Business Review wrote that article in the link.

Take a few words of wisdom from an old graybeard self-taught hacker.

EVERYONE IS FAKING IT

Every last person in IT from the infancy of the industry has been making it up as they go. IT is more of an art than a science, requiring as much creativity as a musician, as well as the reasoning skills of a scientist. We are all remarkable in some way, and so many of us (including myself for many, many years) feel like we aren't as good as others think we are, or that we could, or should be better.

Often, we are our own worst critics.

Your last internship was FAR from fruitless. What you call a disaster, I call someone who, rather than accept the fact that they weren't given direction, found work to do, and took the initiative to do it.

The industry LOVES people like you.

You're hungry, and you want to do/learn more. Keep that hunger. You will be fine. You've got the right attitude, which is 99% of being there. Everything else, just do the best you can, and be the best you can be while you continue to improve.

3

Looking at the objective facts in your post, I am not sure you have reason to be concerned.

  • You are about to get a degree in software engineering (+)
  • You have work experience (+)
  • Some interns were faster than you (-)
  • You were unable to fix bugs in complex legacy code on your own (very slight -)
  • You were congratulated on your progress (+)
  • Somebody was surprised you did not accomplish more (-)
  • You are aware of your shortcomings (+)

I am seeing 4 positive and 3 negative things in this list. This matches the "neutral" feedback you have received from your employers.

In addition, all the negative things look fixable:

  • Speed comes with experience and knowledge.
  • Debugging complex code is a matter of technique. In the small programs you have debugged so far, reading attentively through the entire code is often enough - but as you have found, this approach doesn't scale to large programs. Instead, experienced coders will devise means to test which part of the program the bug must be in, and by doing this repeatedly, narrow down the bug to a very small part of the code base. That's a new skill you did not need so far, and that you have probably never been taught, so it is not at all surprising you did not succeed at the first try.

and since you are aware of these things and motivated to fix them, you are in a much better position to improve than people who are not.

In my experience, the ability and desire to reflect on one's shortcomings is more predictive of career success than "talent".

Overall, I don't see a reason to be concerned for your career success, and I would not recommend giving up on your chosen career over one bad internship. Particularly if that internship involved zero mentoring.

Advice for feeling like a fraud

Fraud would imply deception.

If you are honest about your abilities, and people still give you job, consider that they might be right. After all, you are not the first graduate they hire, and their understanding of what constitutes a normal level of skill for a graduate might be better calibrated than yours.

Advice for overcoming writer's block

I am often crippled by anxiety, preventing me from mapping and planning out projects and getting started

I have found it helpful to remind myself that the first draft need not be perfect, because I can always revise it later.

2
  • Also debugging random bugs in a complex legacy code base and doing so because you have no concrete task sounds not like a bad intern but really awful intern guidance/management! If you pick the wrong bug an experienced programmer that just starts with the project will have no clue either. They might be confident enough to bother others long enough to get the right information and find out how and where to start to begin with. That level of assistance (i.e. introduction to codebase, picking "easy" bugs) however should come without asking for an intern. – Frank Hopkins Feb 3 '20 at 8:01
  • I failed to get a query for a feature right for well over a week for a relatively simple dataset because the source data is a mess. I on average fail 10+ times an hour. I use each failure to determine the next area to fix. Software engineering is a recursive task where you fail and alter until you succeed. There is no such thing as a first draft because it is a constant state of improving. Speed will come when you encounter the same pitfalls repeatedly and learn to avoid them. – IT Alex Feb 4 '20 at 16:03
1

A very difficult question, a very simple answer:

Start your own software projects in your spare time (e.g. on saturdays/sundays)

Because you do not only have a lack of confidence, but even more so a lack of practice (speed = practice, that's it).

Still, software engineering is not just another job, its a way of life, being constantly on your edge, improving, learning, trial & error all the time.

You should rather ask yourself, what you really want to do in your life: Just have a simple office job, or being creative and create something new, some software other people will have a lot of fun with, or least they need it to do their daily business (which should be satisfying as well).

And finally, if you don't like the common software companies, try to join a startup!

EDIT:

My grades in university from Software Engineering were so-so - I've always done well and had a good grasp of our labs, but I test horribly. [...] My biggest weakness is that I'm not a good programmer in the sense I am often crippled by anxiety, preventing me from mapping and planning out projects and getting started.

I tried to write a simple answer to your very difficult question. However, you might want to ask an experienced developer about those test problems you had: Modelling and mapping is much more important than planning, because the latter comes with experience. But if you're unable to grasp what ERM's or state charts are, you might want to ask someone to explain it to you. If you don't master the tools, then you will not master the craftsmanship either.

And finally, as a rule of thumb: Always ask first what the requirements for the projects are and record them well before even thinking of starting to plan, map, model & code.

0

I've been working as a software developer for seven years - and one of my key learnings of the last couple of years is that software development requires all kinds of people.

The immediate thing people think of is the gun '10x' genius developer, or the 'clean code, best practises' developer - and yes - generally it's good to have those developers on your team making sure everything is going right.

But at the same time - what companies also need are developers who are going to stay there, and do the grind work.

Also, in my opinion, good development teams will have a manual QA process - as well as automated tests.

This might be a bit cynical, but in my experience I've seen that a lot of codebases are a 'copy paste' rather than abstraction type pattern - and where the 10x or clean code developer will want to avoid or fix that, it's the grind developer that's actually going to be able to work on that codebase.

So my advice is - don't compare yourself to what 'everyone says' makes a good developer. What are the things that you are good at and enjoy doing? Do that.

0

You are not a Fraud.

Because you have had three internships doing software engineering. Which a lot of students doing computer science do not always get the opportunity to do so. Plus, if you were a real fraud, you would have not even gotten those internships in the first place. Because everyone knows that interview problems for software engineering are not easy to solve. Plus, they are designed to weed out candidates.

Honestly, you are fine, you just sound like you have a lack of confidence in you're skills and you're anxiety is getting the best of you. Which you should get treatment for. Everything is going to be fine for you're future career.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .