Project Week at the Redwood Code Academy
Much has happened at the Redwood Code Academy since I last updated you. Most notably, we have kicked off development of our second big individual project.
As you may recall, I worked with a team to create our first bootcamp project, a simple little website.
For this one, I’ll be on my own.
Since the first project, we’ve learned the fundamentals of C#, how to use ASP.NET and the Entity Framework to create backend functionality, and the means to create and query a SQL Server database, among plenty else.
This second project has been a long time coming for me. At my previous job, I oversaw a database that tracked all of the office’s work activities. It was the office’s backbone and, if you tech-types can believe it — its technology was totally Microsoft Access. *puke emoji*
It’s funny. At that job, we had aspirations of updating that database because even we recognized that Access was woefully insufficient technology. But we lacked the technical skill and the means. We talked about “SQL Server” like it was some mythical tool that could perform magic for those esteemed few who could harness it.
Not that it mattered anyway. The actual SQL Server software was kept away from my office by many impenetrable levels of bureaucratic approval (or disapproval, as it was).
The actual funny part now is that I built a database via SQL Server today. In an afternoon. I had a little assistance from a friendly Redwood instructor for sure but, really, it was no big deal. And I don’t suddenly feel equipped with some esoteric knowledge. Or magical abilities for that matter. But maybe I sell myself short.
In any case, I had been meaning to recreate my former office’s work tracking tool for some time, and had wanted to include improvements such that it:
— is available online;
— can handle multiple users manipulating and updating the same records simultaneously.
Today was day one of this endeavor, and I would like to walk you deliberately through the actions I’ve so far taken to recreate the work tracking system.
So … here goes (warning, it’s about to get a little nerdy up in here).
At the Redwood Code Academy, we had been taught the Agile methodology of product development. We use the online version of Visual Studio to track our progress via story points and tasks. We had actually began the project planning process yesterday afternoon and, this morning, the class held our first Scrum stand-up meeting where each of the students explained what we intended to do during the day and the obstacles that we foresaw preventing us from completing those activities.
My intent for the day was to:
— sketch my application’s wire frame;
— create the necessary data models;
— use C# to create my data classes via Visual Studio in order to produce my SQL database and provide web API functionality;
— harness the Microsoft Entity Framework to scaffold out my classes’ controllers (also in support of the web API);
— actually build and connect to the SQL database;
— finally, get the web API up, running, and tested.
To my surprise, I accomplished all of these things today. But, let me tell you, when it came to the wire frames and the data modeling, I really did some wire framing and data modeling:
Excessive as it may seem, the wire framing immediately proved invaluable. This application is going to require so many little seen and unseen features for it to work properly. These are features that I would have never had planned, nor allotted time for, had I not conducted some relatively rigorous thought prior to coding. Also, when it came time to actually code my C# classes, it was nice to have all the actual cognitive exercise behind me, as I had fully written out the classes and their properties during the planning phase.
The heart of this work tracking system is the database so I wanted to be very careful in its design and creation. So, I was purposely tedious as I worked through building it.
Since the backend of this application is being built fully within the ASP.NET framework, Visual Studio is such a beneficial tool. I was able to build my database right inside the Visual Studio environment via the SQL Server Management Studio. I created my primary and foreign keys via class properties and used database context to dictate to Visual Studio the arrangement of my tables. And then, really, Visual Studio built the database for me.
If there is magic involved, it’s the automation provided by Visual Studio.
Given how much a SQL Server database seemed like wizardry at my former position, it was pretty fulfilling to get one up and running myself. More astonishing is that I was able to do it in an afternoon. And, mind you, I knew none of this stuff seven weeks ago before I began class at the Redwood Code Academy.
Now that I think about it, the real magicians are my instructors who have instilled in me the capability and confidence to do this all and how quickly and effectively they have done just that.
With a sense of accomplishment, I moved on to the next order of business: creating the backend controllers to provide functionality for the web API. Again, Visual Studio proved to be my best friend. With the help of the Entity Framework, I was able to able to automate the scaffolding based on the model that I had created (“model” being the data classes that I had coded earlier).
With the controllers created, my API was ready to run. I like to use the command prompt. So there, I just applied a little “dotnet build” and “dotnet run” action and I was ready to test the health of my API. At this point, the day was getting late and my drive waning, but I fired up Postman and was more than satisfied to return some “200” success codes on my GET requests. Tomorrow morning, I’ll have to do more thorough testing of the POST, PUT, and DELETE commands to ensure the API is operating in the RESTful manner as intended.
The final and perhaps most vital action of the day was to copy the entire project folder over to another folder on my computer in which GIT was initiated. I then used GIT to push my project code up to the Visual Studio online interface, thereby providing some versioning control (and peace of mind, should my quickly deteriorating laptop decide to depart for the computer afterlife).
I can’t lie — I’m feeling pretty accomplished for a day’s work. I have so much more ahead of me. Today is Wednesday and we demo our projects next Friday so I don’t exactly have an excessive amount of time. But, based on my project planning, I should be able to complete the bulk of what I intend in the time allotted.
So long as I do manage my time effectively (and fatigue doesn’t dictate otherwise), I’ll try to keep you all updated as regularly as possible. I hope you enjoy following along. And thanks for reading!
To continue to part two of the development of this app, please CLICK HERE.
To return to day one of this bootcamp journal, please CLICK HERE.