Assignment 1: PROJECT MANAGEMENT

As part of my Fab Academy journey, creating a web page has been a critical task. The web page serves as a platform to document my learning process, showcase project development, and communicate effectively with instructors. By systematically recording each step of my assignments and projects, it ensures clarity, transparency, and organization. Beyond being a repository of my progress, it reflects my technical skills and creativity, offering a professional way to share my work with others.

One of the key technical skills I developed during this phase was **version control**. Using **Git**, I learned to track changes in my files, manage repositories, and resolve merge conflicts effectively. This is especially useful when multiple contributors work on the same project simultaneously. To complement this, I used **GitLab** to host my repositories on the cloud, making it easier to collaborate and share updates. Additionally, I mastered **GitBash**, a Windows-based tool that allowed me to push and pull files between my local machine and the Fab Cloud, streamlining my workflow.

Alongside these technical tools, I gained valuable insights into project management. The intense nature of the Fab Academy, with its weekly submissions and overlapping tasks, required detailed planning. I adopted **Gantt charts** to visualize and schedule my tasks efficiently, breaking down assignments and deadlines into manageable components. This structured approach enabled me to stay on track and meet the program’s demanding requirements while balancing other commitments.

In addition to planning tools, I also explored project management principles that enhanced my approach to assignments. Concepts like **triage**, **demand vs. supply time management**, and **serial vs. parallel development** were invaluable for prioritizing tasks and optimizing productivity. I also embraced **spiral development**, iteratively refining my work through prototypes and testing, and adopted **bottom-up vs. top-down debugging** strategies to identify and resolve issues effectively. These techniques helped me handle the complexities of assignments more confidently.

Reflecting on this experience, I recognize both successes and areas for improvement. I successfully created and hosted my web page, learned to use Git and GitLab for efficient collaboration, and developed strong project management skills. However, I also identified areas where I could streamline processes further or approach challenges differently. Moving forward, I aim to build on these lessons, refine my strategies, and continue improving my technical and organizational abilities to excel in future projects.

My Actions

1. Website Development

I developed Website using HTML and CSS.HTML defines the structure and content of a webpage which means, it builds the skeleton of the page.While CSS controls the visual appearance and styling of those elements which dresses it up with colors, fonts, and layout designs.

I built website with a header, main and footer sections which has navigation bar in header, body content in main section, and contact information in footer section.
I wrote code for Home page, about me page, Weekly assignments page which include detail about assignments I should do in my learning journey, Final Project page, Student Agreement Page.


2. Version Control

Step1: I utilized Git Bash on Windows to clone my repository from Fabcloud. The repository was successfully copied to my local environment.


3. Project Management

Step1: I am planning to use a Gantt chart to document all the major tasks of my final project, along with tentative timelines for each task. Although I am not familiar with Gantt charts yet, I aim to explore and learn how to effectively use them for organizing and planning my project.



How I Achieved

1. Website Development

During my assignment, I leveraged Visual Studio as my primary code editor to modify and refine HTML and CSS files for my project. This experience allowed me to deepen my understanding of web development fundamentals, including editing text, images, and overall layout structures. Having familiarity with similar tools, I quickly adapted to the nuances of working with HTML file formats.

I relied on learning resources such as W3Schools, FreeCodeCamp, and GeeksforGeeks to enhance my technical skills. My work began with editing the index.html file to design an engaging homepage, where I customized fonts, navigation bars, and a top cover section. I also created interactive thumbnails for weekly assignments and established internal links between pages like About Me, Weekly Assignments, and Final Project, Student Agreement.

Furthermore, I added 18 thumbnails on the Weekly Assignments page, linking each to its respective assignment page. I also improved the side navigation menu bars for the About Me and Final Project pages. Through CSS modifications, I fine-tuned font sizes, adjusted padding, and improved the overall menu design to create a cohesive and user-friendly interface.


2. Version Control

Step 1: I began by downloading and installing Git Bash for Windows from GIT SCM and used the Git commands to clone my repository from FabCloud to my local machine. Simultaneously, I accessed my GitLab account using the FabCloud login credentials to ensure seamless integration.
Step 2: Next, I generated an SSH key pair by executing the command ssh-keygen -t rsa -C "bommidir0@gmail.com" -b 4096. After the SSH key was created, I securely copied it to the clipboard using the command cat ~/.ssh/id_rsa.pub | clip, enabling a secure connection between my local environment and the repository for future Git operations.

Step 3: I navigated to my GitLab account and added the generated SSH key under the Profile Settings > SSH Keys section to establish a secure connection between my local machine and the repository.
Step 4: To verify the successful linkage of the SSH key with my GitLab account, I executed the command ssh -T git@gitlab.fabcloud.org, confirming the successful authentication and ensuring that the setup was properly configured.

Step 5: I revisited my GitLab account and copied the SSH link provided for cloning the repository to ensure I was using the correct URL for the operation.
Step 6: After copying SSH link, by using the Documents folder on my local machine environment as the destination path, I ran the command git clone which is following as git@gitlab.fabcloud.org:academany/fabacademy/2022/labs/vigyanashram/students/kishor-gaikwad.git to successfully clone the repository onto my computer, ensuring all project files were retrieved locally for further development.

Step 7: I navigated to the cloned repository folder using the command cd documents and verified that all files were successfully cloned.
Step 8: I executed the git pull command to fetch and integrate the latest changes from the remote repository to my local system. The operation was completed successfully.

Step 9: The next commands to be executed are git add --all followed by git commit -m "WRITE CUSTOM MESSAGE HERE".

Step 10: The final command to be executed is git push. This command uploads the newly added or updated files from the cloned folder on the local drive to the remote repository, as demonstrated below.


3. Project Management

I plan to use GanttProject for organizing and managing the major tasks involved in my final project. Although I haven’t worked with GanttProject before, I’m excited to learn how to leverage this tool for project planning. My previous experience with similar project management tools gives me a foundation, but GanttProject will be a new challenge. I aim to familiarize myself with adding tasks, creating subtasks, and organizing them efficiently. One of the key things I’m looking forward to is learning how to set up task dependencies, such as predecessor tasks, which will allow me to visualize the project flow better. Additionally, I want to learn how to adjust timelines for each task, ensuring that all tasks are properly scheduled and aligned with the overall project plan. I also plan to explore resource allocation in GanttProject, so I can assign responsibilities and track the progress of each task more effectively. Saving and managing the project files will be essential, and I’m keen to understand the best practices for doing so. Another feature I’m particularly interested in is exporting the Gantt chart into various formats, such as PDF and PNG. This will allow me to share my project plan easily with colleagues or stakeholders. I want to ensure that my exported Gantt chart is clear, visually appealing, and easy to interpret. By learning how to use GanttProject, I aim to improve my ability to manage tasks, timelines, and resources effectively. I believe this tool will help me stay organized and allow me to keep track of my project’s progress in a structured way. Overall, mastering GanttProject will be an essential skill in my project management journey, and I’m eager to gain hands-on experience with it.