\chapter{Project Management} \section{Project Plan} At the beginning of the project, a project plan was created to plan all of the work. That original plan can be found in \autoref{section:plan}. During the lifetime of the project, the plan was updated to reflect the actual state of the project. That adjusted plan can be found in \autoref{section:actual_plan}. For the first few weeks, I managed to match my initial plan pretty well. I spent a bit more time than I'd like on the concrete selection of my subject. First I planned to use a speaker as the sending device in MagSend, as a magnetic field is generated, when a sound is played through the speaker. After multiple tests and experiments I wasn't able to get useful results from the speakers and settled on using a CPU after some quick prototypes. In October, after defining the requirements for the project, my plan fell apart as I fell ill with COVID-19. I was sick for about 3 weeks and in that time I wasn't able to work on my thesis. This whole event caused my plan to shift behind a few weeks. I was generous in my initial planning, which helped alleviate this issue. In November, I picked up the pace again and started with the planning and documentation of the solution, and then started to work on the prototypes for the sender and receiver. I spent a bit longer on the prototype for the receiver as in early December I was busy with some other projects and exams. During the winter break and in early January, I in the process of finishing up the thesis report and the additional deliverables like the poster and movie. In the end it was a bit of a crunch to finish everything but thanks to some generous planning in the beginning it all worked out. \begin{sidewaysfigure} \subsection{Initial Plan} \label{section:plan} \begin{ganttchart}[ vgrid, hgrid, bar/.append style={fill=green!90}, x unit=0.8cm, y unit chart=0.5cm, y unit title=0.5cm, % height of title line and gap title height=1 % use full height for title, leaving no gap ]{1}{18} \gantttitle{Project Plan}{18} \\ \gantttitlelist{1,...,18}{1} \\ \gantttitle{September}{2} \gantttitle{October}{4} \gantttitle{November}{5} \gantttitle{December}{4} \gantttitle{January}{3} \\ \ganttbar{Prepare Thesis Document}{1}{2} \\ \ganttbar{Create Project Plan}{1}{2} \\ \ganttbar{Research Other Solutions}{1}{2} \\ \ganttbar{Experiment with Hardware}{1}{2} \\ \ganttbar{Write Introduction}{2}{2} \\ \ganttbar{Define Use Cases \& Personas}{3}{3} \\ \ganttbar{Define Requirements}{3}{4} \\ \ganttbar{Plan Solution}{5}{6} \\ \ganttbar{Document Solution}{5}{6} \\ \ganttbar{Define Test Cases}{6}{6} \\ \ganttbar{Prepare Hardware for Prototype}{7}{7} \\ \ganttbar{Create Prototype for Sender}{7}{9} \\ \ganttbar{Create Prototype for Receiver}{8}{10} \\ \ganttbar{Testing}{11}{12} \\ \ganttbar{Benchmarking}{11}{12} \\ \ganttbar{Document Materials \& Methods}{13}{13} \\ \ganttbar{Document Future Work}{13}{13} \\ \ganttbar{Create Abstract}{14}{14} \\ \ganttbar{Create Poster}{14}{15} \\ \ganttbar{Create Movie}{16}{16} \\ \ganttbar{Finish Thesis Report}{16}{17} \\ \ganttbar{Prepare Presentations}{17}{18} \end{ganttchart} \caption{Project Plan} \end{sidewaysfigure} \begin{sidewaysfigure} \subsection{Actual Plan} \label{section:actual_plan} \begin{ganttchart}[ vgrid, hgrid, bar/.append style={fill=green!90}, x unit=0.8cm, y unit chart=0.5cm, y unit title=0.5cm, % height of title line and gap title height=1 % use full height for title, leaving no gap ]{1}{18} \gantttitle{Project Plan}{18} \\ \gantttitlelist{1,...,18}{1} \\ \gantttitle{September}{2} \gantttitle{October}{4} \gantttitle{November}{5} \gantttitle{December}{4} \gantttitle{January}{3} \\ \ganttbar{Prepare Thesis Document}{1}{2} \\ \ganttbar{Create Project Plan}{1}{1} \\ \ganttbar{Research Other Solutions}{2}{2} \\ \ganttbar{Experiment with Hardware}{1}{3} \\ \ganttbar{Write Introduction}{3}{3} \\ \ganttbar{Define Use Cases \& Personas}{3}{4} \\ \ganttbar{Define Requirements}{3}{4} \\ \ganttbar{COVID-19}{4}{6} \\ \ganttbar{Plan Solution}{7}{8} \\ \ganttbar{Document Solution}{7}{8} \ganttbar{}{17}{17} \\ \ganttbar{Define Test Cases}{8}{9} \\ \ganttbar{Create Prototype for Sender}{9}{10} \\ \ganttbar{Create Prototype for Receiver}{11}{13} \ganttbar{}{15}{15} \\ \ganttbar{Testing}{14}{15} \\ \ganttbar{Benchmarking}{14}{15} \\ \ganttbar{Document Materials \& Methods}{16}{16} \\ \ganttbar{Document Future Work}{16}{16} \\ \ganttbar{Create Abstract}{16}{16} \\ \ganttbar{Finish Thesis Report}{15}{18} \\ \ganttbar{Create Poster}{16}{17} \\ \ganttbar{Create Movie}{18}{18} \\ \ganttbar{Prepare Presentations}{18}{18} \end{ganttchart} \caption{Project Plan} \end{sidewaysfigure} \newpage \section{Organization} All data for the project, including documentation, images, data, and source code was kept in a single Git repository \cite{MagSendGit}. The documentation and presentations were written using LaTeX with the official BFH templates. \subsection{Meetings} In the first week I agreed on weekly meetings with my advisor, unless it wasn't needed. For the big meetings I created a meeting notes document in advance, where I wrote down my progress since the last week and questions that I might have for my advisor. In hindsight, weekly meeting were a bit too frequent and bi-weekly meeting would have sufficed, but it was useful to have regular feedback from my advisor. \subsection{Mockups} During the planning of the solution, I created multiple mockups of the planned website and app screens. To create the mockups, I used the open-source design tool Penpot \cite{penpot}. \newpage \section{Conclusion} The project, albeit with some issues, was finished in time. The initial plan was only met for the beginning as the sickness delayed the rest of the tasks. This delay caused the last few of weeks of the project to be more stressful as I'd have liked, but thanks to generous planning it worked out. One of the biggest things in terms of project management I can improve for the next project is to plan everything a bit more. While I had some rough planning with my project plan, the individual points, especially the development of the prototypes were not fully planned. By splitting those tasks up in smaller ones, I could have planned around them better and might have found some flaws in the plan. The other problem was with the debugging and developing of the Android application. Many times I was testing the receiving of data over MagSend, when it didn't work, while it worked just in the try before. After much trial and error I found out that one of the main issues was that the logging capabilities of Android were quite slow and sometimes delayed the values from the magnetic sensor and caused wrong results, that didn't appear in normal utilization of the app. My takeaway from this is, to invest early in good logging and debugging utilities, especially when dealing with "invisible" data, such as magnetic fields and to use separate devices for running the applications as those used for developing them. In the end, I'm happy with the project and my results. I managed to develop a custom communication protocol and finish a working prototype in the allotted time.