L3/Middle developer at Alkanza
Tags: development, junior, django, celery
Published: 2019-12-05 11:52:12

---
title: L3/Middle developer at Alkanza
published: true
description: Alkanza is a fintec that creates high impact technology in the financial world
tags: development, junior, django, celery
cover_image: https://thepracticaldev.s3.amazonaws.com/i/oo5hq9kx8jagkin7oj3k.png
---
Related article:
[L4/Senior developer at Mesfix](https://dev.to/diegoug/l4-senior-developer-at-mesfix-2n0g)

#Alkanza

It was a fintech that specialized in managing and developing high-level investment services, with a team of professional financials and developers to make high-impact technologies.

In my experience, the best thing about the company is its financial responsibility, which can reach an unpredictable detail, this because for the company the client must feel backed by the experience and the good management of their finances.

On the technological side, when I was working in the company, one thing that I learned is to see how although from the beginning things could have worked badly, many things cannot be remade, but rather we have to move on and we have to implement improvements on the proposed things, so that you can walk towards the future.

One of the things that came to my attention was to understand the legacy code, the current functionalities due to the complexity of the same and above all I was able to propose new ideas due to the aforementioned.

##Index:
- [Overengineering](#overengineering)
- [The spaghetti code](#the-spaghetti-code)
- [Sub processes out of control](#sub-processes-out-of-control)
- [Conclusion](#conclusion)

##Overengineering
From the lessons that I let myself be in the technological team was to understand how a technology can be misunderstood, due to the circumstances of the engineers, this can cause a technology to be implemented in a very complex way, reaching its purpose but taking a very long road, and in practice you could see spaghetti code, sub processes out of control, functionalities of the language without purpose or with an inappropriate purpose and duplication of code, all this leading to generate delays in the new functionalities.

And how to repair this?

As I told you, if you get to see engineering level failures but everything is working because the client is being served, the most logical thing is to say that nothing is failing, then what you should do is enter new functionalities with the corrections and go correcting the other features periodically.

[Return to Index](#index)

##The spaghetti code

After a certain point it has no solution, this happens when a practice such as fucional programming is improperly implemented, and it can happen that a function depends on many other functions, or that a parameter is passed through a parent function but being used for a granddaughter function :D then the best thing that could be done is to create new functionalities with the new practices.

The correct way to implement the fucional program is for a parent function to call a daughter function, that if a daughter function needs a parameter but the parent function has the information to obtain that data then call a function that brings that parameter and then there is if you pass it to the daughter function, making the main cycle pass in the father function.

In fucional program, in a parent function the following actions should happen, 1. validate input parameters and respond to the client if there is any problem to correct them, so that the children do not deal with errors or changes in the data, 2. obtain external parameters, can be database objects to perform the requested action, this step could be optional, 3. execute the action with all the data already present, 4. answer the request, this can be positive or negative, depending on the result of the Data operation, this is my vision of functional programming.

[Return to Index](#index)

##Sub processes out of control

Django can perform sub processes using celery, here the important thing is that a sub process is that, just one, that fulfills its function and is doing a well-done task, but it could happen that by having the ability to create sub processes we make a sub process creates another sub processes only by evaluating a condition, here the solution is simpler, it can be corrected simply by unifying the sub processes or making the new functionalities well done.

Language functionalities without purpose or with an inappropriate purpose and duplication of code, that can be solved with training and a better understanding of the language, in addition to a study of good practices and standards by the development team, when it is achieved we can see how the team better develop its code, being careful not to over-engineer and giving it Higher quality to the final product.

[Return to Index](#index)

##Conclusion

At Alkanza, when facing these difficulties, we were able to begin the development process aimed at creating solutions that were not only impactful but also efficient, unfortunately this company stopped working.

Mauricio Gutierrez left the biggest lesson because his financial responsibility inspired me to think about the importance of managing my finances well and having a lot of attention to the detail of the finances of others, since it is for all an important aspect of our lives and deserves the greatest attention.

[Return to Index](#index)