Hello SO;
I shall start with some background on myself. I am a junior programmer (almost entirely .Net, unsurprisingly) and have been in my first graduate job for just over a year; before that I took a physics degree and learned programming on the side, first Fortran and then C# off my own bat for a project.
After this relatively short amount of time I have encountered my first career-threatening moral crisis. I've learned a huge amount in my work and am starting to feel dissatisfaction with the way things are done. I've been almost completely on one project since starting; a desktop application that is due for release in under a month's time. The 'last' beta went out last week with several known issues. Release is already late by several months. Total staffing on the project is 5 actual people with about 3.5 full time equivalent - project manager, lead developer, myself and two mathematical modelling specialists whose time we have to fight tooth and nail for.
Every decision made hurts my sense of propriety because of a lack of good practice - a lack that even I as a mere yearling can identify. There is no unit testing whatsoever. Only one person in the entire company knows how to execute a build of the product. Design is ad-hoc and left entirely to the person writing the code. No seperation of concerns (model-view-controller architecture etc) is present. The modellers test their code in a production environment instead of in a test harness - so if we're working on the GUI with breaking changes, it holds up their work for half a day while we finish the infrastructure. This is particularly frustrating because I know the team have the skills; the lead developer is a trained software engineer - yet chooses not to use any of the practices he knows are recommended -and the project manager is entirely comfortable with coding as is evident from his code comments in 1980s era Fortran modules which are still left kicking around - yet doesn't get involved and doesn't inquire as to coding details.
The argument I get when I raise these concerns, which I am forced to agree with, is that there isn't time to do these things. Which brings me to the point, or probably points, of this question. The first is; how do I rectify this situation of unreasonable deadlines and distinterested team members given my extremely junior position? And secondly, the more interesting question; how do I go about proper design practice in a time frame that is known to be too short to do it properly; what do I miss out and what do I absolutely have to have to make it worthwhile?
edit:
I thought I should point out that not all of the company is like this. My line manager would and does wholeheartedly agree with most of the things I've said and is pushing hard for all the best practices to be adopted. The boss can only shoulder a limited share of the blame, as he's very hands-off and given his character, would probably be happy to accept our recommendations. The problem with that is that he doesn't have any day to day influence on how projects are run. He sets initial requirements, and if you tell him you can deliver them, that's your own damn fault when it slips. The root cause is lack of awareness on one side, and being risk-averse on the other. There is minimal clash of personalities or cultures and the team just needs someone to lead. I'm unlikely to be taken seriously in that position given my status.