Should I Learn Julia?

Yes, On One Condition!

Why Julia, Why Now?

Programming is a diverse field! You have people from all around the world, tackling every sort of problem imaginable with their computers. From web-developers, to mobile app creators, from legacy code maintainers, to scientific computing mathematicians, many people need different features and different languages.

Julia is a relatively young language, released in 2012, and was designed to meet the high-performance needs of numerical and scientific programming; while being a general-purpose programming language. Depending on what you are looking to build now or in the future Julia may just be the language for you!

Nassim Taleb and Julia

For those of you who don’t know who Nassim Taleb is just bear with me for a minute on this tangent.

But really if you haven’t heard of him you should check out some of his work Wikipedia – Nassim Taleb.

One of Nassim Taleb’s areas of expertise is in the field of risk management, and if you are going to undertake the commitment of learning a new programming language you should think a little bit about risk. While I do believe that you can’t really choose a wrong programming language, depending on what you are trying to get your computer to do, some languages will make this task easier or at least more intuitive. Nassim Taleb often discusses a risk management technique he calls “the barbell strategy”. The barbell strategy was initially applied to investments. Many of you are probably familiar with a graph that looks like the following:

Risk Reward Chart

Many investors in search of a higher return, choose to be somewhere in the middle. They underestimate their risk exposure and end up going bust!

The barbell strategy suggests, putting what you need at the left side of the chart, where you get a small and safe return. Then to increase your risk exposure, put some assets to the far right, where they may get a large return, but if you lose them you will not be broke. You get the potential for some large returns on a portion of your assets, while you keep the assets you need safe.

Umm… I Thought We Were Talking About Julia?

Yes! So my main programming language is C#. I consider C# to be a safe language with plenty of demand and a solid future (JavaScript would be another great example). With this in mind, I can invest time into learning Julia, with the goal of expanding my data science and numerical programming abilities. Sure there is R, or Python, or Scala, or some others, but I have decided that Julia offers a great potential (return) and that now is a great time to start learning it. As Julia continues to grow and if it does become the language for specific applications, I will have years of experience at that time.

If you want to become a software developer today, should Julia be your first language? It is fairly safe to say no. BUT on the condition that you can handle most the programming challenges in your field already with a language that lets you share and work on code with others, then Julia would be a great skill to add to your toolkit!

Stay tuned for more about getting started with Julia and my experience so far.

Thanks for reading,

Thomas

C# – Intermediate

Knowing Enough C# to be Dangerous

Awkwardly wondering what to do after you get through your first C# tutorials?

Learned the C# syntax, but now what?

Intermediate C# Developer

This post builds off my last to help direct you on your path to becoming a professional C# developer. This material will be right for you if you have been working with C# for about 3-6 months. There is some wiggle room in those numbers, as there always is, but if you are entirely unfamiliar with C#, please go here : Learning C#.

Being an intermediate developer can be tough. You know how to get a project started and you can Google search your way through Stack Overflow well enough to do most things, but when can you consider yourself a “professional”? Yes, that elusive term that even many with it don’t even feel that they deserve. Even great developers like Scott Hanselman say “I’m a phony!”. So when can you feel confident in your skills??

If you are here, I would say you should feel some confidence! You are doing the most important thing, you are working to be better. Now you won’t likely be Senior Software Engineer material after finishing just these videos, but you will definitely have a deeper understanding of how C# works.

Again, this post will be made up of a series of PluralSight courses. You should know that I don’t get any credit for directing you there, I just seriously believe it is one of the best places for C# learning! The only thing they lack is a little guidance, so hopefully my series of posts will guide you on your journey of learning C#.

Intermediate Level C#

Being A Better Coder

Duration : 8 hours 25 minutes

C# Best Practices : Improving on the Basics

C# Best Practices 2 : Collections and Generics

These two courses are by Deborah Kurata, and are an excellent place for the aspiring C# developer to continue their learning. Early tutorials and courses tend to focus on syntax and just the basics of how things can be laid out, and how they work together. What those courses are lacking is the important aspect of what makes good code. These two courses cover everything from what makes a good class, to how to create good methods, and introductions to collections, generics, and LINQ.

Pro Tip : If you are planning on doing the following deep dive videos, you could skip the second course here, as these topics will be covered in-depth in the following series.

Intermediate Level C#

Language Deep Dive

Duration : 27 hours 51 minutes

C# Interfaces

I debated including this course in my previous post on C# Advanced Foundations. This course covers the differences between interfaces, abstract classes, and concrete classes; and when to use them. Interfaces are taught not just from a C# perspective, but through the important Object-Oriented Programming concept of inheritance.

Pro Tip : Understanding interfaces will help you with all of the following series!

C# Collections Fundamentals

This course spends about 20 minutes on each of the main types of C# collections. It explains the pros and cons of each and in which situations you would want to use them.

C# Equality and Comparisons

Eventually you are going to want to compare objects that are more complicated than the standard C# value types. How will your code know if your cat object > dog object? The answer is false, but that’s another story… You need to be able to define how objects are compared, there are a couple of interfaces which will help you with this, and they are all explained in this series.

Pro Tip : These above three courses will expand your knowledge of how to structure your code, what existing C# structures you can start using now, and finally how to make the most of your custom classes.

C# Events, Delegates and Lambdas

Events are a very powerful feature of C#. You will often want to write code that only executes when something happens. This course will teach you how, and how to keep your code clean when you only need to use a function once, with anonymous functions.

C# Generics

You’ve been probably using generics since the collections course without fully realizing it. Upon completion of this series you will be able to use generics with your custom collections, classes, APIs, and more.

Pro Tip : The above two courses really fit together. Generics are a critical part of higher level anonymous functions (Action and Func), but are used in many other places, particularly collections.

C# Practical LINQ

Another course by Deborah Kurata, and this one will get you up to speed on the great power of LINQ. You will learn the two methods for using LINQ, declarative and implicit, and when to use each one.

C# Extension Methods

After the LINQ course you will know that they are built using extension methods. This course will further your ability to not just use LINQ methods, but to write your own. You will also learn how to work around many restrictions, such as restrictive access modifiers through various compiler tricks.

Pro Tip : These final two courses on LINQ and Extension Methods will allow you expand (no pun intended) on the libraries you may use, and to interact with your programs data with ease!

Think you can handle the deep dive?

I do! Getting through the deep dive will give you a really solid knowledge of a large chunk of C#. Not only that, but you will have a great understanding of when to use what. Knowing the strengths and weaknesses of different collection types and the use of lambda functions, especially when used with LINQ or your own extension methods will make you a much better programmer. You will not only be able to tackle harder problems, but will be able to do so much more efficiently.

I hope my outlines are helping you navigate the great PluralSight courses! I have one more coming up shortly.

Thanks for reading,

Thomas

C# – Advanced Foundations

No Longer a Beginner, Not Yet a Pro

Ready to take you C# skills to the next level??

When I got started learning C# I looked to PluralSight . This has proven to be a great choice! There are literally weeks worth of great C# and .Net content. While I did not get started advancing my C# knowledge THAT long ago, it was before PluralSight started offering “Paths”. At that time, way back when, they had just a few old blog posts to guide me on where to get started, and which order to watch some videos in. With the release of PluralSight’s C# Path I started comparing my learning track with theirs…

I may be bias – but I think mine’s better! So I’m going to share it with you.

Note: If you are entirely new to C# check out my blog post for you here : Learning C#

Advanced Foundations Level

Duration : 20 hours 13 minutes

C# Fundamentals With Visual Studio 2015

Even after the free tutorials I linked in my Learning C# post, I would still suggest doing this course. Practice makes perfect, and the instructor Scott Allen (on Twitter @OdeToCode ) is great at explaining things. It may be your second or even third time through some of the C# basics, but it won’t hurt you and you’ll get a chance to explore some related concepts like the Common Language Runtime (CLR), and Object Oriented Programming.

Pro Tip : If there is a new version of Visual Studios, check for a new version of this course.

C# Programming Paradigms

This course is again by Scott Allen and introduces you to some really powerful C# features. Language Integrated Queries, or LINQ, will become a regular part of your programming once you learn them. The Dynamic Language Runtime, and Functional Programming will give you glimpse at some new ways to think about your programs. Finally, the course wraps up with Scott’s 10 rules for writing better C#.

Pro Tip : Even if you know the rest, watch the 10 rules! Scott has been a Microsoft MVP for over 11 years now, take about advice from a pro!

What’s New in C# 6

Great chance to get a look at the internals of C#, hear about how the language is changing, and the roadmap it is on. While the last two series will get you started writing great C#, this one will try to save you time by showing you some of the new syntax changes. Also, get ready for you introduction to Roslyn.

Pro Tip : If there is a new C# (7 isn’t too far away as I write this post), check out that one too.

CLR Fundamentals

This course slows things down with Mike Woodring (another Microsoft MVP) and will explain how all the acronyms you’re always hearing work together. From what really is the .Net Framework, to understanding Just-In-Time (JIT) Compilation, the Global Assembly Cache (GAC), and even concepts like CLR Interop! If all that sounds like gibberish to you, you know what to do, watch these videos!

Pro Tip : Don’t skip this one, this low level stuff could save you a lot of time debugging in the future.

CLR Threading

How many cores does your processor have? I bet it’s more than one. I bet it’s more than two. You’re going to want to use them, so you’re going to want to watch this one. It is authored again by Mike Woodring (on Twitter @mcwoodring , and he is going to help you get through understanding the main parallel programming concepts, and concerns.

Pro Tip : I didn’t use these ideas right away, but when I needed them I was happy to know them.

.Net Regular Expressions

I almost didn’t watch this course, but by the end I was happy I did. Regular expressions are used for pattern matching with text. How will you know if a user input string is an email address? Or a phone number? Regular expressions can! Yes, the syntax gets a little (a lot) crazy, but should you ever need to do a lot of text processing you will be happy to know about the power of regular expressions.

Pro Tip : Turn up the video speed a bit. Get the concepts, you can look up the specifics when you need them.

I never said it was going to be quick! There is a lot to learn with C#, but thankfully these core skills can be transferred to all types of projects, desktop (WPF, Windows Form, Linux and Mac with .Net Core), mobile (iOS, Android, and Windows with Xamarin), and web-apps (ASP.NET).

Stay tuned for more my next building block of courses next week. If you make it through all the above before then, just message me and I’ll send you more material you coding beast!

Thanks for reading,

Thomas

Learning CS or CSharp – but mostly C#

Should I Learn C#?

Why should you choose to learn C# out of all the other languages? Perhaps you are trying to decided between it and Java, or Python, or C, or JavaScript, or [insert other great language choice]. Well quite simply you should choose C# to learn now, because C# is the best! … Is what I wish I could say, but truly there are many different programming languages and most have varying pros and cons for many applications. With the disclaimer that there is certainly no “best”, C# has many great features and is a good beginner language. People smarter than I have written great and thorough articles on why to choose C#, linked below is just a small sampling. I didn’t want to repeat them here, but have summarized what I think are some great points below. Additionally, I have included some content to get you on your way learning C#.

Sampling of why you should learn C# references:

Why Learn C#
6 Reasons To Learn C#
If You Had To Start Over Learning…

TL;DR

Common syntax – you’ll get used to {curly braces}. This should help make it easier for you to read other curly brace languages, at least enough to get the gist of what the code is doing. This is very helpful, as sometimes you will only be able to find code examples in other languages, so being able to quickly interpret other code and get your C# code underway is a big bonus.

High level language – takes care of a lot of the little details and lets you get going. Now this isn’t to say it handles everything for you, but you will get good mileage.

Huge community – If you are unfamiliar with Stack Overflow, you soon won’t be! C# has the 4th largest community on Stack Overflow. This means if you have a problem, someone else probably has had it too, and you can find a solution here quickly.

You can write pretty much anything, anywhere – Microsoft loves open source if you hadn’t heard! With the release of .Net Core, and Visual Studio – Code you can now program C# on any platform in Microsoft’s “best” C# IDE Visual Studio. This means yes to Windows, Mac OS X, and Linux; and this means yes to desktop, web, and mobile applications.

Getting Started Learning C#

Everyone learns differently so I’m going to include a couple different methods for learning C# which hopefully you will find useful.

I got started learning C# with the course C# For Beginners on Microsoft Virtual Academy. Microsoft Virtual Academy has a plethora of free content to help anyone at any level get underway with many Microsoft technologies, and the best part is it is all free! This is probably the best way to get your feet wet with C#, it has around 8 hours of video tutorials, split into 24 modules, with 21 assessments. The 24 modules are great for when you are busy and can’t allocate a big chunk of time to learning all at once. Just complete a module or two when you can.

Now I haven’t tried this one myself, but if you tend to learn more through reading another free learning service by Microsoft is Getting Started with C#. This text based tutorial appears to cover many of the same topics as the Microsoft Virtual Academy course. This could also be a great option for learning on the go on your mobile or if you live in a region with slow or intermittent internet access. These tutorials will even get you coding C# right in the browser, no need to download anything!

Well there you have it, you should consider learning C# as it has a bright future and seems like it should be an in demand language for years to come. Microsoft’s recent moves to open source the .Net Framework and huge cross platform support will only increase C#’s popularity.

I hope that the links above help you get started on C# and stay tuned for how to take your C# skills to the next level!

Note: When you are ready to take your C# to the next level check out my next blog post for you here : C# – Advanced Foundations

Thanks for reading,

Thomas


Pssssst!
If you want to type a ‘#’ in a markdown header, switch to using HTML tags:
“<h2> Should I Learn C#? </h2>”