Taking a break from my ‘dive’ into PHP (*grunt*), this weekend I spent some time on the project which I blogged about last Wednesday. The project is called "Obzrvr". It’s an idea I had to start tracking & potentially comparing the Facebook growth of brands. The idea here is that if say, the owner of Mario’s Pizza here in Trinidad would like to see how his competitors are doing over time on raw Fan growth and "people talking about" (a Facebook data-point) his competitors, like say Dominos, he can simply create a quick account on the system and start *obzrving* his competitor’s stats in these areas.
Recall that the building of this application was motivated by a desire to ‘dog-food’ ideas / methodologies that I’ve been pushing onto my own development team. Doing this exercise has made me remember very clearly how many different element a development team and as a consequence each individual engineer is required to master be able to quickly and successfully pull off a very short, very tight code-sprint.
I think that I’ve successfully hit on one of my most important goals with this 10hr – 13hr effort of software engineering which was to prove that in a very short period of time, a software engineering effort can produce "real & visible value" if the work is approached and executed correctly.
That said though, the exercise also highlighted some clear areas of improvement, the first of which, I’ll address in this blog post.
The Development Environment
Too often at companies and at hackathons I see developers hacking away at projects (especially web projects) in ‘environments’ that I don’t consider a productive, developer Dev Environment. Most times, I see folks hacking away in Notepad++, Sublime, deploy directly to a server online and test by check to ‘see if the code worked in the browser’ — uh … no.
A modern developer environment should have
- Modern IDE, not a text-editor, but and IDE that is capable of understanding the concept and a "project" – [my definition] a buildable & testable unit, made up of many different resources and/or "solutions", a collection of projects. Should be able to integrate with tool for automatic compilation & linking, testing, deployment. Not to mention all the other goodies like syntax highlighting, code-completion, refactoring, code/template generation bla bla … you get the picture.
- Debugging! – ZOMG! – I see developing debugging their code simply by deploying and running their apps so much that I wonder if debuggers still exist
- Local Execution Environment – Another thing I see fairly regularly with web devs is that they have no hosting environment on their local machine. Their process usually involves coding in their text editor of choice -> publish to web service -> refresh web browser -> look for bugs …. rinse & repeat 😛
For this project, this was my development environment
- Visual Studio 2013 Premium
- ASP.NET MVC 5 (C# Language)
- SQL Server 2012 Express Ed.
- Entity Framework v6.0
- IIS 7 & IIS Express
- IE11, Firefox 26, Chrome 32
- PowerShell v4.0 (Scripting)