Work Organization Methodology: A Comprehensive Exploration of Technical Growth
Work Organization Methodology
Here are several key points outlining the approach I employed to structure and manage my work:
1- Global Task Requirements:
Project Code Comprehension: Delve into the complexities of the platform code that was handed over to me. This involves understanding its intricacies, refining the codebase, and addressing any deprecated elements.
Completion of Essential Development Tasks: Execute all essential development tasks as outlined in the project requirements. These tasks form the core objectives that need to be accomplished during the course of the project.
2- Intensive Bootcamp Approach:
With the significant tasks at hand and only a 5-month timeframe for the internship, I was unsure if this period would be sufficient. Regardless of this uncertainty, I recognized that every moment was precious. This led me to adopt an intensive bootcamp mentality, focusing on stringent time management and disciplined routines to ensure the efficient completion of tasks within the internship period.
3- Holistic Task Breakdown Approach:
Embracing my learning journey, which I thoroughly enjoy, I didn't perceive the tasks merely as assignments to be checked off. Instead, I committed myself fully to the project, aiming to produce work of professional quality.
Beyond the essential development tasks outlined in the internship guidelines, I proactively incorporated additional tasks that were introduced during progress reviews with my supervisor.
I also took the initiative to undertake unassigned but crucial tasks. These tasks, though not explicitly required, significantly contributed to enhancing the project's professional presentation.
Regardless of a task's official status, if it had the potential to improve the project, I deemed it important to tackle. All this while, I was acutely aware of the limited timeline of the internship, akin to a ticking clock, reminding me to make the most of every moment.
4- Task Prioritization:
Tasks were prioritized based on their nature: Automation, Mandatory, Additional, Complementary.
When I first started on this project, I realized that running the platform required a series of manual commands, including opening multiple xterm consoles one at a time. To gain a better understanding of the full picture and streamline the process, I prioritized automation as my initial task.
Once the automation was in place, I moved on to the mandatory tasks that were required for the project. These tasks formed the core of my responsibilities and were crucial for the progress of the project.
In between meetings with my supervisor, I tackled additional tasks. These tasks, provided me with a deeper understanding of the project and helped me enhance the overall quality of my work.
Finally, I focused on complementary tasks. These tasks, while not mandatory or additional, played a significant role in enhancing the project overall and contributed to a more comprehensive and professional outcome.
5- Using GitLab Plan for Issue Board and Version Control:
I utilized the TODO and issues board on GitLab as a valuable tool for noting down my ideas, addressing problems, and planning work for a variety of purposes related to enhancing the IRISA platform. I tailored the issue board to fit my needs and workflow. This allowed me to:
Define the project according to phases. Currently, I'm in the second phase, which is the internship. The third phase will be the integration after the internship.
Use it for brainstorming ideas.
Keep track of tasks and monitor their status.
In addition, Git/GitLab was utilized for version control, allowing for effective tracking of changes, creation of branches, and efficient code management.
This systematic approach to task management not only played a crucial role in ensuring the successful completion of the project within the given timeframe, but it also led to further enhancements and evolution of the project due to the centralization of ideas and tasks in one place. This method proved to be highly effective in managing and advancing the project.
6- Research and Learning:
Begin by studying minimalist examples related to the project, adapt them to the given scenario, and integrate them into the platform.
During the execution of my tasks, I adopted a systematic approach. I worked on one task at a time, starting with research to identify the best methods and available open-source tools. I then refined these tools according to the required scenario.
For instance, when I needed to implement a task like putting multiple interactive terminals in a web workspace, I started with a minimalist isolated scenario example. Once it worked and I understood how to set up and operate this new tool, I began to adapt this example step by step to serve the project task.
The next phase involved integrating with the web browser and testing the user experience from an end-user perspective. Following this, I integrated it with the project as a backend, like JavaScript with Python, and finally set up sockets and automation commands.
This approach allowed me to progressively build my understanding and skills while ensuring that each task was completed effectively.
7- Regular Testing:
After integrating a new tool into the project or developing one, I conduct thorough testing to ensure everything works as expected. This involves adjusting any undesired outcomes and rectifying any anomalies. This regular testing process is crucial to maintaining the stability of all implemented features in the platform and ensuring the overall quality of the project.
8- Continuous Code Enhancement:
The process of continuous code enhancement initiates with the integration and testing of the code with the platform. As new tasks emerge, the code is consistently enhanced. This process leads to numerous enhancements in certain areas of the code, while other parts become deprecated. These deprecated sections are then replaced with more efficient and secure code due to the application of superior, enhanced approaches. A prime example of this is the improved security measure where an RPC server is utilized for browser opening, replacing the provision of SSH credentials, which could potentially be a significant security vulnerability. This continuous enhancement process cultivates an evolving experience and ensures the codebase is consistently up-to-date.
9- Seeking Assistance:
Despite my shy personality, I don't hesitate to seek help from colleagues when I encounter a roadblock or a challenging point in the project. I resort to this option only as a last measure when I'm saturated with ideas and need some hints. Their insights and experiences often provide valuable guidance and help me overcome obstacles, ensuring the smooth progression of the project. That's why I've listed this point at the end, as it's a final resort but an essential part of the process.
This methodology provides a structured approach to managing the project, ensuring that all tasks are completed efficiently and effectively. It also emphasizes continuous learning and adaptation, which are crucial for navigating the complexities of the project.
Education Journey: IRISA Platform - A Path of Technical Growth
Introduction
Embarking on a five-month internship at IRISA, my familiarity with Python was largely theoretical. However, this transformative period wasn't merely a sequence of tasks; it was a dynamic exploration that allowed me to not only apply my existing knowledge but to continuously learn from obstacles and challenges.
Contextualizing the Journey
The initiation of the internship marked the beginning of an immersive experience within the dynamic realm of infrastructure development. The IRISA Platform provided a real-world canvas for learning, experimentation, and innovation. This contextual backdrop sets the stage for understanding the intricacies of the tasks undertaken and the skills acquired.
A Learning Journey: Embracing Challenges and Opportunities
The internship was a transformative experience, presenting numerous challenges that served as unique learning opportunities.
The Power of Automation:
An enticing word for me throughout this journey has been "Automation." I found joy in automating every aspect of the project, from infrastructure to document building and deploying on webpages. This emphasis on automation not only streamlined processes but also underscored the significance of efficiency in project development.
Enhancing Skills with Python and Node.js
Developing a multi-subproject web interface using Python and Node.js marked a significant enhancement in my technical skills.
Mastering Containerization:
The complexities of containerization with Docker and Kubernetes were unraveled, adding a key aspect to my learning process.
Adapting Tools for Creativity:
The adaptation of tools like Apache Chart, noUiSlider, and xterm.js to meet project requirements demonstrated a fusion of creativity and technical skill.
Security Enhancement through Technology:
The application of OpenVPN integration and RPC technology for automated browser launching expanded my experience and led to my involvement in enhancing security.
Migration and Organization:
The transition from Flask to FastAPI broadened my experience, while the use of Ansible for role organization transformed theoretical knowledge into successful practical application.
Project Comprehension through Flowchart:
The use of 'flowchart as code' from eraser.io significantly enhanced my understanding of the project as a whole, facilitating my technical growth and adaptability.
Navigating Documentation:
Despite initial unfamiliarity, I managed to grasp the essentials of Sphinx documentation, aiding in the achievement of project goals.
Image Editing:
Beyond coding, I ventured into image editing, employing professional tools such as Adobe Illustrator and Adobe Photoshop. This not only enhanced the visual appeal of the project but also emphasized the importance of a polished and professional presentation.
In the realm of technology, every challenge became an opportunity for growth. Each new tool or framework served as a brushstroke on the canvas of my technical proficiency. This report encapsulates the diverse skills acquired and challenges conquered during this enriching period at IRISA, serving as a testament to the transformative nature of this internship.
Collaboration and Knowledge Exchange
The IRISA Platform was not a solo endeavor but a collaborative effort within the IRISA team. Engaging in remote knowledge exchange sessions with project partners, collaborating on intricate components with IRISA colleagues, and seeking guidance from experienced mentors fostered a culture of shared learning. The platform became a nexus for collaborative problem-solving, emphasizing the importance of effective teamwork in navigating complex projects.
Adaptability, Agile Development, and Task Management
The internship was marked by the iterative nature of tasks, from migrating frameworks to integrating third-party tools. This underscored the importance of flexibility and responsiveness in the face of evolving project dynamics. As these dynamics unfolded, the ability to adapt to evolving requirements emerged as a crucial skill.
Building on this adaptability, the application of agile development methodologies became a key focus. This included the use of an issue board integrated within GitLab for task management and scheduling. These methodologies not only enhanced the project's flexibility and responsiveness but also improved task management, emerging as crucial skills throughout the internship.
Beyond Coding: Embracing User-Centric Development
The creation of the Interactive Web-based Terminal and Diagram Illustration system went beyond the realm of traditional coding, venturing into the sphere of user-centric development. The emphasis shifted from producing lines of code to enhancing user experience, prioritizing the development of interfaces that were not only functional but also intuitively designed. This paradigm shift expanded the understanding of technology's impact on end-users. Two prime examples of this approach are the sub-projects involving xterm.js and bandwidth visualization, which effectively illustrate the focus on user-centric design.
Conclusion: A Holistic Growth Experience
To conclude, my journey within the IRISA Platform transcended beyond a mere technical exploration; it was a comprehensive growth experience. Beyond the realm of code and configuration files, it embraced collaboration, adaptability, user-centric development, and a profound understanding of the complex interplay between diverse technologies.
Moreover, my internship at IRISA served as my initial exposure into a French professional environment. This experience not only amplified my technical acumen but also provided me with an authentic exposure to a French workplace. This significantly enhanced my command over the French language, fostered my personal development, and facilitated a comprehensive assimilation of the French mindset.
Fundamentally, the amalgamation of theoretical insights from the first semester at the university and the practical experience from the second semester in a real-world setting has prepared me thoroughly. This all-encompassing preparation has instilled in me the confidence and advanced knowledge necessary to venture into the job market, or "le marché du travail" as it's known in French, positioning me as a strong contender, well qualified in the French job market.
This report stands as a testament to the transformative nature of the internship, revealing the multifaceted aspects of skills honed and challenges overcome during this enriching tenure at IRISA. It encapsulates the essence of my journey, viewing each challenge as a stepping stone towards growth and each new tool or framework as a brushstroke on the canvas of my technical expertise.
Future Prospects: Continuing the Journey
As the internship concludes, it marks not an end, but the beginning of a new chapter. I am thrilled to announce that I will continue my journey with the NaviDEC project in the role of a Design Engineer during Phase 3. This phase will focus on the actual integration of the IRISA platform with our project partners.
The upcoming phase promises to be an exciting and challenging endeavor as we move from the development environment to testing the platform in the real world, specifically in the maritime domain. This will provide an opportunity to validate the robustness of the platform and its capabilities in a dynamic and complex environment.
I look forward to this next phase, ready to apply the skills and knowledge I have gained during my internship, and eager to continue contributing to the success of the NaviDEC project. The journey continues, and I am excited to see where it leads...
Summary
This report documents the work carried out during a five-month internship at IRISA, focusing on the development of components for a composite service orchestration platform in the maritime domain. The report details the tasks accomplished, the challenges faced, and the solutions implemented.
During the internship, I accomplished 12 tasks, each contributing to the development and enhancement of the IRISA platform. These tasks ranged from infrastructure automation with Ansible Playbook, Docker container automation, to migrating the framework from Flask to FastAPI. Key accomplishments include the development of an interactive web-based terminal using xterm.js, creating bandwidth visualization using Apache ECharts, and the development of a user guide using Sphinx. The user guide was published on a website using GitLab Pages, providing a comprehensive guide for users to navigate and utilize the IRISA platform effectively.
The report is structured into three main chapters. The first chapter provides an overview of the project and the context in which it was carried out. The second chapter delves into the enhanced characteristics of the IRISA platform, detailing the various tasks executed and the challenges overcome. The final chapter explores the work organization methodology, providing a comprehensive account of the technical growth experienced during the internship.
The report concludes with a reflection on the internship experience and the knowledge gained. It also announces the continuation of the journey with the NaviDEC project in the role of a Design Engineer during Phase 3, focusing on the actual integration of the IRISA platform with project partners and testing the platform in the real world, specifically in the maritime domain.
This summary provides a snapshot of the work done during the internship, highlighting the technical skills applied and expanded in a real-world setting. The detailed discussions in the report provide a deeper understanding of each task and the challenges overcome.
Résumé
Ce rapport documente le travail effectué lors d'un stage de cinq mois à l'IRISA, axé sur le développement de composants d'une plateforme d'orchestration de services composites dans le domaine maritime. Le rapport détaille les tâches accomplies, les défis rencontrés et les solutions mises en œuvre.
Au cours du stage, j'ai accompli 12 tâches, chacune contribuant au développement et à l'amélioration de la plateforme IRISA. Ces tâches allaient de l'automatisation de l'infrastructure avec Ansible Playbook, l'automatisation des conteneurs Docker, à la migration du framework de Flask à FastAPI. Les réalisations clés comprennent le développement d'un terminal web interactif utilisant xterm.js, la création d'une visualisation de la bande passante utilisant Apache ECharts, et le développement d'un guide utilisateur avec Sphinx. Le guide utilisateur a été publié sur un site web utilisant GitLab Pages, offrant un guide complet pour les utilisateurs pour naviguer et utiliser efficacement la plateforme IRISA.
Le rapport est structuré en trois chapitres principaux. Le premier chapitre donne un aperçu du projet et du contexte dans lequel il a été réalisé. Le deuxième chapitre approfondit les caractéristiques améliorées de la plateforme IRISA, détaillant les différentes tâches exécutées et les défis surmontés. Le dernier chapitre explore la méthodologie d'organisation du travail, fournissant un compte rendu complet de la croissance technique vécue pendant le stage.
Le rapport se conclut par une réflexion sur l'expérience du stage et les connaissances acquises. Il annonce également la continuation du voyage avec le projet NaviDEC dans le rôle d'Ingénieur d'études lors de la phase 3, se concentrant sur l'intégration réelle de la plateforme IRISA avec les partenaires du projet et le test de la plateforme dans le monde réel, spécifiquement dans le domaine maritime.
Ce résumé donne un aperçu du travail effectué pendant le stage, mettant en évidence les compétences techniques appliquées et développées dans un contexte réel. Les discussions détaillées dans le rapport fournissent une compréhension plus profonde de chaque tâche et des défis surmontés.
License
IRISA Platform License
IRISA Platform License is released under the IRISA, Université de Rennes license with the following terms:
Copyright (c) [2023] [IRISA, Université de Rennes]
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of IRISA, Université de Rennes, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IRISA, Université de Rennes BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Disclaimer
Disclaimer
While every effort has been made to ensure the accuracy and completeness of this document, we acknowledge that errors or omissions may occur. The preparation of this document has benefited from the use of language enhancement tools, including ChatGPT and Bing Chat, to improve grammar, language usage, clarity, structure, coherence, and other aspects of writing. We apologize for any inaccuracies, oversights, or unintended remaining errors, and welcome any corrections or suggestions for improvement.
Refrences
References and Utilized Tools
[1] Giarré, F., Hadjadj-Aoul, Y., & Aït-Chellouche, S. (2023). A Service Migration Strategy for Resilient Multi-Domain Networks in Outage Scenarios. In 2023 International Conference on Information and Communication Technologies for Disaster Management (ICT-DM) (pp. 1-4). IEEE.
[2] Giarré Federico, 2023 main branch of NaviDEC platform Project repository on gitlab, GitLab Repository
[3] sphinx
[4] Python
[5] Node.js
[6] Skooner
[7] FastAPI
[8] Xterm.js
[9] Aansible
[10] Bing Chat
[11] OpenVPN
[12] Docker Hub
[13] OpenAI Chat
[14] Grafana Loki
[15] Diagrams.net
[16] Stack Overflow
[17] Apache Echarts
[18] Adobe photoshop
[19] Eraser Diagram GPT
[20] GitLab Documentation