From Novice to Ninja: The Django Advantage
Tags: python, django, web, beginners
Published: 2024-01-05 10:44:00

Entering the realm of web development can be daunting for those unfamiliar with the intricacies of how an application works or how the web operates. While some may suggest learning how the web works before delving into application development, it's essential to recognize that not everyone learns that way. Some prefer an immersive approach, learning through practice by building web-related systems.

So, if you're like my younger self, who knew nothing about web development but was interested in learning how to build web applications, Django web framework provides a hospitable journey for that. 

Having extensively used Django for over 5 years now, I find it comfortable exploring other frameworks and recognizing familiar patterns.

There are several other alternatives that I now find comfortable to work with (e.g., Express, NestJS, PHP, FastAPI, Flask), but this wasn't the case when I was starting out solely due to my experience level at that time.

Django is not only easier to get started with but also makes it very easy to build web apps more quickly with lesser code.

## Django's Advantage

### 1) Compelling Documentation : 

This was how I got hooked in. Django's documentation doesn't assume you have knowledge about the building blocks of an application. It explains every concept in detail with examples, starting from scratch.

From the content structure and web layout to font sizing, and most importantly, the content, everything is so well-placed that I need not click another link to understand the subject matter on a page.

Django's documentation contains tutorials, guides, references with lots of examples on every subject matter. 

Every component that makes an application are also well sectioned out with guides, references, lots of examples, advanced topics and more.

Django's documentation is not only accessible online, the complete documentation can be downloaded as a pdf, html or epub for offline use.

### 2) Achieved Early Contentment: 

As a beginner, my grasp of web applications was confined to their operation in a browser. I felt exhilaration witnessing an application—something I hadn't actively searched for on Google—run seamlessly in my browser. This magic happened with just a simple input of 'localhost:8000,' the default host and port that Django uses to launch applications in development. This came about after executing two straightforward and self-explanatory commands.

The catch was that I didn't need to write any code to see the created application working in my browser. Only later did I find myself tweaking things, after my interest had been captivated. At that point, I hungered for more, and my mind eagerly embraced the opportunity to understand the entire process, leading to continuous learning.

### 3) Everything Included Formed a Habit in Me:

As i continued building, i observed that aside everything being well documented i didn't have to explore external systems, libraries or services. 

Whatever piece or puzzle I needed for my application, Django already provided out of the box. I didn't have to go outside the documentation to learn additional tools or libraries to progress in my learning.

That formed a habit in me. I consistently utilized the documentation and delved deeper into the framework and all it provides. I would say, django successfully killed two birds with one stone.

While Django provides the majority of components an application would require, it also allows you to either extend a component or replace it completely


### 4) Community:

It's not always smooth and rosy. There were times in my learning process when I faced difficulties or encountered total roadblocks. Without the help of other experienced developers willing to support and assist me, I probably wouldn't have come this far.

Django has a diverse and vibrant community willing to guide you. Besides getting help, I also learned, through the community, how to fine-tune my questions for better reach.

As a self-taught developer, knowing there are experts you can reach out to, who wholeheartedly support and guide you, adds to your peace and pace. Consider joining a community.

### 5) Consistent Resource:

When I'm not studying Django's documentation, I'm either watching a YouTube tutorial or reading books. Most people follow the same approach, ensuring consistency with external online resources with the documentation.

I also found that most external libraries/packages' documentation uses well-known examples from Django's documentation, such as the poll application. 

This consistency was immensely helpful because it ensured I wasn't building half-baked applications. For instance, Django's documentation teaches the creation of a web application using a poll application, and the same poll application is used by Django Rest Framework to demonstrate the development of RESTful APIs. Lastly, Django Graphene also employs the same application but transforms it into a GraphQL implementation.

The consistency everywhere points to the solid foundation django team consciously built into the culture of using the framework.


### 6) Django is built on Python

Python is widely considered one of the easiest programming languages for beginners to learn. This ease extends to Django since it is built on Python.


## Resources I Found Helpful

> _I'm not a marketer, and I don't receive any benefits from mentioning these resources. I'm sharing them solely because I found them exceptionally helpful on my journey._

### 1) Django's Official Documentation 
https://www.djangoproject.com/

### 2) Automate the Boring Stuff by Al Sweigart ( Book )

I only needed this book starting out and it did justice to my knowledge of python and django web framework. After completing this book, django's official documentation easily served as point of reference for more advanced exploration.

With a quick google search, you should find a way to purchase this book or read it online.

### 3) Try Django Youtube Series by CodingEntrepreneurs
https://www.youtube.com/@CodingEntrepreneurs

Justin teaches with so much details leaving no points untouched and he does it so well.

### 4) London Developer Youtube
https://www.youtube.com/@LondonAppDeveloper

### 5) Corey Schafer Youtube
https://www.youtube.com/@coreyms

### 6) Unofficial Django Community on Discord
https://discord.com/invite/rPpQBZ4G


## Would I Recommend Developers to Begin with Django ?

Considering various factors in web development, Django emerges as a viable choice for beginners. 

If one is facing challenges in selecting a framework, Django could be considered as a potential first choice, especially for those initiating their journey into web development. This path has proven effective for many learners in developing web applications.

If you've already started with another web framework, continuing with that could also lead to a comfortable proficiency.


## Conclusion

In conclusion, my journey from a novice to embracing the Django framework has been marked by discovery, challenges, and growth.

As I reflect on the consistency, versatility, and solid foundation that Django provides, I can confidently say that the 'Django Advantage' has been a guiding force in shaping my web development journey. Whether through documentation, community engagement, or exploring external resources, the path from novice to ninja has been enriched by the principles embedded in the Django culture. 

As I continue forward, I'm not just a user of Django; I'm a beneficiary of the invaluable lessons it has imparted and the community it has connected me with.