I am going to try to answer from the perspective of the company. I am not that company, so there may be things that I don't see, but I have seen this before at my own company.
Too Many Questions
Most of your confusion seems to come from the fact that you didn't understand that asking questions is a dangerous game. It is!!!
When you ask a question, you're admitting you don't know a thing, and that you can't figure it out. As a software developer, one of your tasks is to figure it out. You are insulting the "current" dev team by basically asking, "So you wrote such crap code here that I can't possible figure out how to read it or what it's doing, so I am going go need you to explain it to me."
Now the tricky part here, is that some times that is exactly the case and you should be asking questions. It's just important to remember that, no matter what, there is a negative side to those questions.
Another thing that I think I sense in your OP is that you're asking questions way too early. It is absolutely fine for a new developer to sit there reading, and researching for an entire day, to write 2 lines of code. In fact, with 14 years experience, I still end up doing that. Writing professional code is not about "how much" gets done, it's about "how well" it gets done, and being able to repeat that success. I doubt anyone will bawk at you for taking 100 times longer to do a tenth of the work as a trained, and established developer. In fact when I hire someone, I write off the first month as not expecting any real work, and the first six months as not expecting much.
Not spending enough time on your own
This is a biggie!!! When you ask a team member for help, you are pulling down the productivity of that person as well. You are impacting their process and insulting them (see above) at the same time. There is no way for you to win, if you have to ask for help. Think of every ask, as a lost battle. You can still win the war, but you lost this battle.
There are some things you can do to mitigate the problem:
- Ask in email, never in person or chat. Chat might be the preferred way to do it "officially", but email is nicer because the receiver can handle it in their own time.
- Approach it from a "lower" stance. You're the supplicant here. Do some grovelling. It's OK. A little bit won't hurt you and will show the receiver that you do care about their time, i.e. "I know you're really busy, but I can't seem to figure out how to integrate with your API. When you get a few moments can you show me what I'm missing?" It shows that you're in the wrong not them. It's important.
- List the steps you have taken on your own. "The API document says to pass in a String representing the user's id. I tried passing the user.id property and the user name, neither worked." This shows that you at least tried something, and that in general, you are starting to "get" the product.
Better Judgement When asking questions
This, to me, sounds like you "whined" to someone, and they didn't have a nice way of saying, "You're annoying everyone with your lame questions. Stop it!" In other words, I think this is a non-issue. Once you correct your other issues this will go away.
Bad Documentation
Ahem! That's another personal insult. Never ever say that. EVER!!!! Once again you're saying that their code quality is so poor that you can't figure it out. Their response is always going to be "Works for every one else, so you must be the idiot, not me!"
Also, this is a bit of "welcome to the real world". In the real world, clients pay for working applications not code or documentation (most of the time) so it's very common for documentation to degrade over time.
If you think documentation is poor and needs to be addressed, then bring that up, quietly, with your team lead. Let them decide.
I will say this though. No matter how crappy the documentation is, with the source code right in front of you you shouldn't need it. It's a real nice to have, don't get me wrong, but you can work without it.
Being Late
Obviously, don't be late. That's a no brainer. In fact in your situation right now, be 30 mins. early!! No excuses. You're ruining any hope of finding your next job with this one. If I called the HR department there and asked about your attendance, and they said "He was frequently late" or "He was written up for being late" that is an instant red flag. I mention this, because whether you keep this job or get a new one, this more then anything else will stop you from getting that next job.
Low quality Code
This is probably true. Given the question problem, you are probably not writing good code. You're new though, and that's to be expected. I find the colleges don't teach a damn thing about real world coding. Never have I hired someone straight out of college and gotten a "good developer". That doesn't mean that they didn't go on to be good developers. They just don't start out that way. Writing good code means staying on top of the latest trends and techniques. You're constantly learning. The moment you stop is the moment you start sucking.
In conclusion
This post has been rough, but I wanted to show, clearly, what a company's stance may be. Often times they (companies) wrap up their comments in so much "manager speak" that it may be hard to understand. I tried to reduce the manager speak in this post as much as I could, but that means it comes off a bit rough.
Your most important steps to fix your failing career:
- SHOW UP TO WORK EARLY!!!! (I can't stress that enough)
- Ask questions with a mind set that you're already insulting the person you're asking.
- Show your work. When asking a question state clearly what you have already done.
- Spend more time learning on your own. It's important to spend way more time researching things then asking things. Honestly 3-4 days looking something up on your own, will be more respected then a 30 second question.