8

I will soon graduate and have done some internship and am currently working as a web developer on the side (fullstack with Angular and Spring/Asp.net).

I have 3 years of experience (only in my college time - I have not worked full-time yet) but I feel like I am really bad at programming.

I love to code and do coding in my free time but when it comes to coding at work, I feel lost. First of all I need very long time to solve my issue and and it needs to go through many reviews. I always ask for help because I don't understand things. The code in the company is very complex with a lot of dependencies, design patterns and so on. I always need a lot time to analyse and debug.

My team is not satisfied because I am slow and ask a lot. Of course, I am still learning and still a student but they expect a lot from me and I feel like I am useless. My code works but it is not clean. For a one-day task I need 3-4 days maybe. I have problems finding the solution by myself and always have to ask or look up at stackoverflow etc,.

What can I do to become a better developer besides practicing? Is it normal that you cannot program well after graduation or is programming for everyone? If you have a degree in CS, does it means you can automatically code? My team lead also asked me what I do in university because he is kinda dissapointed of my work.

7
  • 11
    your "question" actually has no question. What do you expect from us? What information do you need? You explained your current status, but we still do not know how we can help. Please edit your question and add the missing information.
    – virolino
    Commented Oct 27, 2022 at 6:08
  • 5
    I realise you say you have 3 years experience, but could you please clarify how long you have been at this current programming job? Also, I did a Computer Science degree and frankly the amount of actual programming we did was negligible. It doesn't automatically translate that you do CompSci therefore you're the greatest developer ever.
    – ThaRobster
    Commented Oct 27, 2022 at 7:37
  • 10
    "My team is not satisfied because I am slow and ask a lot" - your team has unrealistic expectations. My expectation of a graduate developer is that they have basically zero applicable development skills, and that they'll learn on the job. You say you have 3 years experience, but that is 3 years of study, not three years of actual industry experience, right? Even assuming you interned every year, I would not necessarily assume that having been of much use. Commented Oct 27, 2022 at 12:43
  • 1
    Did you sell yourself as having three years experience? Because it rather sounds like you don't (having some side-jobs in college might give some experience, but it is not the same as three years full-time experience). You might have oversold yourself, causing your team to have too high expectations. Commented Nov 8, 2022 at 11:11
  • 2
    Programmer here. Honest insight into your weakness is critical here or there is almost no chance of improvement. What is your weakness? Are you organized? Do you have memory problems? I take lots of notes and use Tiddlywiki to organize them. That way I can look up how I did things and do it better next time. Are there things you don't understand? Maybe this company is not a good fit for you. I had that problem too, so I left.
    – user77853
    Commented Nov 9, 2022 at 18:50

6 Answers 6

21

" Is it normal that you cannot program well after graduation?"

It's not just common, if you CAN program coming out of school, you are the exception, not the rule.

It's not your fault, the schools focus on theory, not practice. This has been true since I went to school in the 1980s. There is even a an old joke that everything that actually works in the business world would get an "F" if turned in for a college project.

You need to learn the business, best practices, managing expectations, and go to YouTube University to fill in the blanks.

The hardest thing you are going to come to terms with is "Good Enough", bad, but working code, delivered on time is better than elegant code delivered after the deadline.

If you are slow, you are likely second guessing yourself or trying to be perfect.

There are plenty of free online help sites, don't waste time panicking, break off and get the answers, you can look things up faster than you can figure things out. But you need to learn practice over theory

9
  • 8
    "The hardest thing you are going to come to terms with is "Good Enough", bad, but working code, delivered on time is better than elegant code delivered after the deadline." Completely agree with this statement. I've been doing this for ...somewhere over 10 years now and I still fight with myself daily on that. "Perfection is the enemy of progress"
    – user83977
    Commented Oct 27, 2022 at 16:23
  • 2
    Almost nobody cares about "elegant code". In addition to that, beginners also fall into the trap of trying to impress people and do stupid things like use nested ternary operators... don't do that. Split it up, keep it simple, then don't think about it. Review it after 2 weeks and if you have no idea what is happening, it's too complex and needs to be simpler. You absolutely must keep things simple, so that you don't waste time to reverse engineering things. I've done that plenty of times, on my OWN code!
    – Nelson
    Commented Nov 1, 2022 at 1:44
  • 2
    @JaredSmith where YouTube University actually means Stack Overflow 😉
    – RedSonja
    Commented Nov 10, 2022 at 11:45
  • 1
    I have to agree, I have been programming for 40 years and 1) I still ask questions, especially if I'm working on code I've never seen before, 2) Your education is nice, and hopefully you'll find someone who can mentor you and break all the bad habits they taught you, 3) if you want to become a good programmer, pick a language, find a project and work on it. Most of us in the industry for a long time have gotten good because we've done the same thing over and over again.
    – Hank
    Commented Nov 11, 2022 at 17:25
  • 2
    @RedSonja Nah, you get rushed, incomplete snippets from SE. To really grasp a concept, YouTube is better. Commented Nov 14, 2022 at 12:46
13

I love to code and do coding on my free time

This is all you need. 3 years is not that long of an experience and big projects can have difficult codebases to work with. I worked on a 8 year old monolith for 3 and a half years and knew what I was doing only on tasks that were on a particular area of it. It's almost impossible to know an entire project that a lot of devs are building on day in day out.

I bet you heard this already, but there is no shame in asking for help. It's what you should do if it's unfamiliar code, whether you are a junior or a senior. More context on it will save you days of digging on your own.

On the other hand, if the other devs are rolling their eyes when someone asks them for help, that's another issue and it's not you that is the problem.

If you love to code, and like your current position, I suggest you find a good colleague who is willing to share some of his experience with the project, share what he thinks would be useful things to learn, and there has to be some documentation that would help you improve your understanding of what does what on that project. Also, take notes! Good notes will save you a lot of effort over the coming years.

Looking for a good solution online is part of your job. Imagine if we had to know all that stuff by heart! It's why stackoverflow exists. It's up to you to build up experience and be able to tell what would work for you and what is actually a good solution (not all the answers are good, some are outdated, even the highest voted ones).

Another thing, from my own experience. Do not put too much pressure on yourself! Try your best to stay as chill as possible, pressure can only have a negative effect on your efficiency and will to work / learn which in turn creates more frustration and pressure and so on... Keep calm, keep working on your skills and your understanding of the project and you will do great.

Best of luck!

6
  • "3 years is not that long of an experience" - I highly disagree. Most people are already seniors after 3 years, or at least close to becoming seniors - at least with regard to skills and experience. Also: "Do not put too much pressure on yourself!" - actually, if 3 years were not enough to even start becoming a developer, then it is the time to put significant pressure on yourself, to find another job, more suitable...
    – virolino
    Commented Oct 27, 2022 at 8:57
  • ...To like programming, and to be suitable to become a developer, are two totally different things. One is about what makes you fell good, the other one is what others expect from you, in order to generate profit after paying the salaries.
    – virolino
    Commented Oct 27, 2022 at 8:58
  • 7
    Someone with 3 years experience who is called a senior can only be that in title, but we can agree to disagree.
    – Joker21srb
    Commented Oct 27, 2022 at 9:15
  • 1
    Set aside the "titles" issue. If someone does something 40 hours a week, for three full years - yes, they should be getting good at it. As virolino says. This applies to playing the guitar or writing software, and almost all other things. (It's unclear if the OP actually means he has literally been programming (not college, that's irrelevant) for three years.)
    – Fattie
    Commented Oct 27, 2022 at 13:23
  • 3
    @Fattie Yeah, I am also assuming he didn't spend all 3 years on his current job and also taking into account that he's still in college. To me, it sounds like these are not "real" 3 years relative work experience, but it would be great if the OP clarifies this.
    – Joker21srb
    Commented Oct 27, 2022 at 13:47
2

As a fellow person with a Masters in Computer Science, I will tell you that education in Computer Science is almost completely useless when it comes to production-level programming in the workplace. I had the exact same situation as you coming out of school, and I was fired from multiple jobs for underperformance due to it Eventually I found a few positions in which I was allowed and assisted to learn at my own pace and I was able to get a handle on what I needed to do.

Don't panic, your situation is normal. If the company you're working at doesn't like that you have a degree but can't code at a functional level, that's their problem, not yours. Find a company with a more inviting environment. It will take you probably around 6 months to a year to be functional at programming and then you should be much better.

1

As already stated, being a "bad coder" is the usual state right after leaving school.

One reason schools produce bad coders is, they concentrate on things like algorithm without ever telling you how to code well.

You need to Get Good. And that is hard.

There are many aspects to being a good coder.

One is, knowledge of the code in the office you are now working in. That usually takes a lot of hard work, and not much else can substitute. There are various estimates of how long it takes to become an expert, but it is not something that happens in a day or two. And you probably need some help from a senior person.

Another is coding practices in general. There are several places you can look for this info. There are books like Code Complete and other books in that genre. Just don't let that be the only book you read on the subject. Search around for books, videos, and web sites, giving good coding advice.

Another is communication. Yes, making sure you understand your coworkers and they you, is a big deal. There are classes, books, videos, etc., for that.

When you find something difficult, that's a sign of a place you need to make some effort. A chance to Get Good.

0

To answer the question as asked: besides practicing a lot you can read and understand other code (especially the code you will be working with) to learn how others approach it, read articles on techniques relevant to the language and environment and business area you are working in, and ask if you could "team program" with someone so they can help you get into the right habits and techniques.

Practice by itself doesn't help as much as directed practice. Try to figure out what skills you don't have and need, and focus on learning them.

And remember that nobody expects a novice to be as fluent as a more experienced engineer. Building up a vocabulary of useful patterns and recognizing which might be appropriate does take time, as does being able to visualize how your work fits into the wider product, as does trading off clarity and maintainability against development and execution speed.

Programming really is a language. Three years of study usually doesn't make you a fluent speaker, unless it's three years of full-time immersive training in a real-world environment. Fluency only comes with experience, learning the idioms as well as the formal structure, and learning a wider and more nuanced vocabulary.

-8

I have 3 years experience but I feel like I am really bad at programming.

and

My team is not satisfied because I am slow and ask a lot.

The conclusion is quite clear. You are not really cut for a job of programming. 3 years is a lot of time, you should be relatively comfortable doing most of the work alone. But you are not even close.

Also: "3 years" is not experience", it is just time spent. It is called "experience" when you actually become better and better, and you can solve alone problems which are more and more complex.

My code works but it is not clean. For a one day task I need 3-4 days maybe.

That is acceptable for someone with up to 6 months "experience", maybe up to one year. But after 3 years you are still at the starting point.

My most altruistic advice: find another kind of job, were you can learn faster, and where you can become the kind of person that you can become. Not everyone is cut to be a programmer, in the same way that not everyone can run as fast as Usain Bolt. Some people are successful surgeons, while other people faint when they see a picture of blood.

6
  • 2
    (I don't see why this was downvoted.) One thing, I believe the OP means he was "at college" for three years. My understanding is he has zero (or perhaps "one week" or something) of programming experience. Programming is exactly like playing a musical instrument. You can study "music theory" for 10,000 hours, or 100,000 hours - and that's a great thing - but 100,000 hours of music theory is, literally, not worth one minute of actually playing guitar or saxophone.
    – Fattie
    Commented Oct 27, 2022 at 13:18
  • 4
    I do think it is a bit bold to make a "remote diagnosis" like this only based on a description where there are more questions open than answered. The OP does not clearly specify what the experience was in or if it was in the current job. How can he study and have 3 years experience??? He says the code is complex. May be complex in a good way (but this may need someone to walk through) or it may be a great big ball of yarn which was dragged through the mud and then shot at with a machine gun. How are we to know which is which? Commented Oct 27, 2022 at 15:44
  • 2
    Very torn on this one, so no up- or downvote. On one side - true, not everyone can be Feynman or his equivalent in the respective field. On the other side, as a junior developer being put into a position of constant pressure with colleagues being unsupportive can have adverse effects and I have seen this in practice. OP's description hints at this too. People can become a LOT more effective in the right environment. There is also paces of learning. Some get used to a new codebase slower, but are able to solve problems faster once they are comfortable with it. There are many sides to this. Commented Oct 27, 2022 at 16:31
  • 2
    -1 Three years coding is nothing, especially in an academic context. Commented Oct 28, 2022 at 18:27
  • 1
    This is not an appropriate evaluation of someone who hasn't even graduated college yet trying to work on a real world codebase. What's far more likely is that the code is a total dumpster fire and the people working on it have unrealistic expectations of an entry level developer..
    – 17 of 26
    Commented Nov 1, 2022 at 15:30

You must log in to answer this question.

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