Want to grow as a C# developer and widen your knowledge? Discover tips from the senior C# programmer on task planning, coding, communicating, and more:
Interview With a Senior C# Developer_ Creating a Better Code.pdf
1.
2. Interview With a Senior C# Developer: Creating
a Better Code
Mobile and software development is an extremely lucrative field. Many
businesses transfer their products online, creating applications and
websites. Thatâs why the demand for skilled app developers is still quite
high and will continue growing till 2030. However, itâs not easy to win a
place under the sun and get your hands on a promising project. Trends
and requirements are constantly changing. How to keep growing as an
experienced specialist? Are the C programming languages still worth
learning, or are they slowly getting outdated?
We discussed those and other intriguing questions with the Shakuro
senior C# developer, Fedor. He has more than 10 years of experience in
software development and participated in a variety of projects. Fedor
also spent quite a bit of time teaching juniors cool coding tricks and tips.
Let us start with icebreakers. What is your ordinary
workday as a C# developer look like?
For starters, I set my mind on work: look through the plans, calendar,
emails, and messages. This helps me remember the context of
yesterdayâs tasks. If I have another free minute, I grab a cup of coffee
and talk a bit with my colleagues. Only after Iâm refreshed and energized
I get to work.
During the day, I try to plan my tasks according to the Eisenhower
Matrix. This method divides assignments into four groups: important and
urgent, important and not urgent, urgent and not important, and finally,
not urgent and not important.
3. Eisenhower Matrix from Slab
Itâs not surprising that I prioritize urgent and important tasks. Then, if I
have time left, I switch to other assignments. Of course, there are
different situations, but still, basing the plan on importance is key.
During app development, we often have meetings, and itâs crucial to get
ready for them. Revise the current tasks, stay up to date with the project
course, etc. Overall, itâs better to gather meetings connected with
technical aspects in the morning. The same goes for overseeing junior
software developers and other peopleâs work: you have more chances to
notice a mistake.
Why did you choose to study the C# programming
language?
I started writing code with Adobe Flash, which was used to create simple
browser games. I also tried out Turbo Pascal and Delphi while studying
at the university. But when it came to choosing the primary programming
language, C# was already a great option back in the day.
The .NET platform got the new framework version, and it offered a
versatile integrated environment for developing web applications. There
were many pre-installed options, and one could build web pages in a few
4. clicks. As a novice, I was amazed by that feature and started learning
the ĐĄ# language. I liked .NET for its convenience. A developer just
needed to deploy the platform and install Visual Studio â and they were
all set. One didnât have to adjust anything, create access, etc. Moreover,
.NET soon became open-source.
Also, C# is still one of the most popular programming languages. In
2022, almost 28% of mobile and web developers worldwide are coding
in this language.
Therefore, I think that the .NET platform and the C# programming
language are the easiest way for newbies to get into app development.
These tools donât require knowing some special architectures, drivers,
and other high-level coding magic.
_________________________________________________________
A great developer team is nice, but one programmer in the field is still a
warrior.
_________________________________________________________
Does C# language have any disadvantages?
Sure, it does. For example, if a developer needs extremely high
performance, they need to upgrade their skills in order to get that speed
from the .NET platform. Usually, that advancement takes lots of time: a
programmer has to discover new approaches, ways, and protocols, like
âunsafeâ, etc. And more importantly, they should be able to implement
them into the code.
Nevertheless, I think the pros outweigh all cons. The C# language just
requires patience and learning, like all other things.
What programming languages do you consider popular in
mobile and web development?
There are several of them, each has its pros and cons. For example, I
often come across:
Python
5. Machine learning is one of the most promising spheres nowadays.
Around 65% of businesses consider adopting this technology to help
decision-making. Most of such algorithms are running on Python
programming language, so it has a spike. It also has a low learning
curve for beginners: there are lots of pre-made libraries and frameworks
to ease the work. However, Python is different from C#. It is an
interpreted language, while C# is a complied one.
JavaScript
Lots of developers use JavaScript for website server deployment or for
creating browser applications. Small businesses and startups work with a
JavaScript runtime environment (Node.js) to write different scripts for the
server and client sides. It allows them to create dynamic web page content
before the page appears in the clientâs browser. This programming language
helps reduce the load on the server while still providing various tools to create
nice interfaces.
Programming Languages App by Ali Ezzati
6. TypeScript
It is an open-source programming language that is very popular in web
development. Developed by Microsoft, itâs a superset of JavaScript.
TypeScript gives strict and structural typing, which makes code
management easier. It also increases team performance since one
needs less time to integrate a new developer into the existing project.
TypeScript is usually used to create JavaScript applications, both for the
client and server side.
Go (Golang)
Go is aimed at high performance and operates well with various systems
located in different networks. So it is vastly used in processing large
amounts of information. However, it has other implementations as well.
For example, many companies choose the Go programming language
for their messengers, online video games, conferencing software,
microservices, networking, and even cloud computing services.
C++
Despite all speculations, itâs still alive and demanded by startups and
medium-sized companies. Skilled developers that create fast and
complex desktop or mobile applications quite often rely on C++. This
popular programming language also works well for building low-level
systems. C++ is extremely popular in the video game industry because it
gets on with the Unity engine. Thatâs why companies implement it in VR
and video or mobile games.
Still, setting one language as a goal is not really productive. Today
developers can switch from one language to another since they have
lots of similar things, approaches and methods.
What other languages, toolkits, and frameworks do you
use?
I tried out neural networks and machine learning, mostly with those
algorithms that had .NET optimization. Also, I had experience working
with PHP in one of my projects. As for my recent work, I used the
Arduino platform. It allows the developers to build their own devices
7. using the C programming language. I really liked Arduino because it
offers a convenient working environment.
As for the test applications, I often use Postman for checking requests
and building certain scenarios. From front-end applications, I tried out
Angular - itâs a platform for creating mobile and web apps. When our
team has to work with database servers, we implement Microsoft SQL or
PostgreSQL.
How do you deal with time estimations?
Giving relevant time estimations is a crucial skill for software developers
because other people depend on them. For instance, a project manager
needs to foresee any risks with development costs.
In the early stages, when there are few details about the project, itâs
better to use a top-down estimate: when you pick an approximate period
and divide the task into several parts. This method creates a certain
expectation, although itâs not always precise. When the team lead gives
you specific details and requirements about the project, then you can
rely on your estimates on previous experience with similar projects.
During the project development, the requirements can change, and so
can your estimations. In this case, if you are familiar with the
technological stack, you can start analyzing tasks, create plain designs,
and give more precise numbers based on bottom-up estimating.
For example, we need to create a weather forecast service for a website
banner that will appear on all pages. So, we look at all the detailed
requirements and say â in the best scenario, we will build the service in
3 days. If things go south, we give a more pessimistic estimation â 6
days. So the real numbers will be something in between. The key idea is
to get into that realistic estimation. If the app developer doesnât know the
tech stack, they have to fit at least into the longest time theyâve given.
Another tip I can give is to always check what knowledge youâre missing
if you fail with estimations. This is especially vital for junior developers.
8. _________________________________________________________
A good programmer is a lazy programmer. They strive to do
everything correctly at first take to avoid redoing the tasks.
_________________________________________________________
How to cope with deadlines efficiently?
Letâs look at two situations. The first one â the employer asked us to do
something in 7 days without checking our estimations. The second one
is similar, but we estimated the task for 7 days ourselves.
In the first case, the team will experience an enormous amount of stress
and will most likely make more mistakes. So this is a negative scenario,
which I do not recommend at all. As for the second one, itâs a positive
situation. People will be more productive because of the given
estimation, and the timing is more flexible. However, communication skill
here is also very important. A person may be extremely knowledgeable
in programming, but they can let down the team because of character. A
well-established communication is vital for proper teamwork in any
condition.
Team Management Dashboard by Conceptzilla
9. For a junior C# programmer, the key thing is to have a solid list of tasks
that they know how to do. If the mentor gives assignments the newbie
doesnât understand, then the missing piece here is on the seniorâs side.
This is not teamwork. Everyone should know what and how they are
doing.
How do you ensure the code quality?
The quality is based on several criteria that all team members should
know and share. There should be certain methods and ways to write the
code. Itâs a codex they agree to follow. The first rule is the code should
be readable both by you and your colleagues. The second rule is the
absence of any architectural errors. The mobiles and web applications
have many layers, like pies, so they should be âcookedâ according to the
recipe. This practice will help integrate people with lower skills into the
team and assist in avoiding any mistakes. The third one is code review.
Your team members and senior developers should check the code you
create for any errors and leave feedback.
For sure, some programmers wonât like the codex you offer because itâs
inconvenient for them. They have got used to doing things the other way.
Here, you need to find a golden middle or exercise in convincing people.
Moreover, many programming languages like C# have official standards
for code quality, as well as automatic systems for their testing. For
instance, SonarQube for the .NET platform. I think itâs a wise decision to
integrate them into the app development process.
Summing the answer up: the team imports the metrics from SonarQube
(as an example), takes the official code quality standard, and
synchronizes them in the working environment and in the developersâ
brains. Everyone is happy.
What are the best ways to keep the C# developerâs skills
sharp?
There are tons of different resources. I check out news and
advertisements in Microsoft magazine â MSDN. It is free and sent by
10. e-mail. Habr is another great website where you can discover new ways
to solve issues and find certain cases about specific frameworks, tools,
etc.
I like web development, so I study Blazor in my spare time. Iâm also
interested in server-side development, so I look for news resources in
that field. Alternatively, I dive into creating multithreaded applications.
This is a very complex topic, however, I prefer considering it a challenge.
Junior developers should have a list of topics they need to learn in order
to upgrade their level. Itâs better if such a list is given by the mentor.
During this time, one understands what they like to do most. So, if turns
out you donât like to code desktop apps for Windows, do not continue
that path and switch to a different one. Usually, senior developers have
one main specialization where they constantly evolve and a couple of
other skills just for experimenting.
Moreover, do not be afraid of negative feedback, like â hey, you have
an error here and here in the code. It helps you polish your skills and
become better at development.
What do you think about no-code technologies? Are they
the future of development?
I think itâs a really cool technology, however, keep in mind that no-code is
not as simple as it sounds. Such platforms are just an attempt to bring
business process management to a new level where the knowledge of
any programming language is not a must. Still, people should still be
familiar with the coding field. They need to understand how to build
schemes, blocks, algorithms, diagrams, etc. It requires IT skills.
In its current form, no-code eases the development process and saves
up time and costs. But it canât replace the programming itself. Itâs more
of a helping tool.
11. No Code Constructor Design Concept by Conceptzilla
What advice would you give to newbie programmers?
If a person wants to be a .NET and C# developer, then I advise finding a
good team and a complex project. This method boosts skills much better
than any IT course. Try open-source projects or start your own to get
experience in the early stages. Joining a devoted community also works:
they will stimulate your studies and suggest solutions.
As for the team, itâs better to join a company with an established
workflow, not a startup. This way, you will learn certain standards for
writing code, ensuring its quality, etc. In startups, there is too much
background noise, and high chances are you will get a mess in your
head.
At the same time, if a junior developer has the possibility to join any
team and get on-field experience, itâs a go-to option. For sure, not
everyone finds a great company on the first try, but the more knowledge
you gain, the better conditions you will find.