"Enterprise level" is a nice wanky buzzword that recruiters and HR people use. It means precisely squat. What they mean to say is "professional experience on large projects" but they like buzzwords.
If you want to get real-world programming experience in a professional setting then get a job. I looked on Seek just before and there's a stack of Junior positions advertised in my city, even with the economic downturn. If you're still studying or don't want a job just yet, look at internships, as someone else said. There's a lot of them and if you're willing to work for peanuts you can get some really useful experience.
Coding examples, books and tutorials don't seem to follow these practices.
In what way? What is the difference between "enterprise-level" and "every-other" program apart from cost and size?
Professional programming requires diligence and skill more than any two things.
- Be able to code, and code well.
- Be able to select the right tool for the right job. .NET is barely the right tool for Windows-only application development. There are much better tools for most other tasks.
- Leads to, learn a number of languages; you'll need to know a few to really see the shortcomings in any one.
- Be willing to learn even more.
- Pay attention to detail in requirements and code.
- Form a structured approach to solving problems, even if it's ten minutes quiet reflection without making a single note (for 'trivial' problems)
- Adapt to any number of process-driven workflows instead of the happy hackers r us way of code, deliver, oh shit.
- Resist temptation to modify things just because you feel like it. Existing code is tested and proven, and possibly wrong and depended on to be wrong. Changing it WILL break it in some way.
- Learn to look at code critically. Code review is a big part of large projects for many reasons. Being able to spot flaws is a useful skill.
- Learn how to prove your code is correct. This isn't all about automated or unit-testing. There are a large number of mathematical proofs for software design that can be performed. Coverage measurements to ensure your code is fully tested, tests for strange conditions (ie if two unsigned numbers add together the result is always greater. If it's less you've overflowed the range).
- Communicate with a large team. This often means presenting a 1-2 minute summary of your individual status to the whole project team on a weekly basis. If you're not comfortable doing that then you will need to work on it.
As you move up in rank you will be expected to gain skills in
- Software design from flimsy requirements
- Estimation of effort/duration/cost of software, starting at your individual chunk, possibly right up to whole project scale.
The difference between "professional software development" and "enterprise-level software development" is really some mythical, immeasurable size of the project you're working on.