Job opportunity: back-end developer

Job Description: full-time back-end developer

Location: Milan, Italy (hybrid)

Benefits and perks: flexibility, work from home, challenging

The ideal candidate will be responsible for designing, developing, testing, and debugging the back-end of our main product. S/he must have experience in the field and a good degree of independence. We look for a bright and enthusiastic person willing to contribute with her/his ideas to the project. We are open to remote collaboration but require periodic in-person meetings. The candidate will have the opportunity to work on new features and decide on their design.

At Arcan, we develop an innovative tool to evaluate software quality and detect technical debt. Our mission is to cut technical debt, ensuring the development of clean, reliable, and safe software worldwide. Arcan is continuously growing: we have just entered TXT group, an international and specialized provider of engineering software solutions in high-tech markets.

Responsibilities

  • Designing, developing, and testing the back-end of our main platform;
  • Build reusable code and libraries for future use;
  • Maintain the software documentation;
  • Adherence to development guidelines and punctuality of deadlines.

Remuneration

  • € 35K to € 45K, depending on experience and resume.

Qualifications – must have

  • 5+ years of Java or Kotlin experience;
  • Knowledge of Spring Framework (or similar), Java Jakarta, GraphQL;
  • Knowledge of SQL;
  • Knowledge of algorithms on graph (BFS, DFS);
  • Basic knowledge of service-oriented architecture;
  • Knowledge of good software design principles (e.g., SOLID) and design patterns;
  • Knowledge of Git, Maven, and DevOps pipelines;
  • Willingness to acquire new knowledge in the world of static code analysis;
  • Intrepidity, independence, and ability to identify the pros and cons of different solutions to the problem at hand.

Qualifications – nice to have

  • Familiarity with Docker and GitHub Actions;
  • Familiarity with Linux and Bash scripting;
  • (Appreciated) experience with Apache TinkerPop;
  • (Appreciated) experience with Language Server Protocol (LSP), Abstract Syntax Trees (ASTs), and/or other static code parsing/analysis technologies.

Apply now!

Fill the form below. Feel free to attach your Github/Gitlab/Bitbucket profile in the message.


    The Importance of managing technical debt

    The Importance of managing technical debt: perspectives for CFOs, CTOs, and software engineers

    Managing technical debt is critical for ensuring long-term success and sustainability in companies that produce or purchase a substantial amount of software. In this article, we will highlight the importance of carefully managing technical debt and discuss the different risks associated with this topic, focusing on the perspectives of CFOs, CTOs, and software engineers.

    CFO: managing financial risks

    As a CFO, managing technical debt is essential to mitigate financial risks for the company. Accumulating excessive technical debt can lead to increasing maintenance costs, slowing down business operations, and increasing the risks of software malfunctions.

    Technical debt can limit the ability to adapt quickly to market changes and introduce new functionalities, putting the company’s competitiveness at risk.

    Effective management of technical debt allows for appropriate investment planning, resource optimization, and ensuring a solid foundation for future development.

    CTO: safeguarding technical architecture

    For the CTO, managing technical debt is crucial to safeguard the integrity and scalability of the company’s technical architecture. A disorganized or poorly maintained architecture can become a significant obstacle to software development, slowing down the delivery speed of new features and increasing the risk of errors and security vulnerabilities.

    Technical debt can also hinder the adoption of new technologies and practices, limiting the company’s innovation capabilities.

    Through active management of technical debt, the CTO can ensure a robust, flexible, and adaptable architecture, supporting the company’s growth and innovation goals.

    Software Engineer: improving the development process

    For software engineers, managing technical debt directly impacts the quality of their work. The accumulation of technical debt can make the code messy, hard to understand, and modify, requiring significant time and effort even for simple updates or fixes. This can lead to decreased productivity, team frustration, and compromised software quality.

    Through careful technical debt management, software engineers can work with cleaner code, facilitating maintenance, improving development efficiency, and reducing the likelihood of bugs or performance issues.

    One problem, many actors

    Managing technical debt is crucial for CFOs, CTOs, and software engineers in companies heavily reliant on software production or acquisition. By recognizing the importance of addressing technical debt, these stakeholders can effectively mitigate financial risks, safeguard technical architecture, and improve the development process.

    Ultimately, proactive management of technical debt promotes long-term success and maintains a competitive advantage in the ever-evolving landscape of software-driven businesses.

    How to mitigate?

    Arcan provides technical and financial analysis of technical debt. CFOs can leverage business intelligence functions to forecast future costs of technical debt and draft a remediation plan; CTOs can get the quality status overview of the entire enterprise application portfolio; and software engineers can rely on the insight and refactoring tools to shed light on code.

    Request a free demo and learn how Arcan can support the entire enterprise in managing technical debt!


      Technical Debt and Green Software

      Sustainability is becoming central in IT. A software system can be defined as green in two cases:

      • When it enables sustainability projects (e.g., a water waste monitoring system)
      • When the software itself is designed in such a way as to minimize its environmental impact, which in this specific case translates into minimizing electricity consumption.

      Green Software Engineering aims to find best practices for implementing the second case. The optimization actions that can be implemented are many and applicable at different stages of software development. For example, one can intervene when writing code through specific quality analysis tools or when designing the software architecture, choosing cloud solutions with optimized elastic resource management.

      Managing and removing Technical Debt is among the recommended practices. Recent studies have demonstrated a correlation between improved performance and removing code smells and architectural smells. At Arcan, we are studying a new metric, the “Sustainability metric,” to measure the carbon footprint caused by the presence of Technical Debt.

      If these topics intrigue you, we recommend watching the “Debito Tecnico e Green Software” webinar by Ilaria Pigazzini, CEO at Arcan, and Marco Bodini, Network Engineer at Brennercom Spa, hosted by Bicocca Alumni (webinar language: Italian).


      What are architectural smells?

      What are architectural smells?

      Architectural smells are undesired structures and anomalies in the architecture of your software. Their presence leads to an increase in technical debt, degrading the quality of your software and affecting when, where, and how much you change your code.

      Smells result from (usually unintentional) design decisions that negatively impact the system’s internal quality. Smells create a technical context that increases the effort required to make changes in the future at the cost of short-term advantage.

      One example of architectural smell is “Cyclic Dependency”, which appears when two or more artifacts (architectural components) of your system take part in a circular dependency.

      When such an anomaly occurs, the

      • Reusability
      • Maintainability
      • Changeability

      of those parts are negatively affected.

      Moreover, reusing single parts of code becomes difficult: if one part changes, the others must change along. Indeed, this smell increases the coupling inside the system.

      Smells create a technical context that increases the effort required to make changes in the future

      How can you protect your code from architectural smells?

      Architectural smells violate basic design principles, such as Modularity and Acyclicity.

      Arcan currently detects the following smells:

      • Cyclic Dependency
      • Hub-Like Dependency
      • Unstable Dependency
      • God Component

      See our dedicated Wiki to learn more about the different smells and how to remove them.

      Download Arcan to find out where your architecture smells!


      What is technical debt?

      What is technical debt?

      Technical debt is a concept in software engineering that refers to the amount of effort required to fix suboptimal code, design, and architecture. Technical debt makes the work of your developers harder and hinders you from delivering features quickly.

      Technical debt (TD) is a metaphor that uses the concept of financial debt to describe poor software quality.  The two main concepts of the metaphor are principal and interest:

      • principal is the amount of effort necessary in order to remove all the problems present in your system that prevent you from going fast;
      • interest is the extra effort that it takes to add new features to the system because of the TD present.

      When a software system is affected by technical debt, all the design-time quality attributes of the system are compromised. The system is:

      • hard to maintain (e.g. fix bugs, understand, etc.)
      • hard to evolve (e.g, adding new features),
      • harder to secure

      When a software system is affected by technical debt, all the design-time quality attributes of the system are compromised.

      What are the causes of technical debt?

      There are many causes that lead to the increase of technical debt in a software system. First of all, the time-to-market pressure. When developers are required to release new features in a short amount of time they create a quick-and-dirty solution that may meet the urgent needs of the moment but it is not solid enough to provide a strategical advantage in the long run.

      It is of paramount importance that the quick-and-dirt solution is fixed at the first available moment.

      time-to-market pressure is one of the most common causes of technical debt.

      Another common source of TD is the adoption of overly complex design. If the code is too difficult to comprehend due to intricate design constructs and patterns, adding new features may take an excessive amount of time to develop. This, together with a lack of system documentation, can be more harmful than actual bad design.

      Last but not the least, delayed refactorings can be one of the causes. Refactoring is a term indicating the actions needed to fix a design problem while preserving the expected software behavior. A good practice to avoid the growth of technical debt is to schedule refactoring from the very early phases of software development.

      Refactoring is a term indicating the actions needed to fix a design problem while preserving the expected software behavior.

      How can you prevent the accumulation of technical debt?

      Technical debt naturally accumulates in software systems, however, planned refactorings to fix quick-and-dirty solutions and the careful monitoring of its evolution can prevent most of the deterioration.

      Arcan integrates with Continuous Integration (CI) pipelines and allows to continuously detect and monitor technical debt. Ask us for a trial to learn how to prevent technical debt.


      Job opportunity: front-end developer

      Job Description: front-end developer

      Duration: 5 months (June – October 2022)

      Location: Rome, Italy or remote

      Benefits and perks: flexibility, work from home, challenging

      The ideal candidate will be responsible for designing, developing, testing, and debugging the graphical user interface of our main product. S/he must have previous experience in the field and a good degree of independence. We look for a smart and enthusiastic person who is willing to contribute with her/his own ideas to the project. We are open to on-site or remote collaboration, as preferred.

      At Arcan, we develop an innovative tool to reverse engineer software architectures and evaluate their quality. Our mission is to cut technical debt, ensuring the development of clean, reliable, and safe software worldwide. Arcan is continuously growing: we have just entered a technology and business development accelerator program. The candidate will have the opportunity to work closely with the engineers of one of the most important Italian companies and add this important experience to their professional training.

      Responsibilities

      • Designing, developing, and testing UI for web applications
      • Build reusable code and libraries for future use
      • Translate user and business needs into functional frontend code

      Qualifications

      • Bachelor’s degree or equivalent in Computer Science
      • experience in front-end development
      • Experience with basic agile processes and tools (e.g., Git)
      • Experience with JavaScript, HTML5, and CSS3
      • Experience in ReactJS, or any other comparable alternative

      Apply now!

      Fill the form below. Feel free to attach your Github/Gitlab/Bitbucket profile in the message.