الأربعاء، مايو 18، 2011

Seven -7- Rules for Beginning Programmers

  1. Do not write long procedures. A procedure should not have more than ten or twelve lines.
  2. Each procedure should have a clear purpose. It should not overlap in purpose with the procedures that went before or come after. A good program is a series of clear, non-overlapping procedures.
  3. Do not use fancy language features. If you’re using something more than variable declarations, procedure calls, control flow statements and arithmetic operators, there is something wrong. The use of simple language features compels you to think about what you are writing. Even difficult algorithms can be broken down into simple language features.
  4. Never use language features whose meaning you are not sure of. If you break this rule you should look for other work.
  5. The beginner should avoid using copy and paste, except when copying code from one program they have written to a new one they are writing. Use as few files as possible.
  6. Avoid the abstract. Always go for the concrete. [Ed. note: This one applies unchanged.]
  7. Every day, for six months at least, practice programming in this way. Short statements; short, clear, concrete procedures. It may be awkward, but it’s training you in the use of a programming language. It may even be getting rid of the bad programming language habits you picked up at the university. You may go beyond these rules after you have thoroughly understood and mastered them.

الجمعة، مايو 06، 2011

Why Communications Skills Are So Important

The purpose of communication is to get your message across to others clearly and unambiguously.

Doing this involves effort from both the sender of the message and the receiver. And it's a process that can be fraught with error, with messages often misinterpreted by the recipient. When this isn't detected, it can cause tremendous confusion, wasted effort and missed opportunity.

In fact, communication is only successful when both the sender and the receiver understand the same information as a result of the communication.
By successfully getting your message across, you convey your thoughts and ideas effectively. When not successful, the thoughts and ideas that you convey do not necessarily reflect your own, causing a communications breakdown and creating roadblocks that stand in the way of your goals – both personally and professionally.

In a recent survey of recruiters from companies with more than 50,000 employees, communication skills were cited as the single more important decisive factor in choosing managers. The survey, conducted by the University of Pittsburgh's Katz Business School, points out that communication skills, including written and oral presentations, as well as an ability to work with others, are the main factor contributing to job success.

In spite of the increasing importance placed on communication skills, many individuals continue to struggle with this, unable to communicate their thoughts and ideas effectively – whether in verbal or written format. This inability makes it nearly impossible for them to compete effectively in the workplace, and stands in the way of career progression.

Getting your message across is paramount to progressing. To do this, you must understand what your message is, what audience you are sending it to, and how it will be perceived. You must also weigh-in the circumstances surrounding your communications, such as situational and cultural context.

Communications Skills – The Importance of Removing Barriers:

Communication barriers can pop-up at every stage of the communication process (which consists of sender, message, channel, receiver, feedback and context – see the diagram below) and have the potential to create misunderstanding and confusion.
To be an effective communicator and to get your point across without misunderstanding and confusion, your goal should be to lessen the frequency of these barriers at each stage of this process with clear, concise, accurate, well-planned communications.
You can find out which barriers your communications tend to stuck at by taking our How Good Are Your Communication Skills? self-test. But in summary, here's some more information about each stage of the communication process:

Source...

As the source of the message, you need to be clear about why you're communicating, and what you want to communicate. You also need to be confident that the information you're communicating is useful and accurate.

Message...

The message is the information that you want to communicate.

Encoding...

This is the process of transferring the information you want to communicate into a form that can be sent and correctly decoded at the other end. Your success in encoding depends partly on your ability to convey information clearly and simply, but also on your ability to anticipate and eliminate sources of confusion (for example, cultural issues, mistaken assumptions, and missing information.) A key part of this is knowing your audience: Failure to understand who you are communicating with will result in delivering messages that are misunderstood.

Channel...

Messages are conveyed through channels, with verbal including face-to-face meetings, telephone and videoconferencing; and written including letters, emails, memos and reports.
Different channels have different strengths and weaknesses. For example, it's not particularly effective to give a long list of directions verbally, while you'll quickly cause problems if you criticize someone strongly by email.

Decoding...

Just as successful encoding is a skill, so is successful decoding (involving, for example, taking the time to read a message carefully, or listen actively to it.) Just as confusion can arise from errors in encoding, it can also arise from decoding errors. This is particularly the case if the decoder doesn't have enough knowledge to understand the message.

Receiver...

Your message is delivered to individual members of your audience. No doubt, you have in mind the actions or reactions you hope your message will get from this audience. Keep in mind, though, that each of these individuals enters into the communication process with ideas and feelings that will undoubtedly influence their understanding of your message, and their response. To be a successful communicator, you should consider these before delivering your message, and act appropriately.

Feedback...

Your audience will provide you with feedback, verbal and nonverbal reactions to your communicated message. Pay close attention to this feedback, as it is the only thing that allows you to be confident that your audience has understood your message. If you find that there has been a misunderstanding, at least you have the opportunity to send the message a second time.

Context...

The situation in which your message is delivered is the context. This may include the surrounding environment or broader culture (i.e. corporate culture, international cultures, etc.).

Removing Barriers at All These Stages

To deliver your messages effectively, you must commit to breaking down the barriers that exist in each of these stages of the communication process.
Let's begin with the message itself. If your message is too lengthy, disorganized, or contains errors, you can expect the message to be misunderstood and misinterpreted. Use of poor verbal and body language can also confuse the message.
Barriers in context tend to stem from senders offering too much information too fast. When in doubt here, less is oftentimes more. It is best to be mindful of the demands on other people's time, especially in today's ultra-busy society.
Once you understand this, you need to work to understand your audience's culture, making sure you can converse and deliver your message to people of different backgrounds and cultures within your own organization, in this country and even abroad.

الأحد، مايو 01، 2011

Curriculum Vitae C.V

Welcome everyone here ... This is the first message :)

Many students, third year in specific, asked me about how to write the C.V. to apply for summer trainings and internships?

First let me state that there is no right or wrong way to write your C.V. but there are some facts, DOs, and DON’Ts that don't change.

Some facts to state first:
  • C.V. will not get you an internship or training, it will just get you an interview.
  • C.V. represents you ! Take Care.
  • The difference between resume and C.V. is explained here, but forget about it, most people think they are the same .
  • C.V.s are read in 10 seconds, if the reader didn’t find what he is looking for, He won’t continue reading it.
Now to the DOs

1- Know your recipient:

Big and medium size companies like Google, IBM, Facebook , Microsoft, LinkDev, ITWorx, Yahoo! …etc have a recruiter and HR department, which means that the first person to read your C.V. is not (very) technical, and follows something like a standard procedure to scan your C.V. and filter it based on a criteria determined by the company, like GPA/grade, Number of activities, Number of coding projects with a specific programming language related to the job, and other filters.
Small companies where the number of employees ranges between 3 – 40 don’t have HR department nor recruiters, and here the person reads you C.V. is either the manager/owner of the company, or the person you are going to work with. Mostly those people are overloaded because they already have another job to do and therefore they need your C.V. to be very clear and concise.

2- Objective:

The Objective is simply, What do you want to be in five years?  without mentioning the statement, “in five years.” I don’t know why people have to write objective, but as I know, HRs love it, and technical people don’t care about it.
Objective must be attractive, and related to the job, and I prefer objectives contains fabulous words.
Seeking a challenging, great …. bla bla bla, in a great good know international corporation …bla bla bla … to increase and develop my skills in ….
Don’t: Apply for a company and write that your objective is to be the manager of that company, or your objective is to have your own company, because this means why would we accept you and at the end you open your company ?

3- Education:

All you have to write is your university, please don’t mention your school, because you don’t want a second of your ten seconds wasted in knowing your secondary school. You have to state clearly the Grade (Good, Very Good, Excellent) or GPA, and if you are ranked on your department or class please write your rank.
One of the tricks I saw and it is recommended if you have a very low grade, is to write your education after activities, technical skills and experience, because if your experience and skills are high, they won’t care about your grade.
Don’t list courses you studied, because I saw many people doing this and this is not useful at all. Sometimes you may want to list the 2~4 main courses, so that the company know what you can do and what you can't.
Also remember to explain your GPA system briefly (e.g. GPA 3.?/4.0) because there are different universities that give GPA out of 5, and even inverts the scale (0.0/4.0 is the highest GPA).

4- Experience:

Write all experiences sorted in a chronological order from newest to oldest.
  • Trainings/Internships
    • Company Name internship/training: your position, your role, what you did?, when was this (June 2010 to July 2010).
  • Competitions/Contests
    • Imagine Cup (Which competition, passed rounds, project description, and your role in the project).
    • ACM (National/World/CodeForces (Rating and handle)/TopCoder (Rating and handle)).
    • IEEE.
    • Google Code Jam (rank over Egypt, and passed rounds).
    • ThinkQuest.
    • Any other contest with achievement.
  • Projects you participated in. (Non Academic projects)
5- Activities:
  • Microsoft Student Partner
  • Google Ambassador
  • IBM student ….
  • Student Union
  • ACM Chapter
  • SCCI
  • IEEE Student Branch
  • LVAD
  • Life
  • Vision
  • STP
  • TE
  • Courses you delivered, or you were an assistant.
  • Any other activity.
You have to mention your role in each activity you participated in, and a very brief description about the activity itself. Sort them in the most important first order.

6- Technical Skills:
  • Programming Languages
  • Operating Systems
  • Databases
  • IDEs/Tools.
Don't lie, if you write that you are good at something, they may ask you in it.
Be clever, if you are applying to a specific company that is not care about one of your interest, so put it in the end of the list.

7- Languages:
  • Arabic /English/ French … and how good are you in writing, speaking & reading.
8- Others (Optional):
  • Interests.
  • Readings.
And finally Don’t forget that “References Available upon/on request”

Also, Check this here for sample curriculum vitae. 
I hope you liked the post.