Not an enviable position to be in, but you are not alone. Corporate IT shops are filled with situations just like yours. There's no easy answer, but you of course have to get some work done. Possibilities:
- Use the truth. As someone else mentioned, don't fall prey to trying to cover up the situation to managers and project managers. Tell the truth about the situation. If they care, they'll help you change the situation by restaffing. If they don't, or if they're the type that can't hack the truth, then they'll drop you or you'll know you're in the wrong place; either way, you might end up leaving.
- If you end up staying and have to work with what you have, I can't fault many of the previous suggestions: standards, code reviews, pair programming, monitoring etc. Those will help some, but I think your problem, as another poster noted, isn't just with inexperienced programmers, it's also with experienced bad programmers who don't want to change. In this case, I would look at two things:
1) If you have time, do a good job with the requirements and technical specifications. I have used detailed tech docs to serve almost as instruction manuals on what objects and methods are needed for a task. I have used this technique before and once things were set up, it greatly aided my ability to execute by enabling me to delegate some tasks to less experienced developers. Delegate is a key word here; you will burn out if you try to do everything yourself; but guidance through the specifications, assuming the developers adhere reasonably well to it, is one way to leverage your vision.
PROS: You are setting the direction for the structure of the code. The internals of what a lesser coder delivers might still be ugly, but it's compartmentalized ugly, which will make future refactoring (probably by you) significantly more accessible. Combining this with code reviews will help.
CONS: This takes time, and lots of it, since you are going to have to be the writer of all this instruction, and of course time is usually a constrained resource. That, and of course that most developers don't like writing documentation. People might criticise this approach as too manual, or too much like waterfall, or doesn't respect the developer's initiative, or whatever, but more advanced methodologies require a more advanced class of developer, and it sounds like you're short on those.
2) Application partitioning and project management. If you can, try and move the resources to places where you can take advantage of any skills they do have. For example, you mention some PL/SQL knowledge. In a database application, certainly there will be some back-end needs? Move people where they can work best, and vice versa: structure the application so that some of the logic is centralized in stored procedures. Let your javascript, html, and python guys work on the front end. The web kids on the site here will give me flak for suggesting logic in the PL/SQL, but whether it's in an application server object or a database server object, I think we ultimately agree that centralization of logic is compatible with DRY principles and forms a more workable foundation for support and refactoring, of which it appears there will be much need. Careful distribution of tasks also lets you give tasks that need more initiative to the better developers and the better defined, less fungible items to those that need stricter direction.
Just as a good developer can salvage some of a poorly managed project with weak business requirements, a bad developer can compromise a well managed project with good business requirements. So, your project sounds like it's going to deliver an app that's got plenty of logic spread disparately through GUI objects and lots of quirky scripting and poor error handling...in other words: the average corporate app! But if you can't deliver a world-class app, with some effort you can try to prevent total disaster.
It is tough when you are the only one on the team with a passion for quality, but the best you can do is explain your position. If you're lucky, one or two will catch on and join the cause. If you're unlucky, all of them will ignite and you'll have a team of prima donnas that only want to do design and won't do support. But seriously, you'll probably end up with the typical corporate app. If you're getting paid well, then remember that it could be worse.