Going into fourth year and setting my own brief was a fairly daunting experience. My early concepts were mostly focused around the community and skill sharing. There were quite a few factors which influenced me to finally settle on the concept that would become Codelight. I was introduced to html and php at a relatively young age and would happily spend hours combing through open source applications and trying to build someone functional form the scraps. But many people I speak to view coding as some kind of arcane process which is completely removed from reality, often because they’ve just not had the opportunity or motivation to experience it or don’t know where to look for useful resources. I wanted to create a place where people could interact in real-time whilst tinkering with what one another had written. Noble intentions aside, I have to admit that the technical challenge in building such a complex, real-time application from the ground up was a major contributing factor in my decision.
During development this year I was able to build on some of the principles I employed during our previous designing social networks module which I picked up from developing themes and plugins for wordpress. After putting together an early ‘proof of concept’ prototype, I made a point of forcing myself to overcome the ‘whatever works’ mindset of just throwing things together as they are needed that often comes with the excitement of a new project and create a structured foundation. Although I wish I’d had this reformation earlier in the year and saved myself a lot of heavy refactoring throughout the process, being able to see such a sharp contrast between poor, thrown-together code and a well thought-out, structured application really drove home how much it can speed up development and make implementing new features less painful.
Designing the interface was an interesting experience. Graphical design and creating beautiful colour palettes is something that i’ve never had a strong affinity for. So rather than attempting to create an ‘artistically’ beautiful interface, I decided to focus on the more technical elements of the graphical interface and their interactions. During early development, I considered using a framework such as bootstrap to handle some of the heavy lifting for the interface. Eventually I decided against these, partially because such comprehensive frameworks will inevitably have performance overheads which, although small, I couldn’t justify given how many of the elements I’d expected to use. But also because I felt using pre-packaged UI elements would detract from the identity of the application. I spent some time playing with margins and padding, ensuring elements were aligned, fitted together well and didn’t become too cluttered.
Overall, I feel my project was a success. Despite the fact that I pushed myself quite far out of my comfort zone by using the MEAN (MongoDB, Express, Angular, Node) and caused myself a lot of setbacks. During my early planning of the project, I had envisioned a much more broad range of functionality which it would have potentially been possibly to implement if I had focused on simply firing out features. However, I feel like by focusing on a small set of core features, implementing them with best practises and testing them thoroughly with users I’ve improved my skills across the board much more than if I had attempted to poorly build the application to the scale I’d first envisioned. I’ve gained a much greater idea of the development time required for more complex applications which I’m glad I have before entering the professional world.