Question Getting started with C#, OOP and other lovely things


New member
Jul 10, 2019
Programming Experience
Hi, all!

I've just started a new job as an automation tester using C# + Selenium. (I was using VBS from UFT in my other job)

The way they work here is so different with what I was doing, just to mention something that I noticed after some research:
- They use OOP, so I'm seeing Interfaces, Inheritance, access modifiers like protected, virtual, etc. (May sound obvious, but I was working with Structured programming, so seeing this concepts in action confuses me quite a lot.)
- They use high order functions, lambda expressions, generic classes and LINQ. I'm talking about tools that have a different way of being written and may confuse some newbie like me.
- I feel like they use other things related to C#.Net Frameworks.

I have made a C# and an OOP introduction courses but as usual those are not enough to handle a real job.
I struggle to understand some situations that I face, why sometimes it gives X error and how to fix it. So my day goes by making tons of tries and I can't feel I'm really learning and, whatever the output of my effort is, I have to put its quality in doubt because of bad practices I may be doing.

Could you recommend me something to improve my learning phase? You can say "Hey, you just listed a lot of things you can Google! Go do it!" or "There's nothing to say, it's about having a lot of hours coding." and yes, you're right, but since I'm already in the game and there is a LOT of material available for every topic I mentioned I'd wish I could go through this learning phase in a better way, if you have some material to share I'd be really thankful.

Thank you in advance!
To learn the "why" and a little bit of the "what" for C# and object oriented programming, I used to recommend the "Effective C#" and "More Effective C#" books. Reading the reviews of the third edition though makes me have some doubts about continuing to recommend them. Perhaps get the first or second edition -- should be cheaper now that there is a third edition that is out. The books presume that you already know how to program but want to hone your skills.

As for that transition from structured programming over into object oriented programming, I can sympathize. Since I had originally taught myself BASIC, 6502 Assembly, Forth, and Pascal, and later learned C, moving into C++ was an interesting learning curve. To make matters worse, I was learning C++ as "C with classes", so I still essentially writing structured code, rather than object oriented code. At that time for me, encapsulation was just a way to organize and protect variables and functions; inheritance was just a way to minimize code duplication and a way to organize code; and polymorphism was just a way to not have to deal with raw function pointers. The light bulb didn't light up for me until somebody said something like "object oriented programming depends on message passing and not caring how the message is handled". Suddenly those words meant more to me since I didn't really have to care about how an object was implemented, I simply needed to talk to its interface and it would give me a response back. As structured programmers, we inherently think about the minutea and micromanaging things, and keeping track of any side effects. As an object oriented programmer, we tend to think at a higher level and trusting that objects do what they are supposed to do without any side effects.
Top Bottom