Thursday, June 12, 2014

60 days with C#

Two months have gone by. At this moment I’m not sure a “career” alone is what motivates me and keeps me going with learning to code. I think it’s … the code. I’m a geek. I love this. I love computers. I love motherboards, CPU’s, GPU’s, I’m an avid builder and hobbyist, and I love following tech sites. I love what’s inside. Development is just one more thing. However it’s more intimate. It’s at its deepest level. It was going beyond what I’m used to because it’s going inside and being able to give life to something. It’s wanting to know why. So I am happy where I stand at sixty days with C#.

So where am I?

Ok, well I can’t be the software development “judge” and deem what I have mastered and how much of a “rock star” coder I think I am at the fundamentals … but I would have to make the statement that I am pretty much there. I have been exposed to every fundamental element of the C# language. I will say again – fundamentals – of the C# 5.0 language. However my education … has only just begun. And I hope it to never end.

     
  • Access Modifiers, Namespaces, and Scope
  • Reference vs Value Types

  • Boxing and Unboxing – Stack vs Heap
  • Methods w/Polymorphic features – virtual/override
  • Extension Methods
  • Objects and Classes – Partial Classes – Abstract Classes -Inheritance
  • Interfaces
  • Structs and Enums
  • Decision making – conditionals
  • Exception handling
  • Operator overloading
  • Anonymous types
  • Asynchronous programming – async & await keywords
  • Generics
  • Collections
  • Generic Collections – .. List<T> .. Stack<T> .. Queue<T> .. HashSet<T> ..etc there are more of course.
  • Using iterators to loop through these collections and understanding the IEnumberable<T> generic interface and its GetEnumerator() implementation.
  • Delegates and their role with –
  • Events
  • Lambda Expressions
  • Language Integrated Query – LINQ

As stating in other posts, Pluralsight has been a huge help with amazing instructors like Scott Allen, Shawn Wildermuth, Jesse Liberty, Dan Wahlin, and so many others. Books from Adam Freeman and John Sharp as I listed in the last post. The most I really learned from a book was in John Sharps book Microsoft Virtual C# 2013 Step by Step. This book broke every component of the language down step by step and provided helpful coding examples with real world scenarios in developing .NET applications with C#. Again, I recommend it for any beginner developer just now trying to tackle the language or a more seasoned developer who may want to inspect an element of the language more closely.

So Where from here?

Well coding of course. I will always try to master these core fundamentals and put them into practice by choosing an area of the language to focus in. For me right now it is Web Applications with ASP.NET MVC, Web API, and Entity Framework. For others it may be Windows Store Apps, Windows Phone 8.1 apps using XAML, or even WPF and classic Windows Forms. That’s the beauty with this language, it is used EVERYWHERE. In fact you don’t even have to stick with just Windows. With the help of Xamarin you can develop applications across Windows, Android, and even iOS using just one language – C#. Oh and don’t forget video games and entertainment with Unity! There’s more than that, you really should go check out how many solutions there are for developing video games of all different sizes with C#.

So I will continue to code and stay fluent with the fundamentals of the language while exploring new areas of the .NET framework. Right now I am working my way through the Adam Freeman book I mentioned in the last post and am actually choosing ASP.NET MVC to develop my personal site and portfolio with, using Windows Azure as the hosting service; which I would recommend using. It’s affordable, scalable, and of course integrates nicely and directly with Microsoft tools like Visual Studio and WebMatrix. I will also be reading the legendary C# in Depth by StackOverflow.com legend, Jon Skeet. And while coding and reading I’ll always be watching the latest trends online and following blogs, watching videos, and reading as much as I can. After learning the fundamentals of this language I now want to study good software development techniques and practice writing effective and maintainable code. I also want to take advantages of tools and techniques that sharpen our abilities and expand the rigidity of our code, for instance using DI containers like Ninject and StructureMap where needed, as well as Test Driven Development with Unit and Integration testing.

So this is an achievement for me. Moving through the basics and now putting them into practice as much as possible while always learning and wanting to improve. There’s always a lot to be reading about so I’ll be staying busy. I will be creating some future posts about more in depth information pertaining to the internals of C# and the .NET framework. Showing code examples of some of these fundamentals and how they can be applied when coming from another language or framework. It would be good to compare and contrast some things I have observed. Before coming to .NET the only development experience I had had was an introductory course using the basics of HTML/CSS and about six months of Javascript. Just the concept of implicit vs explicit typing (which yes, now in C# you can implicitly declare variables and let the compiler decide what they are at runtime) and the concept of classes alone made me feel like I was looking at something totally new. Well off to enjoy the rest of my weekend. I’m feeling good about moving deeper into these technologies and will continue to share these thoughts and feelings with you (and myself) as the journey continues. I hope to have my site up and running as soon as possible so I can have something other than my blog to show. I’m still working on setting up dates for my first client project with the salon stylist so I can build a commercial website for them (using ASP.NET) and hopefully get familiar with Git very soon. I’m a little late on that.








So, plenty to hear and see from me soon!



And one more note as far as a good bit down the road, since I do love client technology and the strides that Javascript has made as the language of all and any, I do want to dive deep into developing with the MEAN stack, as well as integrating client side MVC technology such as Angular JS in with .NET applications. … But that’s down the road. One day at a time. Because I also have a Java class coming up in school I have to prepare for. I’m sure you will see quite a few posts on my journey through Javaland during that semester.


Hey I’m trying to get some more Twitter followers ..and heck even find some more cool people to follow, so hit me up! @dptech23 

No comments:

Post a Comment