Personal

The Secret to Being a Successful Programmer

The Secret to Being a Successful Programmer

You are reading this because you want to discover the secret to being a successful programmer. If the secret is all you care about, go ahead and scroll down to the bottom of the page because that is where you will find it.

If you are still reading this, I will explain to you why there is a secret to being a successful programmer.

Being Good Isn’t Good Enough

When you learn any type of skill, such as a new programming language or even a physical sport – professionals or experts will often say to you, “If you want to get better, you have to practice, practice, practice.”

I believe this statement true in the sense that if you practice you will become a better programmer or athlete, but you will not necessarily become successful.

What is Success?

Everybody has their own definition of what success is – what does success mean to you?

  • Success is accomplishing goals?
  • Success is making a lot of money?
  • Success is making the world a better place?

I don’t believe that Success is one thing, but rather a combination of all the above.

So how do you get there? How does one become successful?

If you look back at my example of learning a new skill. Which of the definitions of success will directly result by becoming an expert?

Unless your goal was to learn a new skill (or master a skill), you will have only become successful in accomplishing goals. Just because you are good at something doesn’t mean that you will make a lot of money or put you in a position to change the world.

So what’s missing?

The Secret

The secret to being a successful programmer (or anything else) is: creativity and original thinking.

A successful programmer is one who is knowledgable (knows language, concepts, architecture, etc.), but can also use this knowledge to create or conceptualize.

Success as making money

If you believe that success is making a lot of money, you need to look at the concept of doing business. In business you can compete on two different levels: price and value.

Price

You can make a decent salary if you are a good programmer (defined as having a detailed understanding of programming languages and concepts) – but what is going to make you stand-out against the next programmer?

If you were interviewing for a job and all the candidates had the same knowledge, same background, and same skills – the person who would be hired would be the one asking for the least amount of money.

The scenario above is probably unrealistic for established programmers (but probably more true for recent college graduates). Despite what you may think, you may already have a creative/original side.

Value

Value is not a comparison of price vs. features – but rather what makes you unique against alternatives. The perfect example of this is to look at the Apple iPhone.

Today you could make the argument that the Droid has more features than the iPhone. Does that mean that the Droid has more value because it cost less?

So how can Apple charge more for something that is equal (or fewer) in features?

This is where creativity and originality come into play.

When the iPhone came out it was one of the most original smart phones around. To this day, every smart phone manufacturer has been trying to “copy” everything about it: touch screen, App Store, Games etc.

The original creativity continues to live on in the product – and allows the iPhone to maintain its demand.

The same can be said about why Google tends to hire PhDs – through their dissertations they have proven their ability to think originally and offer a creative solution.

Next Steps

If you are already an expert programmer, you are already half way there. Creativity and original thinking can be learned, it just might not seem like that because they are “right-brained” skills, compared to the “left-brained” skills of programming.

To start thinking about success:

  1. Define success as it applies to you.
  2. Think about where you want to be.
  3. Start thinking (creatively) about how you can use your skills to achieve your success.

I would love to hear about your projects that you are working on to become successful. Please share in the comments.

3
5 Common-Sense Ways to Remain Productive

5 Common-Sense Ways to Remain Productive

After reading several books (6 Books Every Programmer Should Own) for programmers on increasing productivity, you start to realize that a lot of it is common sense.

You even to notice a common theme amongst blogs about productivity.

Whether you are a programmer or not, here are 5 common-sense ways to remain productive:

1. Ignore Distractions

Whatever is keeping you from doing your work: e-mail, instant message, phone calls, loud co-workers, etc.

Find a way to stop these things from disturbing you:

  • close e-mail and instant message applications
  • put your phone on Do Not Disturb (DND)
  • wear headphones (you don’t need to listen to music)
  • move to another location to work

2. Organize

Look around at your desk. Are there papers thrown everywhere, food, or other junk laying around?

How about your desktop on your computer? Do you have 100 icons that you don’t know what half of them do?

Keeping items in a easy to reach location makes sense if you use them frequently, but having too many items defeats the purpose.

Start organizing both our physical paper and computer files in a logical location. Only keep those that you use very frequently out in the open.

3. Record Your Thoughts

Have you ever had a great idea or thought come to mind, but you didn’t have anywhere to record it?

With the technology that is available today, you should have no excuse. Most cell phones will have some of voice memo application that you can use. If not, you can purchase an inexpensive audio recorder (similar to Norm MacDonald “Note to Self”).

If you are old school, you can even carry with you a small notebook and a pen or pencil.

Have you found yourself in a meeting where you scribbled a bunch of information on a whiteboard?

I would still recommend recopying your notes to paper or computer, but before you erase the board make sure you take a picture with a digital camera or your camera phone – you never know when you might need to refer to it.

4. Whiteboard Long-Term Goals

It’s easy to feel overwhelmed when you think of things that you need to do over the long-term (over 1 week deadline).

Don’t stress yourself our by constantly saying to yourself “I’ve got a ton of things to do.” Get a whiteboard at work and/or home and start to write down your long-term goals. Things always seem much more manageable once you write them down.

You can even use different color markers to indicate priority (e.g. Red-High, Green-Low).

5. Daily Task List

Similar to having whiteboard for long-term goals, start writing down your short-term goals (less than 1 week deadline) on a piece of paper or post-it note – keep it next to you.

Over the week as you accomplish tasks, cross them out!

The sense of accomplishment that you feel by completing goals will motivate you complete the others.

None of these items are products of intense scientific research or even that expensive to implement – just common sense.

0
Do Something Else Besides Programming!

Do Something Else Besides Programming!

There occasionally comes a time when you can’t sit in front of the computer any more and need to focus your energy on something else.

When you are stuck trying to debug some logic – the cure to working through your problems is to do something unrelated to programming.

Sports

I like to play a round of golf every now and then, even though I am not particularly good at it. Participating in sports not only takes my mind off programming, but forces me not to think about anything at all.

When playing golf, I tend to do a lot better when I am not focusing on hitting the ball or worrying about players behind me. By not thinking, I am ignoring self-doubt and what-ifs (what if I hit the ball too hard or what if I miss the ball entirely).

Sports can be relaxing if they played non-competitively.

Clubs & Organizations

I’ve written previously about being a member of Toastmasters. By belonging to an organization that promotes professional growth, you can work on skills to make you a more confident person and encourage you to become a leader.

The organization that you choose to belong to can really be anything: martial arts, a social club, etc. Just make sure it is something that piques your interest and makes you want to participate.

Relax

Sometimes doing nothing is the best way to take your mind off things. What’s doing nothing? Anything that doesn’t require you to think critically.

The purpose of doing nothing is to get lost in a book (fiction preferably) or watching a movie or TV show.

I like to look at movies and books as a way to take a break from my life and immerse myself in someone else’s story.

Break Out of the Bubble

Most professional programmers will program for fun in their free time. While I support this behavior 100%, I believe that programmers need to sometimes break out of the programming bubble and focus their attention on something unrelated.

Besides programming what do you do?

1
Top 5 Things that are Important to Me as a Programmer

Top 5 Things that are Important to Me as a Programmer

No matter what your field of work, we all have areas where we want to succeed.

I’ve tried to identify the top 5 things that are important to me in life. These are areas of my life where I want to be successful.

5. Professional Development (Non-Technical)

As a programmer, not everything is technical all the time. We will have to give presentations, have meetings or communicate with end-users. For these reasons, I try to focus attention on improving my soft skills as well.

Toastmasters

To improve my speaking and leadership skills, I’ve joined a local Toastmasters group. Toastmasters has helped me immensely by offering opportunities to speak, lead meetings and network – skills which are rarely taught in academia or in the workplace. See Enhance Your Skills By Belonging to Professional Organizations for more information about what takes place during a Toastmasters meeting.

Reading books

Reading technical books all the time gets boring. I will try to mix in a non-technical book into my reading schedule every so often such as biographical or interview books to understand about how other people think and do things (e.g. The Presentation Secrets of Steve Jobs: How to Be Insanely Great in Front of Any Audience) or fiction (e.g. The Lost Symbol).

4. Professional Development (Technical)

Since technology changes so frequently, I placed my technical development on a higher level than social skills. Most of you reading this blog might categorize this similarly.

New Languages and Technology

Keeping up with the latest and greatest technologies can be a difficult task for most programmers. Not only does it take time to learn a particular technology, but you really don’t start to appreciate its usefulness until you start using it in a project.

My primary resource for acquiring knowledge on technology is my subscription to the Association for Computing Machinery (ACM). One of the many subscription benefits is being able to access Safari Books and Books 24×7 – this allows me to read and reference over 1,000 books online.

Sharing of Knowledge

I believe that the sharing of knowledge is just as important as the acquisition of knowledge. This blog’s purpose is just that – to share my insight and know-how with you. If you don’t have a blog or the time to keep up with one, there are plenty of websites that you can visit where you can answer questions asked by your peers or read about the latest advancements in technology see 17 Websites for Sharing Programming Knowledge.

3. Health

One of the topics that seems to never go away and revived each year with New Year’s resolutions is health. I know many people take their health for granted (I’m guilty of it too). One of the first and easier steps that you can take to living a healthier lifestyle is to become aware of what you eat and review your exercise habits.

Exercise

I typically don’t like to exercise, especially when I don’t see instant results. However, when I do, I usually feel less tired and more motivated to do other things. Many people will make excuses saying that “I don’t have the time”. You need to make it a habit – make it a part of your daily routine, just like showering and brushing your teeth.

Eat Healthy

When people think of eating healthy, they probably think of eating salads and vegetables all the time – this is not the case.

“The virtue of justice consists in moderation, as regulated by wisdom.” – Aristotle

Just like this quote by Aristotle, you can eat healthier without giving up the foods that you love – just have them in moderation. I’m not an expert on nutrition, but I always make sure to eat breakfast, lunch and dinner. By becoming aware of how many calories that you consume daily, you can start to make your own choices about what you should and shouldn’t eat.

2. Career

Work is important, after-all if you don’t count time spent sleeping, you probably spend more time at work than at home. We were all hired for what we are able to contribute to the company, but what can your company contribute to you?

Staying Challenged

Is your assigned work keeping you challenged? This has been a red-flag for me in the past when I considered finding a new job. If your day-to-day tasks aren’t challenging, is there something else you can do in your spare time to keep you challenged? Try ask your manager if there is a project that you can work on that uses a different technology or if you can work to improve any existing processes.

Training

I would recommend taking advantage of any type of training (both internal and external) that your employer offers. Most employers will continue you pay you your hourly wage while you are attending training, as long it benefits the company. If you want to advance your career with an advanced degree, look into a tuition reimbursement program if your employer offers it.

1. Family and Friends

I’ve saved the best for #1. Whether you are single, married, have children, etc. we all need someone in our lives that reminds us that there are other things that important in life.

Support

Who do you rely on when you have personal problems? Similarly to what I was mentioning earlier about sharing technical knowledge, the same is true for personal knowledge – try help out emotionally if your friends and family need advice or someone to talk to.

In the future, hopefully your friends and family would return the favor to you, if you needed their assistance.

Appreciate Your Time

There is a time to be serious and a time for just letting go and having fun. Have fun spending time with your family, since it is one of those things that can be hard to come by. Everything else I’ve mentioned: professional development, health, and career are controlled entirely by you and your goals.

I would like to hear about your top 5 important things in your life. Please share in the comments below.

3
How to Find Time for Learning

How to Find Time for Learning

One of the biggest challenges when trying to learn something new is finding the time to do it.

We all have obligations (work, school, family, sleep, etc.) that require our attention and finding free time in amongst all of these can sometimes be difficult.

Scheduling Out Your Day

Here’s an activity for you to perform to figure out how much free time you have available.

Note: Everyone’s schedule will differ on different days, but start by looking at the the 24 hours that you have available in a typical day.

A typical workday

Work: 8 hours
Sleep: 8 hours
Quality Time: x hours
Free Time: 8 – x hours
Total: 24 hours

Required Time: Work and Sleep

First, subtract 16 hours, this includes 8 hours for work (assuming you work a typical 8 hour day) and 8 hours for sleep – you will be left with 8 hours.

I would recommend against taking time away from work and sleep. You might be able to get away with modifying your sleep schedule occasionally, but try not to make a habit out of it. Also, if your employer allows you to take 30 minutes during working hours to explore something new, then adjust the hour allocation for work.

Quality Time

The remaining hours will vary depending on your lifestyle, but are what I call Quality Time – time that you cannot be substituted for other voluntary activities. Subtract time you spend getting ready for work, eating (breakfast, lunch and dinner), commuting, spending time with family (or significant other) and any other activities in which you participate in a typical workday.

Free Time

Your Free Time should be things that if they are not done, the consequences are minimal. This might be things such as time spent watching TV, exercising, browsing the internet, reading, etc. This is the time that you can allocate for learning something new.

Determine What’s Important

If you completed the exercise and found that you don’t have any free time, what do you do? Determine what’s important to you or prioritize. Is watching your favorite TV show more important to you than spending time learning something new?

Create Time

Of course you can’t create time in the literal sense, but you can adjust your habits so it appears that you have more free time. If you must do everything on your list, try modifying the time spent on each activity – instead of exercising for 1 hour, exercise for 30 minutes. Here are a couple things that you can do to change your TV habits.

1. Stop Watching Commercials

If you have a Tivo or DVR, record all of your favorite shows and watch them when you have time. By skipping commercials, you can save over 15 minutes of commercials are shown on TV every hour. Or you can watch shows on your computer via Hulu.

2. Browse Internet/Email During Commercials

If you don’t have a DVR and like to watch shows at their scheduled time, productively use the time during commercials to do other things such as respond to email or browse the internet.

The free time that you have will fluctuate throughout your life, but it’s important that you always try to allocate some time to your continued learning.

1
How to Read a Book Using SQ3R

How to Read a Book Using SQ3R

Before I entered college over 10 years ago, I participated in a 1-day seminar for incoming freshmen called Strategies for Success. The purpose of the seminar was to introduce you to study habits and prepare you for the college workload. What reminded me recently of this seminar was a book that I started reading: ‘Secrets of the Rockstar Programmers’. The book is a collection of interviews with top programmers. In the first chapter I came across a term that looked vaguely familiar: SQ3R. When I got to thinking about it, I recalled that it was during the Strategies for Success workshop that I originally heard about this.

What is SQ3R ?

SQ3R is an reading strategy, abbreviated: Survey, Question, Read, Recite, Review. This technique is meant to be applied to a chapter in a book. Some textbooks have indirectly adopted this strategy by including a chapter outline, a pre-test, chapter summary and a post-test.

If you were to apply SQ3R to a book on the Python programming language, this is how it could be done:

Survey

During this step you want to skim through the chapter and read any headings, diagrams, charts, pictures, etc. You do not want to read too much in depth but rather get a overview of what to expect in the chapter.

Some items that I might pull out of the book are:

  • Functions
  • Objects
  • Indenting
  • Lists, Tuples, Dictionaries
  • Exceptions

If you don’t understand something upon the first glance, start to formulate some questions.

Question

From the items that you just skimmed were there any items that made you curious or unsure? This is where you want to start formulating some questions. Write down several questions that you want to understand about content you just skimmed. Some questions you might ask are:

  • How is indenting my code important in Python?
  • What data types are objects?
  • What is a tuple?

You may also have a question that is not relevant to the chapter you skimmed such as:

  • Why is Python preferred over scripting languages such as Perl?

Though it may not be answered in the chapter, it may be covered in later chapters.

Read

Now you are ready to start reading the chapter. While you are reading start looking for answers to the questions that you posed previously, but try not to ignore the other information.

If the book you are reading contains code, try to walk through the code on paper without typing it into a computer.

Recite

After you have read the chapter, try to summarize by writing down the main points of what you read.

  • How is indenting my code important in Python? Indenting is required in Python and results in standardized formatting.
  • What data types are objects? All data types are objects.
  • What is a tuple? A tuple is an immutable list.

Write down the answers to your questions and then write down any other additional information.

  • What does immutable mean?

In this step you should explore the code samples introduced in the chapter. Type and run the sample code to see if the actual output is the same as the expected output when you previously read through the code.

Review

At this point you should be able to comprehend all the main points in the chapter from memory, if not, write down more questions and repeat the read, recite, review steps until it becomes clear.

By completing all the steps of SQ3R you should have a mastery of the chapter content. I find that this strategy tends to work better with technical books or textbooks than with novels.

How does this reading strategy compare to how you typically read a chapter of a technical book?

0
How to Distinguish Between Being Bored and Unmotivated

How to Distinguish Between Being Bored and Unmotivated

We all get bored. In fact, just before I started writing this post I was pondering whether I should just browse the internet aimlessly or actually do something productive.

Although the differences between being bored and being unmotivated are subtle, the underlying cause may be significantly different.

What is being bored?

  • Lacking something to do.
  • Repeatedly doing something that it becomes unchallenging.

What is being unmotivated?

  • Are you tired or exhausted from lack of sleep?
  • Is there some other event going on in your life that distracts our focus?
  • Do we have a lack of interest in something?

If you are finding yourself unmotivated, you need to look at what is going on in your life that could be causing you to feel this way.

  • If you are physically tired or exhausted – Get some sleep! If you are running on limited sleep you may experience some delusional highs, but eventually you will crash. If you get plenty of sleep you might want to look at your diet. Some foods will give you a temporary pick-me-up, only to cause you to have no energy shortly after (Redbull).
  • If you are having issues in your personal life, you will need resolve as soon as you can or else your focus will continue to be clouded. Most of us will have small issues that will always be on our minds (like a list of things that you need to do), but if you have issues that effect all aspects of your life you may want to seek professional help.
  • Not everything that you do will interest you (this includes work, school and personal life). If you can direct your focus on something that motivates you. This won’t be possible in all scenarios such as if you need to do something work-related and you have a deadline. By focusing you attention on something more motivating it might put you a different state of mind so that when you need to complete uninteresting task, you will be able to overcome a mundane task.

Feeling unmotivated may not be something you can fix immediately, like leaving work in the middle of the day to take a nap, but you can gradually make adjustments to keep you motivated.

Boredom is an opportunity

Under ideal circumstances, we should never feel bored. There are literally dozens of remedies to combat boredom, but here are a few that you can try the next time that you feel bored :

1. Go somewhere, anywhere.

Don’t allow yourself to be trapped in the house. Don’t get stuck sitting on the couch, watching TV, feeling like there is nothing on. There are plenty of places that you can go to break from your boredom: bookstore, mall, the park, the beach, etc. Get some fresh air and wake up your mind.

2. Learn something new.

If you are like me, you have a list of things that you want to accomplish (particularly if you are a geek – you might want to learn a new technology). This is the time to do it. It’s useful if you go somewhere else then where you are feeling bored. If you are currently using the computer, you might want to take a laptop and go somewhere else.

3. Break Out of Routine.

If your work is becoming repetitive and uninteresting try approaching it differently. You may be able to do this by accomplishing tasks in a different order (or time of day). I know in the development world, trying to devise ways to automate your routine is a good way to eliminate boredom and allow you to have more time to focus on things that interest you.

How have you overcome boredom?

1