Archive for April 2013

Eliminate Those Nasty Bugs!

Do you fix bugs before writing more code?

It is in software companies' best interest to command their project managers to only lightly force an import deadline upon programmers. Why? An enclosing deadline with merely only weeks or months remaining can severely damage your programmers work efficiency causing projects to fall behind, drastically. A tight deadline causes stress. Stressed programmers is a project managers worse nightmare, everything is rushed and the output code is buggy and useless.

Code that has many buggy characteristics will only cause more problems when additional code is added. In industries the active project will be much more efficient if all bugs are targeted and fixed before more is added. A perfect example is, in fact the first Microsoft Word. The programmers of Microsoft Word were all working obscene hours to ship one build in the (tight) deadline they had. The project was continuously delayed again and again. When the final build was shipped off Microsoft placed the team on vacation and commenced searching for the main cause of the late shipping. It was found that the project managers were sticking to the deadline so much that programmers were forced to rush. The story goes one programmer, who had to write code to calculate the height of the text wrote return 12; and simply waited for the bug report to come in. The longer you wait to fix a bug, the more costly it is in terms of time and money to fix.

Bug Database

Keep a bug database! This is extremely important, some programmers wager that they have a mental list of bugs. I can hardly remember 5 bugs in my code that I only wrote last night. Especially when working in large teams a bug database is a must. A simple database might consist of the following:

    a) Detailed steps to reproduce the bug
    b) Expected behaviour
    c) observed (buggy) behaviour
    d) Who's in charge of this particular bug
    e) The status ie critical, unstable, stable, fixed

If you do not have one at your workplace you are wasting precious time everyday when you come back to that piece of code figuring out the particular bug ... its a must!

Get a Tester

Having a dedicated 'tester' is today a vital, must-have in the workplace. A programmer on a $100/hr payroll testing code is illogical and expensive especially when you can have a $30/hr tester doing this. There should be at least one tester for every 3 programmers for efficiency and speed. Get stuff done, get a tester.

Is there any aspects of this article you disagree or agree with? Let me know in the comments!




Tuesday 23 April 2013
Posted by Unknown

The Easiest Way to Learn Languages (with excellent learning sources)

Currently I am learning French, spoken in 29 countries its beautiful verbs and conjunctions make it an excellent (not to forget romantic!) language. Comparing to other languages such as Russian and Latin French is not a hard language to learn. The same goes for programming, learning easier languages at first is much more efficient. Learning HTML (the simplest of markup languages) is the way to go before jumping into languages such as Java and C, even if you don't have an interest in web applications. Today time is limited and our lives are ever more getting busier and busier. As engineers we need to be efficient in learning languages thus we can sooner get onto fixing problems. Grasping the many different (perhaps difficult) perspectives of C syntax is time consuming. Why not start with an easier language, master it and then shoot through C having a better knowledge on the simplest of concepts so you can focus on the harder ones. To me, it makes perfect sense.

You can search the internet and without looking far you can find common questions people are asking such as "What programming language(s) should I learn?", "What is the easiest language to learn" and so on. All languages are different and thus have their different advantages and disadvantages. Some are easier to learn but not as powerful and others have hard syntax, have many headaches such as time required to compile and debug but are extremely powerful rapidly expanding the amount of problems you can address with the language.

I was inspired by Java, although I was only interested in this for a while although it definitely inspired me to learn programming. Easing in gently was everything to me, I didn't want to ruin my passion and incentive to learn. I began with a markup language HTML5 and CSS which opened my view to how web applications such as Twitter, Instagram and Facebook were made. Learning HTML & CSS was very beneficial to learn the very basic concepts and feeling of programming, although strictly speaking HTML & CSS are not programming languages.

After exposing myself to these the command shell and Git was a definite must-learn followed by Python which was the real eye-opener to programming concepts (and still is). I plan to master Python then debate on either to learn PHP or C++, both remarkable languages. As stated in my last blog post Python is a language that should be learned in modern day society. If you browse for Google Jobs one of their specifications Python is now a must, but many companies will employ expecting you to work with any language regardless if you know it or not, its the process of learning one language that you benefit from and if you've done it once people will believe you can do it twice.

The best way to learn languages is by applying. By creating simple 'Hello World' programs in the proposed language is the best way to remember. Read a few good books, try dismantling programs and see how they operate and the reliability of internet sources are rapidly soaring. But if you don't want to keep staring onto a computer screen all day (like me) keep with books.

Everyone has their own preference for languages for those who would like to follow in my steps (or similiar) I have constructed a list of excellent learning resources that I myself have used:

Note: All sources are free except the very first and last source.

HTML & CSS
  1. HTML5 & CSS3
  2. Where else than the creators themselves W3 Consortium
Command Shell and Git 
  1. Bash Manual
  2. Learning the Shell
  3. Learn Code The Hard Way
  4. Try Git
  5. Go Pro with Pro Git
Python
  1. Python 3 Documentation 
  2. A Byte Of Python (Highly recommended, Harvard University uses this)
  3. Dive into Python 3 
  4. Learn Python The Hard Way
  5. Python Class (PAID)
What do you believe is the best way to learn languages? Post your thoughts in the comments :)
Sunday 21 April 2013
Posted by Unknown

Languages of the future - C or Python?

   Old-school languages like C, C# and C++ still reign supreme as the ultimate choice to program in today. But what about other languages? Google has tried to change the world by introducing its new programming language Go. Officially opened in November 2009 after two years of design its syntax is broadly similiar to C. But why hasn't it kicked off? The designers of Go believe its syntax is easier to understand than high-end languages such as C, especially when things gets in-depth and complicated. But it comes to the fact that language designers don't have practical objectives. Most designers have the eagerness to build a language that stands out from the crowd without thinking of its usefulness. Some other reasons for failed languages is the accompanied poor documentation and support from designers. Take a look at this trend table sourced from Tiobe.

Position
Apr 2013
Position
Apr 2012
Delta in PositionProgramming LanguageRatings
Apr 2013
Delta
Apr 2012
Status
1 1 C 17.862% +0.31%   A
2 2 Java 17.681% +0.65%   A
3 3 C++ 9.714% +0.82%   A
4 4 Objective-C 9.598% +1.36%   A
5 5 C# 6.150% -1.20%   A
6 6 PHP 5.428% +0.14%   A
7 7 (Visual) Basic 4.699% -0.26%   A
8 8 Python 4.442% +0.78%   A
9 10 Perl 2.335% -0.05%   A
10 11 Ruby 1.972% +0.46%   A
11 9 JavaScript 1.509% -1.37%   A
12 14 Visual Basic .NET 1.095% +0.12%   A
13 15 Lisp 0.905% -0.05%   A
14 16 Pascal 0.887% +0.07%   A
15 13 Delphi/Object Pascal 0.840% -0.53%   A
16 32 Bash 0.840% +0.47%   A
17 18 Transact-SQL 0.723% -0.04%   A
18 12 PL/SQL 0.715% -0.66%   A
19 24 Assembly 0.710% +0.24%   A--
20 21 Lua 0.650% +0.08%   B

  Languages such as C and Java are still the top players with PHP, Basic and Python follows distantly behind. Python is slowly growing in reputation, but is it the language of the future?
The answer is not known even when analysing statistics. Although Python is slowly gaining popularity the language itself is one of a kind. Its syntax is one of the first that actually focuses on making it easier for the engineer so full attention can be focused on the problem, not the language. When reading Python it is like reading English, but strict English indeed! I believe the fact that Python's syntax is incredibly simple, doesn't require an IDE/compiler and is being used by big corporates such as NASA and Google gives the language a big chance of being the language of the future. Python has influenced several languages some being Go, Cobra and a slight hint of Ruby. Languages go in and out of fashion all the time but Python is definitely here to stay. Learn Python and even if it dies from the face of Earth you have still learned (and hopefully excelled) the basic concepts of programming as they are relatively similar across all languages.

What do you think about the prospect of learning C and/or Python? I would like to hear your opinions!
Saturday 20 April 2013
Posted by Unknown

Popular Post

Blogger templates

Labels

Copyright 2013 JOG-AU. Powered by Blogger.

Blogroll

- Copyright © JOG-AU -Metrominimalist- Powered by Blogger