i am a foreigner Bachelor Student (Business Informatics) in Germany (came a half year ago). I had experience with HTML and CSS. One and half year ago, I decided to learn JavaScript also. I completed FreeCodeCamp course and The Odin Project. My Portfolio was enough to get my first working student job as a web developer on December 2022.
I then started with Tasks like removing the BootstrapVue UI Library and replace with regular Bootstrap in small projects. That took like 60h, because I had to learn vue first. My colleagues said but nothing negative about my work.
Yesterday was for me like disaster. I worked until 22 o'clock, (I had to stop at 17 o'clock) to find out that I'm running a microservice in a Docker Container and the changes I made on a mail template had no effect, when I send them, since I was working on local files. I feel myself an idiot and can't tell anyone.
Am I doing the right job? I can surely say, that I love frontend development and also backend with java and Python. But loving a theme is enough to do it as a job?
Edit: Thanks for all your comments, all of them very supportive and made my day better. This long-time failing experience is the first time in my life, so maybe I had to live and deal with it. And yes, I love what I do and how I feel. For me there isn't any better feeling, after fixing a bug/completing a task. From now on, I will reading the docs more and not trying hunt the exact answer on stackoverflow at first place.
Be radically transparent with your team when you struggle. Tell people when you're stuck, when something is new to you, when you're uncertain of where to go next. And tell them soon.
In my first jobs, I constantly felt like I was "interviewing" for my position even after I started. I thought that if I couldn't do something simple, I wasn't living up to the skill level I had promised them when they hired me. So I would hide the fact that I was struggling. Worse, after 2 days of being stuck on something "simple," I'd feel like I couldn't possibly tell the team--they'd think I'd wasted their time for two days!
The key for me was to simply be transparent. If I was assigned a task that used some technology I'd never seen, I simply told the team upfront "Hey I've never used Vue before. I'm going to read the docs and familiarize myself with the framework, but if this is particularly time-sensitive, should someone else take this ticket or can anyone recommend a better approach than learning Vue from scratch?"
Then, whenever I hit a confusing bit of Vue code that I couldn't decipher in 20 minutes, I'd simply post a link in Slack and ask "Can anyone help me understand what's going on here?" and explain where I was getting confused.
If your team hired a junior, they don't expect you to be a senior. If they see you working, see where you're getting stuck, and see where they can help, things will go much more smoothly. Where conflict occurs is when a junior disappears for 3 days, then shows up with a PR that needs to be redone (speaking as a person who has been that very junior).
Web development is hard. The individual parts are manageable, but bringing them together is a mess. We web developers are aware of this. It's like an open secret.
And it takes time getting comfortable with the mess, and letting the brain develop its own map of how things work. And you will do stupid mistakes along the way. Those are funny actually.
I'll give you my current perspective:
I've been at this for a decade, and I am definitely not incompetent. Last week I spent the night fixing a seemingly simple bug. It ate up my night and sanity. I went to bed angry. Woke up, are realized that I was looking at the right service, but editing the files in the wrong folder. Of course I didn't see the output. And I couldn't stop laughing.
This sort of silly mistakes happen almost once every month.
It can be frustrating, it will be. In webdev, things are in constant flux.
But try looking at it through a sense of humor, and you will see how funny it all is. The mentality will carry you through the decade.
We are just anxious & weak monkeys, with big brains, worrying about glowing glass powered by stone with lightning. It's surprising we even made it this far.
You and I deserve the leeway to make some mistakes for ourselves.
It's not you, it's them.
If you want to do web dev you'll have to put up with this shit as most places do not want to return to sanity because somehow I'm being told that the cloud "empowers them to go build faster". Nevermind the evidence is sorely lacking but this is how they all roll. From 40 person startups to Fortune 500 they are all cargoculting hard on microservices and cloud. Developer experience has taken a complete backseat and fighting for it is a real uphill struggle.
One thing I try to remember when I'm mashing away at some dumb thing for hours that I don't understand (8 years in, it still happens a lot), I try to leave it for an hour or till the morning if possible to clear my head, or better yet I ask a co-worker to let me try to explain the problem. Sometimes they can help, sometimes just talking about it to another person is enough for you to discover what's the actual issue.
I think most people here can relate to this though. There are still times I'm working on something and think, "oh god, I'm in over my head here". And I'm a senior dev so I'm paid to know what I'm doing.
I agree with what another commenter here said about being transparent with your team. As a junior dev no one is (or should be) expecting you to know everything. Even senior devs can't be expected to know absolutely everything. I still ask my colleagues to help me out with things almost every day and similarly they ask me questions too.
You're expecting way too much of yourself and stressing yourself out. It's okay to not know everything.
In particular, it still happens to me after 25 years and yeah, I ask someone for help. Being a fairly experienced dev, people are often asking me for help, but the road never stops running both ways.
Don't be afraid to ask for a second pair of eyes though.
Often the teddy bear effect of you having to explain what you are trying to do will make you see the solution immediately (ie. why are my changes not coming through ... because I am editing the wrong set of files etc.).
I am a senior IT architect with 10+ years of industry experience. Just this Friday, I was debugging an issue in a Docker image together with a colleague, and we were completely baffled why none of our debug output was showing up when we ran the test job in the CI on the Docker image. After half an hour, we realized that we had been pushing the image into the wrong repo, so the CI never picked up the changes.
It happens to everyone. Don't sweat it.
> From now on, I will reading the docs more and not trying hunt the exact answer on stackoverflow at first place.
When mentoring, I always encourage my juniors to take time out of their workday to just read up on things. If you're going to have to use a difficult new library, give yourself an hour or two to just read the documentation on that library to understand the principles on which it is based. Even if you don't have any specific new technologies lined up, maybe take the time every once in a while to just read a random manpage. You don't have to memorize everything in there, but just getting a vague comprehension of what all these tools that you use are actually capable of. Once you run into a situation where these capabilities can be useful to you, you might just remember reading about it somewhere, find the relevant part in the manpage, and save yourself some time hunting on SO.
So don’t worry :)
But seriously the fact that you care about your professionalism alone puts you on the next level above the army of bad but self confident developers.
I wish you to use it as a tool for your growth, not for feeling bad.
This is not your failure. This is your team's and your manager's failure. They should be aware about your knowledge levels about the application you're working on and provide this kind of information before hand instead of leaving you flailing around. I would be more upset at them than at yourself, but sadly a lot of senior developers have the empathy of a bag of bricks.
Don't be ashamed of the amount of time it takes you to find solutions, acquiring knowledge is not always a straight path. The important thing is that you learn.
Nowadays, whenever I help someone debug an issue, I insist on starting from zero assumptions (by making self depricating jokes, and stating that I need to understand the context properly).
Furthermore, the culture/way of communicating in German might a _lot_ more direct and interpretable as negative than in Brazil. I'm Dutch, and we're known for our directness, but I've ben upset by some Germans before by how negative they can be about some work. They didn't intend this at all, they were just unaware of how their communication landed.
What you are describing sounds pretty much what I would expect a jr developer to struggle with. The key, as mentioned by others already, is to ask for help proactively.
If you're not getting help after asking, that's when I would start to think about whether I'm in the right place. Not because of my skills, but because if your employer doesn't support you properly, your likelihood of failing in the job goes up dramatically. This is especially important early in your career. Don't stay at places that don't properly support you.
You’re paid to not stop until you have a competent solution.
Self as an obstruction as very common. Take breaks, EXERCISE, don’t eat junk food (it corrupts your mood).
Keep solving problems!
It is the persevering mind that endures.
The situations you describe are “as-hoc”. You’re thrown into the middle and expected to tread it out.
Judge yourself by your own doings, not your adaptation to the toil with the doings of others.
Don’t forget to intelligently ask for help. All the time a fresh eye reveals something, and to get (small discrete units of) help from others is actually a good way to make friends. Everyone likes to share how they would fix the problem.
A couple of decades of programming in, and I could still very easily make this mistake if I started working with Docker, because I’m not familiar with it. I would pick up on the problem much faster than you did, but that’s because I’ve trained my intuitions over the course of many years, not because I’m cleverer—through experience, I know that if a change doesn’t seem to take effect, it will be either that I touched the wrong thing (edited the wrong file, talked to the wrong server, ran the wrong program, whatever), or that there’s a cache in the way and I need to recompile something, restart something or clear some other kind of cache. You don’t yet have this experience. Persist, and you’ll pick it up over time.
As a more personal suggestion from my own experiences: if you possibly can, find someone that seems to actively enjoy explaining things and get them to take you under their wing. Most people aren’t like that, but there are a few here and there; I’m one, and I love having people ask me things and getting to explain them to them, and watching them grow. (And if you’re an introvert and worried such a mentor will wear you down with extroversion: don’t worry, I don’t observe any correlation between extroversion and enjoying teaching.)
Eventually you will learn this stack but unfortunately be forced to learn a new one fairly soon. That's the real challenge with web dev: are you ready to do old stuff in new ways because trends change so fast?
Fast forward to today and i usually get a “feeling” about why things might not work, and dont even need to dig deep to figure out why, i just “know”. Thats called experience. Comes with time and practice. Gradually you develop a sense to why or how things should work, and thats why experience is valuable.
So give yourself time. And sleep - sleep sometimes lets your mind work on solutions, hence the expression “we’ll sleep on it”.
Loving a theme is absolutely enough to do it as a job, but you may have to work at it - and that's ok, great even! Just remember that your colleagues were new once, too, and someone probably said negative things about their work as well. Sure this comes easier to some than others, but that doesn't mean that only those people should be allowed to do it. Some days are productive, some aren't. Just try to make your average score more towards productive, and you'll be alright.
Tomorrow is a new day. Get some rest, take a breath, and get back at it.
Try learning through socialising, too. Reach out socially to rookies with whom you can share tales of woe - and maybe laugh together about them, and congratulate each other on the experience gained from them - and reach out to experienced devs who are willing to mentor rather than criticise you for understandable mistakes that they've probably forgotten they used to make themselves.
I truly doubt that you are incompetent, and I know for sure that you are not incompotent, and I really hope that you don't mind a bit of wry humour ;-)
Best wishes on your path to confidence and success.
So, don’t be discouraged. Don’t think you’re stupid/incompetent for not knowing everything yet. It really can take a long time to understand how all the parts of the stack work together.
Aside from continuing to improve your craft, think about how you can improve your relationships with your colleagues so they become more supportive, or consider leaving and finding a workplace that is more nurturing to less experienced team members. Such places do exist and it’s worth making the effort to find a workplace where you feel supported and valued.
Good luck to you.
It’s is a lot to know and all of us who do it have stories like the ones you tell.
You just need to accept the fact that this profession is all about learning all day every day and solving problems. If you like doing that, doesn't matter what is your current skillset, you will definitely improve and will learn these things over time.
Also everybody makes stupid mistakes, don't worry about those.
Also it's way harder to start today than let's say 5 years ago, because there is so much more technology to learn, so yeah it's a rough start, but you will enjoy more as you learn more.
It's difficult for one person to be really good at the whole stack. Since you are a beginner, I would recommend you to concentrate on one part: frontend or backend or infrastructure. With time, you will gain confidence to meddle in all areas.
It is a tough job and maybe you should find another company where you can get better colleagues.
Just have a eye, or try to implement strategies that this ~cannot happen again.
Wo gehobelt wird fallen spaene ;)
I can read this either as "my colleagues said nothing but negative about my work" (what most others seem to be reading) or "but my colleagues said nothing negative about my work" - are we right in assuming the first?
> Edit:
Keep at it :)
Be nice to yourself and don’t expect that you can power through many decades of programming knowledge in just a few hours.