I’ve been doing quite a lot of interviewing lately for an ASP.NET developer position. I was surprised that a lot of the people I interviewed lacked the basic knowledge and understanding of trivial development and IT topics (most of them claimed to have multiple years working experience). So what are the things that I expect a developer (especially an ASP.NET developer) to know? And what characteristics should a developer have?
You probably saw that one coming. It’s amazing (and a bit frightening) to know that some developers have managed to write and ship code without solid understanding of OOP. Most of the interviewees got lots of concepts confused. Difference between abstract classes and interfaces, static classes and the difference between overriding and overloading to name a few. Some know the concept but only as a textbook definition. Most fail to specify use cases for these concepts and some can’t state why object orientation was created in the first place.
Get to know your classes and objects, they are the building blocks you will use to create great software. This MSDN article explains the very basics, also check the “For more information” sections in the article.
Write “good” code
I expect from a developer with “over 5 years of experience” to transition from just writing code to writing good code. By good code I mean readable, extensible and maintainable code. The developer should know how to leverage OOP to loosely couple components and decrease the dependency between them. I also expect from an advanced developer to know how to organize source code to smaller reusable and manageable chunks. It saddens me to say that some “experienced” developers have never used or even heard of design patterns such as MVC.
The developer should also know how to make the best out of the development tools he/she uses. IDEs are there to make life easier, find out what they have to offer and how they can help you be more productive.
How the web works
No one can deny the importance of the internet in our lives, it’s everywhere. I expect from someone who writes applications for the web to actually know how the web works. Stuff like what happens when you request a page and what is the role of the browser should be no brainers. Every web developer should also know the basics of HTTP such as request and response formats and request types. I also expect from an ASP.NET developer to describe the page lifecycle, sessions, viewstate and caching, what IIS is and how it serves requests.
Oh and some ASP.NET developers seem to forget that ASP.NET is an abstraction layer so they don’t actually bother themselves with good old HTML.
Have some “under the hood” knowledge
This applies to every developer. If you develop .NET applications I expect some understanding about what .NET is, what it offers and what are its components. Things like CLR, MSIL and garbage collection should be known concepts to a .NET developer. Having this sort of under the hood knowledge will help you build better applications. You will understand the strengths and weaknesses of the technology you are using, things to use and things to avoid.
Get to know the terminology that is used for the technology stack you are using. This will help you when searching for resources on that particular area whether it’s for learning purposes or for when you’re in trouble and need someone’s help. I found that lots of developers can’t answer the question “what is an assembly in .NET” even though they use it all the time.
Also what I hate the most is a developer who doesn’t understand the basic underpinnings of computers and the operating system he/she is using. Stuff like setting a static IP address or formatting a drive should trivial (seriously I have seen developers who don’t know how to do that stuff).
I like being around passionate developers and I tend to take a passionate developer more seriously than someone who writes code just because it’s his job. You know a passionate developer from the way he talks about technology and code. A developer who is always up to date is also an indication of a passionate developer. I think a developer should be up to date when it comes to the technology stack he is working on. For example if you develop using Microsoft technologies you should know that Microsoft offers many ways to create services that can be consume over the web (WCF, WebApi … etc.). It doesn’t mean that you have to be a professional in all of them, but you should know what each one offers, what are its pros and cons, that helps you to choose the right tool for the task at hand.
“Not knowing” isn’t an excuse anymore, with internet access you can learn all you want. Nothing is further than a “search” away. Get to know professionals in the technology you are interested in, read their blog posts and follow them on social media. You will be amazed by the amount of stuff you can learn from other people. Happy coding!