An introduction to C#: What it's like to learn and work with C#

What is C#? CFG Ambassador Mariam Hussein shares her learning experience with C#, and how she uses it today.

14 min read

☁️ Why should you learn C#? Code First Girls Ambassador Mariam, a Software Engineer @ Slalom, answers frequently asked questions about C#in our latest blog! Mariam explains the differences and similarities between C# and other coding languages, and how she uses C# in her day-to-day role. Mariam discusses how C# promotes various good programming practices, and her tips for overcoming common challenges and barriers when coding with the language. She also reveals the growing demand for C# in multiple industries and shares key advice for people new to this language development. For more tech and CFG-related content, follow Mariam on TikTok!

THE HOT SIX QUICK FIRE QUESTIONS!

What is your favourite season?
Autumn! I am an Autumn girl through and through. Wearing stuff to be cosy while the seasons are changing is one of my favourite moments.

What is your comfort food?

Recently I’ve been eating Bulgogi stew at my favourite place in Manchester – Koreana. The broth and vegetables are so yummy and it’s 100% a comfort food for me right now.

What is your favourite flower?
Baby’s breath! I like to dry them and use them as decoration.


What is your favourite way to destress after a long day of coding?
Sometimes I literally code on personal projects after work. But, a lot of the time, I will go to the gym or game any work stress away – (currently obsessed with Nier Automata!)


What is your favourite coding language?
I love a mix of TypeScript and Python and have recently been on the C# hype.

blog-graphics-introduction-to-c-sharp-ambassador-guides-mariam-quick-fire-questions

Hi Mariam! Please give a brief intro about who you are, what your tech experience is, what you do professionally, and why you want to become a CFG Ambassador. 👋

Hi! I’m Mariam! Before starting as a tech career switcher, I worked as an Enterprise Assistant at the Masood Entrepreneurship Centre – the UK’s leading University-based startup incubator. Currently, I’m a software engineer at Slalom, where I focus on building products and providing digital transformation to clients. As part of my work, I have focused on delivering high-value transformation work as part of a wider team of engineers, project managers and consultants. My favourite languages currently include TypeScript and C#.

 
Since switching careers, I have focused on demonstrating my diplomatic acumen, developing my technological knowledge, and giving back to the community by highlighting pathways into tech. Through my work as a MIRAI Delegate and a JCI TOYP Delegate, I have presented and spoken with high-profile political figures on digital skills.

 
As a Code First Girls Ambassador, I am passionate about accessibility in digital skilling and mentor those who wish to pursue careers in technology. Currently, as an Ambassador, I am focusing on curating events in my area to create a local community of people to uplift one another. Alongside this, I focus on creating content and providing accessible resources for those wanting to pivot into tech using my TikTok Platform.

“The combination of its versatility, readability, and ecosystem support makes working with C# a rewarding experience for developers, allowing them to bring their ideas to life and create impactful software solutions.”

How does C# differ from other programming languages, especially those in the C family like C++ and Java? 🪴

C# is a more modern, high-level language that’s quite similar to other languages like C++ and Java.

C# is an object-oriented programming language, which means it can be quite different to use and understand when compared to JavaScript and Python.

However, C++ is more complicated because it mixes different ways of programming and lets a class take on features from more than one source.

The other aspect that’s different in C# compared to C++ and Java is their performance. C++ has the highest performance as it will directly compile their code to machine code and requires no runtime environment overhead. However, C# and Java both have lower performance as memory and environment management are taken care of without manual efforts.

Choosing between C#, Java and C++ will genuinely depend on the type of engineer you’d like to be, your preferences in syntax, and the type of coding you’d like to do. However, I recommend C# for people who want to focus on a rich set of features in a programming language that has the ability to develop websites, desktop applications, games, and a wide range of other application domains. More importantly, from working in the Manchester tech ecosystem, I’ve noticed a huge demand in .NET and C#-based engineers in local tech companies. When compared with the USA, there is a higher demand for C# and .NET compared to Java. My main piece of advice is for people to try and explore the 3 different languages to experience their differences!

“Choosing between C#, Java and C++ will genuinely depend on the type of engineer you’d like to be, your preferences in syntax, and the type of coding you’d like to do. However, I recommend C# for people who want to focus on a rich set of features in a programming language that has the ability to develop websites, desktop applications, games, and a wide range of other application domains.”

What are some common tasks or projects you work on using C# in your day-to-day tasks? 🤔

Because I work in Tech Consulting, the languages I use may change from project to project. My most recent project meant we had to build a new backend for our client. For this, we used .NET, which is a software development framework to actually build and run applications. You can use .NET to run anything on Android, Apple, Linux and Windows systems and it has a huge set of libraries and APIs to help in developing software.

In my day-to-day with C#, I usually have a ticket (a task!) to pick up where we will have to code a new functionality piece or a feature in an application. Usually, the team I’m in will build the logic in our software to do this task and validate it using tests and processes to ensure the task requirements have been met. In terms of specific projects I’ve worked on, include developing custom web applications, implementing RESTful APIs for data communication, and integrating third-party services into existing systems. These tasks often involve collaborating with designers, front-end developers, and stakeholders to ensure that the end product meets the client’s needs and specifications. Additionally, I’ve also had the opportunity to work on optimising the performance and scalability of applications, troubleshooting and debugging issues, and refactoring code to improve maintainability and readability.

Working with C# allows me to tackle a diverse range of projects and challenges, keeping my work dynamic and engaging.

“One of the aspects I find most enjoyable about working with C# is its versatility and ease of use. C# strikes a balance between being a powerful, feature-rich language and being relatively straightforward to learn and use.

What do you enjoy most about working with C#? 🫶

It’s an opinionated language! I started my tech journey learning JavaScript and Python, and there’s a lot of flexibility with how you structure your code in those languages. However, I find the structure and conventions enforced by C# to be reassuring; it helps maintain consistency across projects and makes collaborating with other developers smoother.

One of the aspects I find most enjoyable about working with C# is its versatility and ease of use. C# strikes a balance between being a powerful, feature-rich language and being relatively straightforward to learn and use. Its syntax is clean and expressive, making it a joy to write code in. Additionally, the extensive ecosystem of libraries and frameworks built around C# and the .NET platform provides developers with a wealth of tools to tackle a wide range of challenges.

Moreover, C# promotes good programming practices such as object-oriented programming (OOP) and strong typing, which contribute to writing maintainable and scalable code. The language features, such as LINQ for querying data and asynchronous programming with async/await, enhance productivity and enable developers to write efficient and responsive applications.

Another aspect I appreciate about working with C# is its integration with other Microsoft technologies, such as Visual Studio IDE and Azure cloud platform. This seamless integration streamlines the development process and enables developers to build, test, and deploy applications with ease.

The combination of its versatility, readability, and ecosystem support makes working with C# a rewarding experience for developers, allowing them to bring their ideas to life and create impactful software solutions

“Jump into tutorials and get started with simple projects to get a feel for the language. This will let you familiarise yourself with C#’s syntax, data types, and basic programming concepts. Building simple projects first, like a calculator or a to-do list application, not only reinforces your understanding but also helps you to gain confidence in your coding abilities. ”

Are there any particular challenges or barriers that developers should be aware of when working with C#? ⛰️

Working with C# can be really enjoyable but some specific issues I’ve personally found can sometimes make it difficult to overcome as a newer engineer. 

  1. One of the first barriers for me personally was mastering the syntax and structure, especially for beginners. C# is a statically typed language, meaning you must define data types (like int for integers or string for text) explicitly, which can be confusing at first. 
  2. Another challenge is understanding the .NET framework, which C# relies on heavily. The .NET framework is vast, offering many libraries and tools, which can be overwhelming but are essential for building robust applications.
  3. Memory management is another area where developers might struggle. While C# handles most of this with a garbage collector that automatically frees up memory, knowing how to optimise memory usage and avoid leaks is crucial for performance. Additionally, asynchronous programming in C# using async and await keywords can be tricky to get right. It’s a powerful feature for handling operations that take time (like downloading data from the internet), but if not managed well, it can lead to bugs that are hard to debug.
  4. Lastly, developers transitioning from other languages might find C#’s object-oriented approach a bit challenging. It emphasises creating objects and classes, which is a different mindset compared to procedural programming. 

However, once these initial hurdles are overcome, C# becomes a powerful and versatile tool in a developer’s toolkit. The key is patience and practice, making use of the abundant resources and communities available to C# learners.

 

“My main piece of advice is for people to try and explore the three different languages (C#, C++, and Java) to experience their differences!”

Can you share any tips for working with C# (e.g. best practices, debugging/troubleshooting)? 🛠️

When working with C#, there are a few best practices and tips I learned along my own journey that can be useful for troubleshooting and using the best approaches in code. 

At the start of your journey, you should aim to write clean and readable code by using meaningful and relevant variable and method names and keep your code well-organised. Consistent naming conventions and indentation make your code easier to read and maintain. On top of this, don’t forget to comment and document your code, especially complex logic. XML documentation comments (///) can generate helpful documentation for other developers and your future self.

Take advantage of LINQ (Language Integrated Query) for querying collections in a concise and readable way. Proper exception handling using try-catch blocks is crucial; catch specific exceptions to handle known issues and provide meaningful error messages to users. Writing unit tests with frameworks like NUnit or MSTest ensures your code works as expected and makes bug detection easier. Regular refactoring improves your code’s structure and readability without altering its behaviour, and tools like ReSharper or Visual Studio’s built-in features can help.

For debugging and addressing any problems in your code, using a debugger can be helpful. You can understand why and how your code ‘breaks’ by setting breakpoints, watching changes in any variables, and stepping through your code. You can watch out for common mistakes like null reference exceptions and use tools to profile and analyse your application’s performance. 

If you’re stuck, the C# community is active and helpful, with resources like Stack Overflow and Microsoft’s documentation offering solutions and guidance. By following these tips and utilising community resources, you’ll become a more proficient and confident C# developer.

“As you’re on your C# coding journey, start small and gradually increase the complexity of your projects. Beginning with small, manageable tasks allows you to focus on mastering fundamental concepts before tackling larger challenges.”

What advice would you give to someone just starting with C# development? 💡

If you’re just diving into the world of C# development, let me share some tips to kickstart your journey.

1. First off, start coding right away. Jump into tutorials and get started with simple projects to get a feel for the language. This will let you familiarise yourself with C#’s syntax, data types, and basic programming concepts. Building simple projects first, like a calculator or a to-do list application, not only reinforces your understanding but also helps you gain confidence in your coding abilities. I would then advise you to add complexity and move on from building more simple projects to working on a project that follows a passion you have or even solves a problem you may have seen/experienced.

2. Next, I’d recommend tapping into online resources for beginner C# developers. Resources like CFG’s C# MOOC and YouTube offer tutorials, ranging from introductory lessons to more advanced topics like object-oriented programming and asynchronous programming with async/await. Take advantage of these resources to deepen your knowledge and expand your skill set.

3. As you’re on your C# coding journey, start small and gradually increase the complexity of your projects. Beginning with small, manageable tasks allows you to focus on mastering fundamental concepts before tackling larger challenges. Consider building a basic text-based game or a simple web application using ASP.NET Core to practise your skills and solidify your understanding of C# fundamentals.

4. Don’t underestimate the power of community and collaboration in your learning journey. Join online forums, such as the C# subreddit or the C# section on Stack Overflow, where you can engage with fellow developers and ask questions. One community I always come back to and learn from is the Code First Girls’ Community. The provision of their MOOCs, Courses and Community means you can find people to work on projects with, get support from instructors, and even find someone to help with barriers and challenges.

5. Lastly, the biggest piece of advice I always give is to embrace the art of asking questions. Whether you’re struggling with a specific concept or have a bug in your code, don’t hesitate to seek help from the online community. Remember, every programmer, regardless of experience level, has faced challenges and has asked for help along the way. Embrace the learning process, stay curious, and never stop honing your skills as a C# developer.

Thank you to Mariam for providing such a thorough introduction to C#! Click here for more Code First Girls community stories and blogs! 🤩 

Interested in learning C#? Sign up for our C# MOOC! Keep your eyes peeled for C# Coding Kickstarter Classes later on in the year as well.