Ask HN: Am I incompotent for web development?
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.
73 comments
[ 0.28 ms ] story [ 154 ms ] threadIt’s is a lot to know and all of us who do it have stories like the ones you tell.
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?
I don’t know how software development recovers.
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.
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.).
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.
This is a magic power, 4 times out of 5 in my experience telling someone about your issue resolves the problem or confusion.
Getting stuck still happens. The real difference between what I face now and early in my career is that I have developed a sense for when to plow through, when someone else might know the answer, and when to route around.
Plowing through usually means it's not worth interrupting someone else. Or when the business itself, or other teams are in the way.
Asking questions because you don't know requires humility and it's best to have it even as a senior. Just ask, and do it sooner rather than later. You will learn faster than banging your head on the wall - there will be plenty of other problems to do that for.
Some problems aren't worth the pain. I could solve this, but should I? It saves the business lots of money to occasionally route around the problem.
Over time you start to develop a sort of automatic pattern recognition skill that separates problems to "I've never seen this before" and "oh, this looks very similar to x". Also it becomes much easier to know what's hard and what's easy, like you said.
You still obviously make the wrong call here and there. More often if you're in a completely new field, like the OP.
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.
However, we also need to keep in mind the possibility that he/she is working with negative people, that are simply a*holes. If that is the case, I'd recommend looking for a new team.
I'm also an immigrant in Germany and so far my experience has been positive on most teams, so if someone feels that a team is hostile, negative, belittling, don't stay there too long only because "I must be too sensitive and I can't handle how Germans communicate". It's not always your fault.
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).
Ask questions. Tell people where you’re at. Advocate for your own success and by all means, do not ever hide problems or the challenges you’re facing. If the team cannot support you when all you’re doing is being honest, that’s a problem I’d solve by finding a new team to work with.
This means to me that talk with my project managers and colleagues more make more comments/updates on Asana :)
I love helping people that have put in the effort to try doing something themselves, but I hate helping people that just dump their work in my lap.
The “I tried nothing, and I’m all out of ideas.” trope.
I believe people put it in interviews because they need some metric, and hey, it's a metric. Quite like the constant attempt on estimating the work done on some software.
Anyway, it's hard to say somebody is an incompetent idiot when literally everybody does the same thing. It's certainly caused by some structural feature of companies.
When to ask a co-worker for help: domain specific problems, open ended questions, subjective questions that would be hard to input into a search engine, etc.
Ask questions when you would spend a lot of time tracking down the answer. Don't ask a co-worker a question that a web-search could answer quickly.
Of course 15 mins is meant as a loose time, as a sort of benchmark for "give it an actual try yourself, but don't spend a day stressing out yourself without help".
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.
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”.
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.
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.
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.
I try to insist on my production account being readonly and having a separate user for deploys.
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.)
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.
It's more than a programming language; it's a really big programming language, with quite a lot of backward-compatibility cruft. There are many ways you can use Javascript, but should not. I've been writing Javascript for years, but my JS code isn't fluent, stylish or even modern.
Before I retired I was a senior; but the fact is, it was the youngest guy on the team that was the best at sizing-up Javascript problems - so I would in the end rely on him. But I would first hit the problem with my head until I had a headache, not wanting to waste my teammate's time.
My teammate was actually interested in Javascript; he would go to classes and conferences. I wasn't - I never liked it. My strengths lay elsewhere.
The way one writes their CSS selectors against their HTML structure has huge real-world performance implications, but people rarely care to think about what actually happens under the hood as a browser parses their documents and generates an image on the screen.