views:

735

answers:

5

Any suggestions on gaining experience? Or where could I see an example (instructions, code, database schema, etc) of an enterprise level application? Oh, and make it .NET.

I want to get experience writing enterprise level programming, but do not work at a company that has other developers or projects at this level. This term gets thrown around along with object-oriented programming and unit testing and other high-level buzz words. Coding examples, books and tutorials don't seem to follow these practices. I've looked at books that explain OOP with java examples (Not a good reason to learn java.).

+3  A: 

A common misconception is that "enterprise" means "better". That is simply not necessarily true. "Enterprise" just has certain characteristics that make it work better in large organizations. True, enterprise software usually has to scale and performance+scalability are very attractive attributes to most developers.

What "enterprise-level" really means is:

  • Compatibility with architectural schemes and long-term technical plans that overarch anything you or your team will ever do, and thus cannot be changed.
  • Conforms to governance requirements
  • Expensive to build and maintain ;)
Rex M
+2  A: 

When you are developing for the enterprise level you have to take special consideration of all of the -ities

  • Maintainability
  • Scalability
  • Functionality
  • Reusablility
  • Reliability
  • Understandability
  • Usability
  • Modifiability
  • Testability
  • Portability
  • Efficiency
  • Flexibility
  • Modularity
  • Interoperability
Chris Ballance
And, most importantly i've found - Interoperability. Nobody integrates systems like the Enterprise.
nailitdown
+4  A: 

Your best bet would be to go and apply for internships at several companies -- I do not know if this is possible if you are not a student however.

Back when I was studying .NET, N-tiered "enterprise" applications and OOP, what helped me a lot was Vertigo's .NET Pet Shop application, the last one being .NET Pet Shop 4.0.

Basically it's a demo app of an e-commerce site (a pet store), and while the code may be outdated in one way or another, the underlying application design is still valid and resembles the basic patterns many enterprise applications use for their code projects.

And while you're at it, get a copy of Patterns of Enterprise Application Architecture by Martin Fowler, which explains many such solutions in depth in terms of their design.

Jon Limjap
A: 

"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.

Adam Hawes
That would've been a reasonably insightful post if you didn't pop your absolutist (and plain wrong) opinion on the usefulness of .NET. -1
Rex M
Care to explain why ".NET is barely the right tool for Windows-only application development?" It seems to be working quite well for thousands of companies...
Giovanni Galbo
It's another MS buzzword of a technology that they'll get bored of and phase out. But of course, when fanbois have a hammer all problems look like a nail.
Adam Hawes
Whatever you call it "enterprise" or whatever, when you reach a certain size in any application, you have to start thinking differently about its architecture for scalability.
Chris Ballance
"The Internet" is also just a buzzword, it will never catch on.
Chris Ballance
Jeff O
A: 

This is a bit of a stock answer for "how do I get programming job experience when every job requires experience to get?", but you can always check out open source projects. This is especially applicable considering you want to look at source code.

To me, core enterprise features are working across multiple servers to meet scalability and availability goals. To this end, a good project to look into may be The High Availability Linux Project

Unfortunately that project is not .NET, but even understanding it at an algorithms/functionality level would be mind expanding. Heck, just understanding the problems it is trying to solve will go a long way toward enlightening you to the world of enterprise woes.

Joshdan
I appreciate the recommendation and agree that it would expand my understanding. .NET is just "where I'm at right now" because it was easier for me to learn (First language was BASIC on Apple II then FORTRAN on mainframe, VB 4.0:5, VBA in Access, ASP, ASP/VB.NET...) you get the picture.
Jeff O