CODECRAFTING WITH PYTHON

Innovating hand-in-hand with the customer, we pay close attention to every character of every line of code. It’s part of what we call Codecraft.

post-image

What is Codecraft

Two years ago, a growing IoT company came to ITIDO with its legacy web platform poised for upgrade. Technical debt, poor code quality and data from plethora of irrelevant use cases afflicted the platform. Clearly, the team behind the app had applied a one-size-fits-all approach to software engineering. @ITIDO then joined forces with the firm. Our engineers dedicated their high expertise to carefully re-write the product into a robust, scalable application. The unpleasant situation turned into a success story. As a result, @ITIDO now partners with the same company on other projects.

Innovating hand-in-hand with the customer, ITIDO engineers always act like master craftsmen. They pay close attention to every character of every line of code. It’s part of what we call @Codecraft.

This is also the process of creating a custom, perfectly sewn cloth that fits as it should. Like a master tailor, @ITIDO matches the needs of its customers with the right expertise. No two people have the same measures and wear the same clothes. This is true as well for our clients. Different needs are leading to different challenges that encourage us to bring fine-tuned solutions to market. Codecraft sits at the core of ITIDO's philosophy (and office space).

Codecrafting with Python and Django

What could be more fitting (pun not intended) than Codecrafting with Python? When in search for an elegant, robust solution, Python and respectively Django are a solid choice. 

The Python language created by Guido van Rossum and released in 1991, is a high-level, interpreted general-purpose programming language. A DRY description, but indeed a perfect quality! Python’s strengths stem from its ease, portability, possibility of extension, endless libraries and more. It is widely used for data science, machine learning, cryptography, data mining, IoT and, of course, web development.

Django, on the other hand, is defined as “a high-level Python web framework that encourages rapid development and clean, pragmatic design.” 

Django is good for micro services and monolith software architectures alike. But really, remember that perfect fit mentioned before? Companies change and grow, so one can turn to another architecture model. As a scaleup company tries to add multiple new features, this fit still persists.

Django is flexible and really comes “with batteries included” as they say. An ORM, middleware support, a unit test framework, an admin panel, etc., can really speed up the process of fleshing out the brilliant ideas startups want to execute. Or to add new features as they scale up.

Oh, and it is free and open-source, with one of the best communities of over 100 000 developers.

Back to Codecrafting. 

It starts from the initial architecture of the project in conjunction with the current and the future needs. After all, a robust application is not only durable and secure. It should be maintainable and extendable. So you really need to craft your way through a maze of business needs, technical possibilities, changes, infrastructure, and deployment strategies. The list goes on. But let’s not forget keeping everything up to date, running with clean code, while being able to do migrations requires a look from ten thousand feet. And from up there a pattern appears – this is an essential part of Codecrafting with Python and Django.

So yeah. A good planning and optimization are the key to a smooth transition between those software product life phases.

Of course, enterprise companies can also reap those benefits. When having a great structure those mammoth size products can stay organized, upgradable and most importantly maintainable. Examples of organizations which are using Django are Atlassian (Bitbucket), Instagram, Pinterest and even NASA. These are a testament of how diverse projects can be created with Django. Websites, educational platforms, data driven APIs, monitoring systems are all possible to be created with this framework.

Our lessons working with Django

Did we learn any lessons, working with Django all that time? Yes! I already mentioned some of them up there, but how about an old fashioned list?

  • Tuning your WSGI and NGINX servers in advance may be strange, but would pay off when things go off.
  • Caching of non variable data is your best friend and a must (Redis) when scaling horizontally.
  • Django is great when logging is needed. Use logging more.
  • Dramatiq is more flexible than Celery. And don’t be afraid to make the switch.
  • More packages can mean faster development, but at one point you may want to implement those locally and reduce the dependencies.
  • Standardize with black, isort and other tools. Merging when the team grows can be a pain.

Some general tips would be helpful no matter the technology you are relying on:

  • A start-up needs to go out fast. A scale-up can go… well, up fast. A good architecture is needed first, followed later by a good infrastructure. At first there is only one need, to survive, but then requirements start to pile up, so a crafted solution will not bend due to the growth.
  • When you are small, you are invisible. But security is best served before, not after the bots sniffs you out. When did Noah build the ark? Before the rain, as the saying goes. 
  • Listen to your clients needs, but manage them properly.
  • Don’t be afraid to change things and to leave the old behind.

Latest changes to Django

To wrap this up, let’s look a bit at the latest changes. Staying on top of the ever changing software landscape is the last aspect I would like to touch as part of our Codecraft idea.

In December 2021, the Django team released the fourth major version of Django. There is a new RedisCache backend that provides built-in support for caching with Redis. The Python standard library zoneinfo is now the default implementation in Django. Also the Forms, Formsets and ErrorList are easier to customize as they will be rendered using the template engine. And to peek into the abyss, the work on asynchronous views and methods continues, along with the increasing popularity of the htmx library plus Django.

Thank you for joining in for this brief introduction to Codecrafting with Python and Django! If you wish to learn more about our other successful stories, you can find them in the Done Work section. Or if you want to discuss a challenge with us, let’s do it!

By Ivan Ivanov, Development Team Manager

Ready to go next level? Great! get in touch