0

This question already has an answer here:

I have been working for my current company for 5 months. I work as a software developer, I also fix some bugs on the company's web if I'm asked it.

Some background:

I've studied IT, but nothing developing related: I did a network degree, but we studied Java very briefly in one of our "free" subjects and our teacher sent the best of us to programming companies for the internship (since developers are very demanded in my city at the moment).

I did my 3 months of internship there and they extended my contract for a year. It was a little company (I was alone at first, we were 5 at the end of my contract) and they started dropping us for money reasons. That was 2 years ago.

Then 5 months ago my mother told me that one of her friend's spouse is the boss of a good company here. I went to talk with them (it wasn't a proper interview at all) they asked two minor things about me (what did I studied and what technologies I know) and even with my non-related studies they said that they will try, and I started working there.

The problem:

Lately I've been asigned some bigger tasks and I'm having trouble fullfiling them. I don't like asking too much (but I do if it's necessary and I'm stuck for too long), and I can't stop feeling that I don't know how to do anything. Even the minor problem I encounter when trying to resolve a bug makes me think that I'm here because they overestimated me and they'll drop me if I take one day more doing something.

They had say me more than once "you're fast!", "you're pretty clever" or "you explain yourself very well", but when they asign me a new work I start to think that I'm useless and I can't do it again.

I suppose I'm not the only one feeling this (I'm 24 years old, and in my culture it's not so common to be employed that young and fresh graduated) and I don't know what to do anymore.

How can I stop feeling useless and evade that kind of thoughts in the workplace?

Also sorry if my English is messed up.

marked as duplicate by gnat, Dukeling, JasonJ, DarkCygnus, Jane S Oct 25 '17 at 0:29

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2

It's common to feel that way when you start on your firsts jobs. What you should understand is that in this part of your career it all about learning new things. As long as you are not 100% depending on your coworkers and take your time to investigate for yourself you will be fine. You already got compliments so keep it that way, its a good thing you got this concerns, because it means you care enough but don't let them make you feel bad about yourself. This happened to all the people in your position

1

Nobody starts out as an expert at their chosen profession

It takes around 10 years to gain real competency in a professional discipline; not just in IT/Software engineering, but just about any complex field (e.g. Medicine, Economics, Particle Physics, Structural Engineering, etc).

If you are receiving positive feedback about your technical ability but still feel like you're struggling against the expectations of your employer in order to deliver results "on time", or you feel that you are unable to complete the tasks set by your boss or hit a deadline imposed by a customer then the most likely problem isn't with your technical skill but your communication skill.

Your boss and employer may have expectations of what you're able to deliver and when. The person responsible for managing those expectations is you. If you don't manage peoples' expectations of the work you're doing, then those people will make up their own assumptions (If on important subjects like estimates and workload, they may also hold you to those assumptions).

In general, you can take off a lot of pressure by communicating often with your boss and/or your team - especially when you hit an unexpectedly time-consuming problem, or when you feel an estimate is wrong, or some information is inaccurate, or a requirement is wrong, etc.

  1. Firstly, when you don't communicate, everybody in a professional environment assumes that nothing is wrong (Because, surely, if there was something wrong, you'd talk about it - right? Don't just wait for somebody to ask you...).
  2. Secondly, if you involve others in difficult technical problems, then you'll be drawing on a greater pool of ideas and knowledge where you may learn something new, or you might at least rule out a few options.
  3. Lastly, communication is a sign of maturity and competence. The best developers collaborate, discuss problems and share knowledge with others; they also check their assumptions because assumptions are BAD.

If you find yourself spending a lot of time on a single technical problem, people around you will feel more confident in your ability if you are able to provide more substantial detail about it. For example, consider some of the information that your boss/co-workers might find useful (Hint: it's similar to the kind of information that you'd hope to find in a highly-rated question on StackOverflow):

  • What do you understand about the problem so far?
  • How have you been analysing the problem? which method/tools?
  • What assumptions are you making about it?
  • Which solutions did you try that sent you down the wrong path or hit a dead end?
  • What are the impediments to your progress or blocking issues? - e.g. tools which are hard to use, documentation which is wrong or hard to understand, tests which are very time-consuming, faults which are hard to reproduce, etc.
  • Also, make sure you keep an eye on whatever solution(s) you're trying; sometimes all you need to keep a customer happy is a quick-n-dirty hack.

Software development can sometimes be an endless quest for knowledge, whether you're at the start of your career or a seasoned expert. (That is, unless you end up pigeonholed into some long-term maintenance job for years without ever picking up new tools/technologies/etc.)

Sometimes you'll spend 3 weeks understanding an obscure bug or "impossible" problem only to fix it with one line of code. Those 3 weeks aren't wasted - they're spent learning some new tool(s), technique(s), understanding a new technology, or even picking apart your team's codebase to better understand how everything fits together.

Time spent on problems which are 'difficult' for you may be frustrating at the time, but there's nearly always something to learn which is beneficial in the long-run. At the beginning of your career, this is even more true; most employers don't expect junior developers to know everything - they expect junior developers to spend longer getting things 'done', while learning new things along the way.

Not the answer you're looking for? Browse other questions tagged or ask your own question.