I am doing web development for the past 6 years. But somehow, I never got the feeling that I did a good job. I always felt that my code was not production quality. I felt like someone who delivers sub-par products.
An analogy: Me developing apps for paying clients is like.... a 14 year old who just knows how to shoot and move around the basketball court without falling down, playing among professionals in the NBA. That should be an accurate description :|
I wouldn't buy from me, if I were the client.
I want to move from this current position to a stage where I feel confident that my websites web apps are "professional", "secure", "scalable", (insert all requisites of a product that is worth paying for or relying on for your business).
My question is:
1. What are the things I should learn, and..
2. From where can I learn those..
..in order to create truly professional websites and web applications that other people/businesses can rely upon?
I am sick of feeling like an amateur even after so many years.
I want help in getting started. I can learn if I know what to learn. I can learn given enough time and things to experiment with, but I don't want to make my clients guinea pigs.
Here is what I know and don't know:
I know or can learn the needed syntax in C# to convert the required business logic from concept to working code.
I can write somewhat complex select queries and even a few joins if needed to fetch data. Of course I can insert, update, delete. But that's it. I know nothing else in SQL server.
I know enough web front-end technologies to develop good UI. This is not a problem area.
I know enough about hosting/domains to register and buy hosting and point servers at each other so that example.com actually loads the website. Not much more than that.
For all practical purposes, ZERO knowledge or experience in handling security and server load
No idea about caching, at any level.
I only know the coding best practices, dos and donts. I don't know the same for real world apps that thousands of people are going to use.
Every time I read a question in SO that has anything to do with a production application, all the answers and the question itself is all Greek and Latin to me. I feel inspired that there is so much to learn, but I can't figure out how to start.
I will primarily be working with the Microsoft Stack. So any answer specific to it will also be great.