Last autumn (2020) I started a university degree apprenticeship to make up for that fact that I don’t currently have a degree and that I enjoy learning a lot more now than I did in my late teens/early 20s. One of the modules I’m undertaking is Web Application Development, which I’m going to expand on with this blog post. With that in my I’m rolling several blog posts that I have partially written into one to a) save on time (writing, editing and posting several posts takes longer than one) and b) make sure I post something on my blog to make sure you (the awesome reader) know I’m still writing.
If your here just for the technology bits of my blog, please feel free to skip to the next heading 🙂
Last autumn I started a degree apprenticeship working towards a degree (BSc) in Digital & Technology Solutions. I don’t currently have a degree at this level but have managed to transfer some of my prior learning. So far I’ve tackled Maths & Algorithms, Data Communications & Network Security and recently finished Business Systems & Process. Over the next few years the modules will add up as I progress down the Software Engineer path.
One of the reasons my site has seen less updates is that I’ve allocated more time to my degree for lessons, reading, assignments and also for expanded research as I sometimes find interest in parts of the subject that can be very in depth. Each module has its own recommended reading / resource list, and if your on a similar course I can really recommend:
Foundation Maths (Croft, A and Davison, R – 7th Edition, 2020) for help with maths and algorithms and was on the reading list for the Maths module.
Hello World (Fry, H – 2019) was a big help to me when learning about algorithms and includes really good examples of how computer algorithms have been used in the real world (not just theoretical).
The TCP / IP Guide (Kozierok, C – 2005) – regular readers will know I like No Starch Press books, so it was a given that I would turn to my favourite publisher when I needed to brush up on and improve my knowledge of networking. This book is massive (over 1600 pages!) and can be a little expensive (although I’ve seen it in Humble Bundles previously) but is really worth the money as it goes into lots of depth when explaining protocols.
Business Process Change (Harmon, P – 4th Edition, 2019) was on the reading list for the Business Systems & Process module. I originally thought this module (and book) would be a little dry and not really connected to what I wanted to learn but I enjoyed both the book and the module. The book helpfully explains everything from strategy, stakeholders and value chains to process management and change.
The Phoenix Project (Kim, G and Behr, K and Spafford, G – 3rd Edition, 2018) was a re-read for me as I originally read it a few years back when learning more about dev-ops. The book helps explain dev-ops alongside business flows, competing interests etc… and if you enjoy it then check out the follow up, The Unicorn Project.
I’m hoping to periodically post updates about my degree experience, which so far has been very positive. I would like to say thank you to my employers (I switched employers in 2021) for supporting me.
Web Application Development
For my project module I am undertaking Web Application Development. My site has a few examples of the web based work I’ve done in the past, which I wanted to take to the next level by owning a project that I get to see from conception through to delivery in a production environment.
The first aspects of my learning was not to download Visual Studio (I normally use Visual Studio Code) but instead to reflect on what I would need to a) refresh my knowledge on and b) learn. So I updated my Continuous Professional Development (CPD) plan with a new tab based just around this module, including re-reading parts of Jon Duckett’s excellent books (HMTL/CSS: Design and Build Websites, and Javascipt / JQuery: Interactive Front-End Web Development). I also picked up the recommended reading of Professional ASP.NET MVC 5 (Galloway, J. Wilson, B. Scott Allen, K. Matson, D) and finally (after a few chapters) downloaded / installed Visual Studio.
So where does Django come into play? Well I have a work project that also involves creating / building a web application which I don’t think would be fair to stretch out whilst I learn about ASP.NET. With this in mind, and after a little bit of learning, I have decided to build the work project in Django as Django is Python based and I enjoy writing Python code.
I’ve also gone with Django as it gives me chance to continue using the Test Driven Development (TDD) skillset that I’ve been learning about from Test-Driven Development With Python (Percival, H – 2nd Edition, 2018), which has been my go to since earlier this year when I realised I needed to know more about TDD.
If you know some Python and want to learn about TDD (and put it to practise) then I recommend this book, or if you want to read the information for free checkout the website https://www.obeythetestinggoat.com which has the same information.
MVC / MTV
Django and ASP.NET use similar (not the same) architecture in that ASP.NET uses the Model, View, Controller (MVC) architecture and Django uses the Model, Template, View architecture. The MVC pattern was originally introduced in the late 1970s by Trygve Reenskaug in the programming language Smalltalk. MVC is broken into:
- Model – The data or central component of the pattern as it structures how the data is stored.
- View – The User Interface to the data, represents or renders the data presentation.
- Controller – Takes inputs and sends commands to the Model and / or View based on those inputs.
Model, Template, View (MTV) is used by Django and works very similar:
- Model – The data, maps model classes to database tables, so very much like the Model in MVC).
- View – Takes inputs (e.g. HTTP requests) and calls on the Model and / or Template to help return a response. The View of MVT is like the Controller of MVC.
- Template – The presentation logic, rendering the data onto pages to present to the user. The Template of MVT is like the View of MVC.
Previously I’ve only briefly touched Django out of curiosity, using Flask instead for web development but over the last few weeks my use of Django for my work project (more in next blog post) has grown dramatically.