I would take issue with your use of the phrase "lack of discipline". It's not clear whether by "discipline" you mean "being totally focussed on a project" or whetehr you mean "following all orders from superiors, and disregarding consequences of said orders".

As convenient as it may be for you to assume the latter, the answer is "neither". When I refer to discipline, I refer to a capacity for doing things one does not enjoy or even finds unpleasant because they are the "right" things to do. In this context I'm talking about writing clear, modular, extensible and maintainable code, testing that code, and documenting what you did for anyone who may have to work on it later. I'm talking about fixing bugs that you happened to find in other people's code (or at least reporting them to the people who can fix them), and fighting the urge to solve your own problems by rewriting other people's code that is already working just fine. I'm talking about trying to implement things cleanly even if it takes more time than hacking it up. Everyone knows these are Good Things, even the people who don't do them. The discipline to which I refer is no more than not making excuses.