Alexander Beletsky's development blog

My profession is engineering

Retrospective of or Best Project I Ever Accomplished

It’s been to years ago, I’ve released my own project - Month ago I’ve cancelled my VPS lease contract, so your would not see it available at anymore.

This project is first attempt to release something. I had some pet projects before, but never ever made them done. started as simple application to learn some JavaScript programming and HTML. It turns out to be much, much, much more. Even it seems to be very simple, but I’ve spent a lot of energy on it.

The product did not gather any meaningful amount of users neither good amount of traffic. For almost 2 years I was investing money/time on it. So, from the first sight it might appear as failed project.

Any kind of business should be evaluated in terms of assets. It’s not necessarily means money. Or more correctly, it does not meant “direct” money. I had no paying customers and I actually never thought to sell the product. But, I can prove it - every hour I spent on the project got back to me as value. And the most valuable asset for developer is skill, of cause.

I’ll try to analyze what actually happened:

  • Web development and design: even my professional involvement into web applications, did not give me a feeling of web development. I blame ASP.NET Web Forms for that, but I realized that I lack that kind of skill. That was my first project were I did everything by myself, all HTML/CSS/JS were handmade, not stupid WebControls. My eyes opened on how many things I did not understand, how difficult the front-end might be. Crafting of UI is a huge pleasure for me, I simply like beautiful things. 2 years after I will never call beautiful, but it was a great point to start.

    Outcome: I overstepped the uncertainty and fears of front-end. During the JavaScript programming. I’ve seen a lot of value in front-end MVC frameworks, so I had no doubts of moving from jQuery based apps to Backbone.js (or other MV*) frameworks. I did a several speeches of JavaScript applications development and got really cool feedback on it.

  • Test driven development: practicing TDD for quite long years already, so was not my first project were I applied the technique. The difference was that usually the we work with some legacy code at work, so TDD could be difficult to apply. Starting that project I had strong opinion on TDD and literally TDD’ed everything. UI, Controllers, Repositories.. JavaScript and C#. That was so great experience, I never felt on any other projects. During I think I moved from Shu to more clearly see what and when should I test to stay in good shape of application.
  • Outcome: currently I’m professional TDD trainer at XP Injection and much influenced that it happened. I share my experience with guys I show some examples of code there. I wrote a bunch of blog posts on TDD and it’s who gave most inputs and insights. I’ve implemented integration tests for my API based FuncUnit and that blog post became the part of JavaScript Weekly and still remains one of the best reads in my blog. I’ve learned UI testing and formed my opinion on that.

  • ASP.NET MVC: Never used ASP.NET MVC before, I armed with great book by Steven Sanderson I’ve started to learn new framework. And was main playground. Starting up with MVC2 and lately ported it to MVC3 I had a chance to play different aspects of framework. ASP.NET MVC was my first serious step into web development world.
  • Outcome: I became a huge fan of this technology, learning it from deep and posting information on it. I had a few speeches about ASP.NET MVC.. and the biggest one on MS SWIT 2012, there ~300 persons were listened to me. Then the company I worked to were deciding about back-end technology for API of new product I helped to integrate ASP.NET MVC into existing web site and we successfully built API on it. I assisted my team mates to understand the framework, it was not difficult at all, since I knew the stuff. Currently I have a training course on ASP.NET MVC as well and already conducted some.

  • API oriented architecture: popularized by Twitter and GMail, the architecture and having RESTfull JSON based service behind and the JavaScript-driven application on front-end, was my high-level architecture for

    Outcome: I successfully used the same ideas on other projects and it worked really well. For now I’m consulting few companies that tries to adopt same ideas. The most popular post in my blog is about build REST(like) services with ASP.NET MVC.

  • Continuous Delivery: being annoyed by manual update of production environment I’ve built simple continuous delivery pipeline that worked really great for me. During the way I’ve met such great tools as Jenkins, UppercuT, RoundhousE etc. That was my first try of this approach and I felt huge power and advantages of Continuous Delivery. Slightly it became one of the professional areas of interests for me.
  • Outcome: Continuous Delivery and Chuck Norris tools was the topic of my first talk on KievALT.NET. Since then I became an active participant of community and I really like it. Also, I’m talking about things like RoundhousE on my other speeches and trainings and I got a lot of pleasure than people stand by saying: “You know, we’ve tried that and it worked so nice, thanks a lot”.

  • Code base: the code base of application is rather small. There is C#, JavaScript, SQL and some NAnt scripts. A lot of things I used there I still copy and paste (or at least taking a look) from to my current projects. It became a kind of cook book, from there I could quickly pick up some recipe.
  • Outcome: I didn’t thought above that initially, but codebase also helping me to see what improvements I’ve made so far. For instance, I reviewed the API controllers recently and realized that I would never write anything like that. Having some code that you produced year or two ago you peer and compare gives some really interesting insights. Besides of application code itself, I’ve made an C# API adapter and the most significant outcome is ELMAH.MVC.

Concluding this, I would say - changed the things radically. I’ve became a speaker on KievALT.NET and UADevClub communities, my blog received an MVB status, I improved my skills and knowledge and I do trainings and consulting. Basically, I’ve “rebooted” developer inside me and saw my way of constant learning and improving.

Looking back I definitely say - it was only possible because of

Without any doubts, that was the most successful project to me!