A hobby project is often the best way to learn new skills, in particular, software technology. That’s the way Jonathan Speight, a 21 years old programmer from Southampton, UK chose for extending his C# proficiency.
Jonathan’s project aims “to facilitate the upload and storage or sensitive data without compromising the system (under the assumption that someone may try to upload a contaminated file).”
How did you come up with this idea?
I was introduced to DropBox a while ago, and that is what inspired me to attempt to create something similar in the hope of expanding my development skills. When I first used DropBox I was puzzled how their system worked and wanted to replicate the environment to improve my understanding.
What motivated you to work on this, despite being busy with other task?
I started out developing and programming as a hobby so the “it’s not a job – it’s something I do for fun” mentality allows me to come home and still have the motivation to work on a personal project. There are more than one motivational reasons; I am fascinated with how these things work. My very first experience was using a WYSIWYG editor when I was 16, then “Drag-n-Drop” website builders, then actual HTML/CSS and finally C#. I mention this because I feel that each individual item is similar to a stepping stone. From Visual C# I went to C# Console Applications using VS for Desktop. Now this is a good learning project for me.
What were your qualifications? Did you use your experience, or learn new skills?
I do not have Computer Science or programming qualifications from an institution. As previously mentioned, I began programming as a hobby and have been doing that for just under four years. I would say my “qualifications” are mainly C# desktop, Visual C# web and SQL. I did not have sufficient experience in file storage to use my knowledge as a reference. So, I did attempt to learn quite a few new skills (particularly C# console to build a desktop application that would interact with the server where the actual files are stored). I also found myself having to extensively research Ruby on Rails as it seemed to be the ideal language for some parts of the project, giving me what C# seemed not to have.
What was your time budget? How did you allocate it and plan the tasks? What schedule worked best for you?
I use the GreenHopper SCRUM software. In my experience, scrum is ideal for tracking software development progress. I attempted to split the development process and tasks into groups: system architecture, application security and application content. The schedule that works best for me is usually in the evening after I finish any actual job I had to work on. My usual time to work on hobby projects is after 8pm as before that I am either working, chilling or out with my friends. Hence, I normally have a couple of cans of Monster Energy and a five hour YouTube playlist.
Did you do everything by yourself, or did you hire help, paid or volunteer? Any advice on this for others?
Yes I do all the programming by myself. I do not have much experience collaborating with other developers on the code, although forums like ASP.NET and the MDSN or even GitHub are ideal when looking for help. I find that “developer orientated” online communities hold many more people who are willing to pitch in some code for free, or at least, I would be more than willing to help any fellow programmer for free (if my skills allow it).
How did you manage the project? Any specific tools and techniques that others can use?
I mainly use Visual Studio 2012 for Desktop and Visual Studio 2012 for Web. Apart from these, the other tools I use are GitHub and GreenHopper Scrum.
Any productivity tips to share? Tools, techniques?
I find that when I don’t have any sort of plan or structure for development I tend to jump from one piece of code to another, and although I can still finish a project it seems to take more time. I really am a fan of using any SCRUM software for agile development tracking and GitHub. I think that my lack of experience (less than 4 years) limits my programming efficiency, so I am always looking for ways to improve the way I work. I tend to buy a lot of books on C# and the Entity Framework. I use the MVC Entity Framework CodeFirst model of building applications when applicable.
Is the project in active use? Actively supported and extended? Any achievements to boast?
No it is not in use, it is still in development and I fear it will be in the beta stage until 2014. Some code fragments are in my github account. The techniques required for security and file storage for individual users has really tested my capacity for learning new techniques and their application.
What were the biggest benefits for you from this project, what brings you the most joy?
I think the biggest benefit from this project has been learning my weaknesses and the gaps in my knowledge. Being able to connect with other developers is what brings me the most joy over everything. I do not have any real-life friends that I would call programmers.
What lessons did you learn while working on this?
There are many lessons I have learned but I believe the main lesson is just because I can’t do something straight away (say like Scott Guthrie could) that I shouldn’t give up and that it can even be a positive thing. If I only coded what i know I would never be able to find my weaknesses and therefore never truly progress.
What would you do differently if you could go back in time?
If I could go back in time, I would take more time to pick a language for my project and research the possibilities, based on what I want to achieve. I was coding node just for a little while and even tried PHP but, especially the latter, held no interest for me. I find PHP to be too messy. I’m used to separating application logic from UI. That’s why I prefer MVC over WebForms. I think if I could go back, I wold start earlier on more advanced (at least to me) platforms such as Java or Cold Fusion.
What book would you recommend to someone starting a hobby project?
I would recommend to read books on system architecture. I feel that the architecture of an application is the basis for future development, and that without an in-depth understanding of the system or environment that you are using, you will not fully use your platform to it’s full potential. Of the books I read, I can recommend Microsoft Entity Framework in Action by Stefano Mostarda (aff.) and Pro Entity Framework 4.0 by Scott Klein (aff.) Those two are actually on my book shelf and have been very useful.
What other projects or authors would you like to read about in our interviews?
I am interested in C# console applications, desktop applications and software in general. I am always interested in hearing about other developer projects,especially if the developer is more knowledgeable than myself.
Feel free to ask Jonathan about the details of his project in the comments below.
This post was written by Valentyn Danylchuk, the editor of Five-Hour Projects. You can also publish guest posts here, suggest projects to write about, or get interviewed – contact firstname.lastname@example.org