Tuesday, 6 October 2015

Coursera: What it is like


Founded in 2012, Coursera is a Massive Open Online Courses (MOOC) platform. Yes, the term MOOC itself is worthy to be a subject of another post altogether. Without digressing too much, I shall keep this post focused on my own experience with Coursera courses (what about MOOC? perhaps I shall write another post on MOOC in future). 

So, if you have been sitting on the fence and pondering whether should you start signing up for online courses. Here, I hope this post aids you in your decision to take up an online course, a Coursera course.

Okay, So I've heard of Coursera, what exactly is it?

Basically Coursera works with top universities and educational organisations to make some of their courses available online. In this regard, it has a really wide range of courses in multiple disciplines; such as Computer Science, business, mathematics, humanities, sciences, marketing, etc. In short, you could almost always browse through their catelog everytime and might still be able to pick out one or two courses that are of interest to you.

That sounds good. But is it free?

So far, most courses I've found are "Accessible for free", this means you have access to the lecture videos, notes, quizzes and exams (unless not applicable for the course) after signing up for it. 

The course materials alone should be sufficient for one to kick start their self-study and exploration into the topic of interest.

Does it come with a certification?

Most courses have a "Signature Track", which you pays a fee to get verified certificates, often useful for career development. However you do need to verify and authenticate your work submissions by sending webcam photos and having their typing patterns recorded.

But I don't have much time for a course..

For one, taking a Coursera course is an easy way to work out your brain, in terms of learning new domains of interest. That's all good things, but, in order to enjoy a course effectively, however, you have to be fully committed to the lectures, review material, quizzes, and must be interested in the topic.

With that said, do expect to commit at least 8-10 hours per week attending lectures and completing assignments and perhaps, exams. 

As a first time user myself, initially I have signed up for multiple courses that was really interesting to me (hey, its free anyways). But I soon realised the difficulty of keep up with all the lectures, assignments and coursework. Then, the necessary decision came for me to start dropping courses in order to ensure maximum efficiency in those that I was most interested in.

In the end, I took "Cloud Computing Applications", provided by University of Illinois Urbana-Champaign. This was a 5 weeks course, with video lectures (about 10-25 minutes long) which were packed with material and content being taught by college professors. 


Interaction with other students?

The forum is one of the main avenues for course participants and staffs to get in touch and help one another (apart from their course Facebook page which I decided not to join). 

In the forums, detailed explanations of concepts and tips for the assignments or coursework can be found there. Hence, I highly recommend one to contribute to the forum to help others as you also would find help there too.

Any final tips?

Picking the right course is especially important if you are working full time at an organisation, or a full time student at a university. I recommend picking just one course that you know you'll enjoy most and that you will get a lot out of.

For this first course, experience the course mechanics and understand its requirements first, before determining if you can keep up the course commitments. Of course, spending time on the course is also important as like any regular class, they require revision, focus and studying.

Ask questions in the forum and discuss the topic with other students. You will find that you learn best when you contribute in helping others and getting help yourself at the same time. Rest assured the teachers will look at the posts and answer promptly.

Lastly, try it out. And I hope you have a good experience at Coursera, just as I did. 


Monday, 5 October 2015

Best Practices for Software Version Control

This post contains some of the best practices for using version control systems in your project (for ease of reference, I shall refer to it as SVN). As a software developer, you will almost definitely used one of the variants of version control systems (e.g. JDeveloper's SVN plugin, TortoiseSVN..), thus good version control practices are as important as good programming practices. The recommendations listed in this wiki are by no means exhaustive, but the principles should easily transfer to other systems as well.




Here are 3 tips:

1. Commit often and in logical chunks

The basic work cycle is always update your working copy before doing any changes to files. By doing “update to head”, resolve any conflicts, run a build and make sure there are no failures before checking in code. In general, it is preferred to commit changes in logical chunks. This means that changes that belong together should be committed together, changes that don't shouldn't.

If many code changes are done to a project at the same time, split them up in to logical parts and commit them in multiple sessions. This makes it much easier to track the history of individual changes, which will save time when trying to find and fix bugs or doing code reviews.


2. Write meaningful commit comments

Although often under-utilised, comments should be brief but detailed enough to describe what was changed. If several changes were made, write one line or sentence about each part. If the list of changes gets too long, consider splitting the commit into smaller parts. Otherwise, it can be problematic when code commits are not fine-grained, e.g. submit a week's worth of changes to multiple modules in a large pile. Thus, comments can be very useful to distinguish trivial from non-trivial changes in the repository.

Prefix your comments with Identifiers

Prefixing commit comments with identifiers is a good way to indicate the type of change made. It also allows easier filtering of content later when we do code reviews.


Identifier 
Indication 
FIX
Issue fixes / Improvements
ADD
Change Requests / New files
REMOVE
Delete files
TEST
Add/remove logs for debugging purposes
DOCS
Documentation only changes e.g. code comment
STYLE
Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)

Reference the Bug ID


If the change is about fixing a specific bug, do reference the bug number in the commit message (assuming your project has some sort of bug tracking database or system).

3. Do all file operations in SVN

Whenever there is a need to copy, delete, move or rename files or folders in the repository, do so using the corresponding file operations in the version control system. If this is done only on the local file system, the history of those changes will be lost forever.

Conclusion

Consider giving the above suggestions a try, you might like it. Please share your thoughts and feel free to add on to the list of best practices too. If you are interested in more practices on working with SVN, this is a recommended book:

Version Control with Subversion, by Ben Collins-Sussman, Brian W. Fitzpatrick and C. Michael Pilato