[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

vb.net expert advice

Posted on 2011-04-25
13
Medium Priority
?
306 Views
Last Modified: 2012-05-11
Hi,

(kinda long text, but please bare with me)

I'm kinda getting annoyed here.
So as a living, I work... like most of you guys I presume. Now in the mean time I also go to evening school where I try to learn vb.net. Problem was (what I noticed at the end) is that the first year was theoretical and procedural (our "teacher" was an analyst not a programmer for a living). During that time we almost never did exercises but just watched the screen instead.

Now suddenly after 1 year of procedural programming we take off with Object Oriented. I myself have a huge problem with a sudden chance, so am still stuck with how to write decent OO code.

I mean I know explanations on what overriding is, or what a inherit is, or even interfaces... but I dont know when to use em or sometimes why...

Also the thing about patterns... where can I find decent information? not only what they are, but also when to use em... or maybe the positive and negative sides.
What about the already existed Interfaces?
Should I maybe start from scratch? Is there maybe a decent vb.net OO book?

I mean, I can keep going on these questions... But I'm so angry at the school that after 2 years I still have problems getting a decent knowledge.

0
Comment
Question by:Mutsop
  • 5
  • 4
  • 2
  • +2
13 Comments
 
LVL 24

Expert Comment

by:Jeff Certain
ID: 35462949
A couple comments. First off, the half-life of software knowledge runs about 4 years. So half of what you learn in an undergrad program is goign to be outdated by the time you get out. This is assuming that you're being taught the most recent material -- which isn't likely.

On the other hand... get used to it. In this field, you're going to be learning continually. Blunt, perhaps, but that's the reality.

Now, having said that, design patterns were formalized by the Gang of Four in a book called "Design Patterns." There's a series called "Head First" that includes both an OOP/OOA booka nd a design patterns book. The latter is very good; I haven't read the former yet.

As far as a .NET OO book, "Object Thinking" is a classic on how to wrap your head around objects. It's not a .NET book specifically. Deb Kurata's book "Doing Objects in Visual Basic .NET 2005" is a bit older, but solid. (I don't know if Deb wrote a 2008 version or not.)

Hopefully, this helps.
0
 
LVL 86

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 35463333
"But I'm so angry at the school that after 2 years I still have problems getting a decent knowledge."

Let's get real...those coming out of college with a computer science degree really don't know squat about programming unless they had prior programming experience.  Yes...they actually learn some new concepts and write a few programs, but nothing that resembles "real world" projects.  Computer Science programs only teach you the basics of software development as it applies to the programming world in general.  Typically students will be "exposed" to 3 or 4 languages...tops.  You're not going to become proficient in any of these languages...think of it as an appetizer tray in a restaurant (just enough to sample but not fill you up).

To get any "real world" experience out of a college program would require that they pick a specific framework and a specific operating system/environment to target.  You would then need to build a sizable project over several semesters to get any experience out of it.  This is almost always frowned upon since then they would be catering to a specific scenario (language paired with an operating system) and students get bogged down in the details of making something work for just that scenario.  The "lessons" then get lost in the specifics and it's too complex for the average person to see the "big picture".

People coming out of college with a computer science degree basically have the foundations for programming...nothing more.  They have proven that they have the ability to "learn" by sticking with a degree program and finishing it.  It is up to the business that hires them to ensure they are given small enough projects, or just pieces of projects, that can be handled by someone still new to programming.  If you're lucky, you'll be paired up with a senior developer who's job is to "mentor" you and guide you along the way.

Real world programming skills are learned...in the real world.   =\
*Either in a job or on your own*
0
 
LVL 3

Author Comment

by:Mutsop
ID: 35464886
K I do get the point that programming keeps evolving, but the problem is (after this experience over 2 years) they should have thought us OO from the beginning, not procedural programming.... and especially not theory without exercises.

As I said, it's the basic where I still have problems.

For example as of now we have a project to make, a "rent equipment" program... As of now we only need to create the business layer (nothing has been said about data nor UI). Now after a brief talk with my mentor, he told me to use the DAOFactory design.

He helped me with the basic setup and I was able to improve the layer and interaction between the classes. But without his help I wouldn't be able to come up with that idea, nor would I be able to actually make some facade part.

I mean I know how to use the design with examples, but am not sure how to create the base of it :(


Would it help with some online resources?

(as you might have noticed, we learned procedural programming in 1 year, OO in half a year and suddenly this project? :D Don't forget I have a fulltime job and this is evening school - So we don't have daily classes)
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 83

Assisted Solution

by:CodeCruiser
CodeCruiser earned 500 total points
ID: 35465342
0
 
LVL 24

Assisted Solution

by:Jeff Certain
Jeff Certain earned 500 total points
ID: 35466400
Mutsop,

Universities and colleges really don't get it when it comes to teaching software development. You're likely to have taken a course that focused almost exclusively on syntax, and the problems they gave you were almost certainly trivial and contrived. Worse yet, they probably taught you how to use while loops, as an example, in a completely inappropriate way. It speaks highly of you that you recognize this.

As for writing "good OO code," the books I recommended would help. If you'd prefer something online, Robert C. Martin's "SOLID" acronym (see http://en.wikipedia.org/wiki/Solid_(object-oriented_design)) is a pretty good start for the things that you want to keep in your head.

Also, starting to do test-driven development (TDD) forces you down the correct path in some cases. At the very least, it keeps your methods cohesive and independent -- which makes it much easier to refactor when needed, if your objects weren't quite as tight as you need them.

As far as business layer, UI and data layer... that's really n-tier design (or architecture).
0
 
LVL 3

Author Comment

by:Mutsop
ID: 35466572
@CodeCruiser
Will check into these links! Thanks

@Chaosian Right to the point! :)
Will check into the SOLID design "patterns" later tonight. As for the TDD, that seems quite intuitive :)
So you start of with tests and build upon them till they pass.
0
 
LVL 24

Expert Comment

by:Jeff Certain
ID: 35466895
Mutsop,

Exactly. Red, green, refactor becomes your mantra. Make it break, make it pass, clean up the code. Although it's not the goal, this helps avoid some bad practices (global/class level variables being used to store object state inappropriately, for example).
0
 
LVL 3

Author Comment

by:Mutsop
ID: 35467004
Forgot to ask,
what do you mean by: "As far as business layer, UI and data layer... that's really n-tier design (or architecture)."?
0
 
LVL 1

Assisted Solution

by:TSSTJeff
TSSTJeff earned 500 total points
ID: 35483375
I truly feel for you and have been in your position many years ago.  My solution became just part of life.  I write code everyday, and every week I pick something out of the fast list of objects that you can access from visual studio and teach myself how to use it.  With that said I am a veratious reader and text is almost as slow as cirriculum but it is still very possible to teach yourself how to program, patterns are a good start, but its like doing an oil change if you have never done it then you dont know and when you do you know that particular vechical.

In short do it your self think of a project you want to build or find something that is out on the web and try to build it.  In the beginnning it will be frusterating but eventualy with patients it will get easier.  Then at some point youll notice that you actually know something well.  For me my first big realization came with a mastery of Regular Expressions.  But, that was a project for work. Never the less, it was a success and I am askd to write them all the time now.

The pitfalls will be that there is so much wrong information on the web, examples that dont work, or an example in C# that wont convert to VB, and my favorite is an example that is so complex that you cant figure out what the programmer did.(Thanks Microsoft for console program examples).  But just have some faith and have a stab at it knowing what you know,  you are already in a good place for help.  And while on the path start with security it will save you so much time later.

Good Luck.
0
 
LVL 24

Expert Comment

by:Jeff Certain
ID: 35483954
The separation of different concerns into different layers (often reflected as different projects) is referred to as an N-tier architecture. It isn't strictly OO per se, although it does end up helping to enforce separation of concerns.

The biggest benefit from N-tier architecture comes when you need to accomodate changing business needs. For example, your application may be a Windows Forms application... and then your boss' boss' boss decides you need to migrate it to the web. If you UI and business logic are separate, this becomes an exercise in writing only the web UI. (Leaving aside a few things like page lifecycles and state management that AJAX really helps with.) If your UI logic and your business logic aren't separate, this becomes and exercise in rewriting everything.

This is partly why the Model - View - View Model (MVVM) pattern has become so popular. It helps enforce these separations.
0
 
LVL 1

Expert Comment

by:TSSTJeff
ID: 35483985
I agree totally with Chaosian N tier is a must to allow for adaptation for changing business needs.
0
 
LVL 3

Author Comment

by:Mutsop
ID: 35775119
Sorry for the late response.

But how would you know then what kind of data model you should use?
For example: NHibernate, ADO.net, ... and if I'm correct there was something new last month but can't remember the name (something expression 4?)
0
 
LVL 24

Expert Comment

by:Jeff Certain
ID: 35777194
Entity Framework 4 might be what you were thinking of.

That's pretty much the reason for N-tier architectures. The rest of the application should be independent of your data access, letting you use whatever data access technology you prefer.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question