Giving back to the development community

Posted on February 10th, 2009 in Miscellaneous | No Comments »

I didn’t get where I am all by myself, I’ve had the help and support from many people and organizations. Some came from friends and family, some came from the various schools I went to and a lot came from the online communities and blogs that helped me find the answers to many programming issues and the inspiration to improve my skills.

Without them, I would not be doing what I do today, nobody would be doing what they are doing today without mentors. We all need a starting point and a way to learn more about something (in the form of a book, an Internet article or a person). Now that I am a qualified Web developer, I still need the help from my colleagues and from the online communities more than ever. I still read plenty of blogs and articles about Web and software development practices and I still don’t know everything about HTML, CSS, JavaScript, C#, SQL, etc. (I’m working hard on that).

If I need them, I thought that maybe my help could be valuable. That’s why I try to do my part and participate in helping others learn and get better.

This is how I try giving back to the development community.

Blogging

The first way is via blogging. I’ve started this blog here mostly for logging the important events in my career, but I’ve also started writing in a more technical blog which I hope will help others become better developers. I’ve been reading various development blogs for a few years now and it has had a big impact on the way I think and develop. By blogging here and at Crossbrowser, I feel like I can reach and help many people at once.

Academos

Academos is a web site built to help young students (high school) learn more about the jobs they are interested in. They contact someone who does a job they consider for their future and ask questions about what qualities are important to do that kind of work, what formation is required, the work environment, etc. No one knows what work is really like more than the people doing the job, so us E-mentors can really help them choose the right career.

Development communities

I’ve always wanted to help others on development forums. However, until recently I never had a community that I felt I could really connect with. That place is called Stack Overflow (think experts-exchange, but free) and helps developers around the world find answers to their problems. Anyone can ask a question and anyone can post their solution and comment. There’s a reputation system encouraging people to answer which means a question rarely goes unanswered. There is still the problem of very specific questions that no one really knows the answer of, but so far all my issues have been resolved. I do my part there by contributing answers and comments on questions in my field of expertise.

Web education

Web development education has been lacking at University level (there was nothing about the Web where I graduated). During the Wine & Cheese of January hosted by the Polytechnique de Montréal, a great teacher I had mentioned the new class they had which is an introduction to Web development. He wanted to create three more classes about different Web development subjects but said that school needed to feel the need and support from companies.

Shortly after I came across two articles from A List Apart which were talking about Web education. The first article mentions a few groups trying to help build the curriculum and talks about the state of Web education at University level (it’s pretty much nonexistent at most universities). The second article talks about what we, Web development professionals, can do to help improve that.

So after talking with my colleagues and bosses, we decided to offer our help and support to the local university in building their curriculum or for anything else they might need us.

Giving back

It’s important for me to help others as I was helped now that I am in a better position to help. There are other ways to help, this is how I chose to do it and I’ll be on the lookout for other opportunities to give back. It feels good to help and if you have the tools to do it, you should.

My undergraduate thesis (PFE)

Posted on January 28th, 2009 in Projects | No Comments »

During the final year of the software engineering degree at the Polytechnique, students have to undertake a major project which counts for one or two classes (3 to 6 credits). That project can be done alone, with someone else or in a small team. By choosing to work with a small team, you’ll get a good real-work experience by working closely with a company to do one of their research-and-development projects. If you do it alone or with a friend, you get to do any project you want, as long as your supervisor approves it.

I had an idea for a project that would allow me to learn quite a few things, so I decided to do the project alone (there was not enough in it for more than one person).

The project

Description and Goals

I decided to build a Web application to improve my Web development skills. Mostly, I wanted to learn how to use Ajax and to use the object-oriented design philosophy in a Web development project. I was also using phpMyAdmin regularly for my projects at the time and I always felt it had too many features and options. I was only using a tiny portion of the tool and felt a simplified tool could be useful for users like me who didn’t need everything. I also wanted to add some “on-the-spot” editing of the values in the tables as is possible with desktop applications like SQL Server Management Studio.

So I started working on my Ajax-powered online database management system (DBMS).

Requirements and Specifications

The first step was to determine what were the requirements (which I was fixing myself) and which tools at my disposal would help me fulfill those requirements.

The requirements were:

  • Object-oriented design
  • Ajax (no postbacks)
  • User-friendly

And the tools were:

  • PHP 5+ for its OO support
  • JavaScript
  • CSS for the styling
  • XAMPP Lite for testing

Features

I then determined what features I would put in my first iteration of the application. My goal was not to have a full-featured product ready by the time the project ended, it was more of a proof-of-concept to show that it was feasible to create a simple online DBMS.

Here’s a list of the features that made the cut for the first iteration:

  • Creation and deletion of databases
  • Creation, modification and deletion of tables within a database
    • Addition, modification and deletion of fields for the table (field name, type, default value, auto increment, …)
  • Insertion, edition and deletion of rows in the tables
  • Query editor to execute written queries on the data
  • User-friendly navigation

Implementation

I will leave the details of the implementation for a future post, but I managed to implement most of the features while respecting my requirements and specifications. The only missing feature from the list above was the table modification feature.

Conclusion

To me, this project was a tremendous success, I managed to do almost everything I had planned and at the end I had a mostly usable online DBMS. It had a few bugs and was missing some critical features, but I learned so much from it. It also helped me get my current job at Hint Innovation since the development philosophy I used for this project was really similar to the way we work at Hint.

Indeed, the way I designed my classes and objects was very similar to the way Domain-driven design (DDD) approaches design. At Hint Innovation, we embrace the DDD philosophy and I only have good words for it. While doing my undergraduate thesis I didn’t know that my approach to OO design was so different, but since I’ve started working at Hint, I’ve seen the similarities between my approach and the Domain-driven design philosophy.

My professional blog

Posted on January 26th, 2009 in Blog News, Crossbrowser | No Comments »

I finally decided to put the time to set-up the professional blog I’ve talked about in a previous post.

It’s name is Crossbrowser, because it’s a topic that’s always important when developing Web applications.

Whenever I post on that blog and feel the subject is also relevant to this blog I’ll write a little post to point readers to it.

What’s the difference with this blog?

I would categorize this blog as a career blog which is a place where I talk about what’s going on with my career. The Crossbrowser blog will mostly talk about the technical aspects of my job or other projects. Most people will find more value in that other blog. However, as I said, whenever a post is relevant to my career blog, I’ll write about it.

Learn revision control, it’s good for you

It’s the title of the first such relevant post, I talk about revision control and the lack of teaching of this skill at school and why it should be taught. So learn revision control, it’s good for you.