The Plan
I have enjoyed the simple examples and solutions I was been building and blogging about. I have a list of 10-15 full size projects that I want to build and use. Some examples of these projects include Stock watching, note taker and book reviewer. I know I can find free and open source applications I could use for these, but I want to build and customize them for my needs.
I decided it is time to treat these projects like a true professional projects. In doing so, I want to share that experience. A "professional" project means different things to different people. My definition is to look at this as if I am the one paying for the creation of these projects. That means, they need to be clean, maintainable, secure and customizable.
The only thing missing from the "professional" part is a timeline. I have always said you can have it fast, right or good, pick 2. We are going with right and good.
The Why
I have started and complete several Blazor projects since I started working with Blazor and I keep having to re-learn, re-invent or redo different parts of the application. With this plan I will be able to define the major parts of a standard application, build those parts and reuse them.
Being a software engineer means you have to constantly learn new technologies and tools. That is a major reason I enjoy it. There are a ton of blogs, articles and YouTube videos on how to do things. What most of them have in common is they teach you enough to get started and think you understand the concept. It is only you drive in and get your hands dirty do the details come out. My articles are included in that statement.
Going forward, I will be striving to provide a more complete solution or at least tell you where it will fall short. I may omit the beginning steps or just provide links to learn them so I can focus on the main topic. For example, I will not be explaining how to create a new Blazor project.
The Requirements
Let's dive deeper in to the requirements I wan to follow:
1. Must be cheap, "easy" to build, deploy and maintain
a. Use Visual Studio 2022 community edition
b. Deploying to Azure
i. App Service
ii. Static Web Site
iii. SQL Server (this selection has a cost to it that must be considered)
iv. Cosmos
2. Must be customizable
a. User preferences
b. System setting over hard coded values
3. Needs to have reusable libraries
a. Created as NuGet packages
b. Created as linked in libraries
c. Create templates
4. Clean Architecture
a. Separation of Concerns
b. Reuse
c. Blazor Server vs WSAM will be determined per project
5. Clean Code
a. Expect the code to be shared
b. Code must be readable
c. Code maintenance over performance
d. Proper API end point naming
e. Proper error handling
6. Coding standards
a. Coding standards very, the key point is to be consistent. Find a set you like and use them
b. Include standards for C# and CSS
7. Profession UI
a. This one is harder to defined
b. I am not a designer
c. I will need to make the decision to either use a 3rd party UI framework or use the components I have built.
d. Images and colors need to be thoughtful
8. Unit tests
a. I am a firm believer in the value of unit test
b. The goal here is not a test cover number or a set number of tests but to make sure key path ways are tested
The Definition of Done
Those who are familiar with scrum know this statement. My definition of done for this project would be:
1. Build at least 2 project and have them deployed
2. Document designs
3. Document standards
If I can achieve this I feel I have accomplished what I have set out to. I am looking at this to be a multiple part post, I will update this post when new post are added.
Summary
When I have started up new project or created a new team, I would follow this process. My hope is that if I document my execution, others can learn, adapt and modified it to meet their needs.
There are 2 truths in software engineering:
1. The only constant is change
2. There is always more then 1 way to solve the problem.
I am trying to provide a possible option to some.
Comments
Post a Comment