How To Master a Programming Language II
So you’ve chosen a programming language that you want to learn, where do you start?
Learn the Environment
Depending on the type of language that you have chosen (interpreted vs. compiled) there may be several options available to you in choosing an editor or Integrated Development Environment (IDE).
Editors
Most programming languages can be written in your editor of choice. The preferred editor will include at a minimum syntax highlighting.
Some Text Editors Supporting Syntax Highlighting
Integrated Development Environment
If you want a full-featured editor, you may consider choosing an Integrated Development Environment (IDE). IDEs will provide an interactive debugger, advanced syntax checking, integration with software configuration management (SCM) systems, etc. Sometimes learning all the features of the IDE is just a big of a task as learning a language.
Some Integrated Development Environments
- Visual Studio (C/C++, C#, Visual Basic, Others via Install)
- Eclipse (Java, Others via plug-ins)
- Netbeans (Java, PHP, Ruby, etc.)
Resolve Dependencies
Depending on the language you are learning, there may be additional dependencies that your development environment requires. Whether you are using an IDE or text editor you need to have the language interpreter or compiler installed (or else you won’t get very far).
Also, if you are developing web applications, you will need to have a web server or web application server installed and configured.
Most IDEs will resolve these dependencies for you – however, you may also consider using a all-in-one local server environment.
Basic Programming Tasks
After your programming environment is setup correctly (you may need to make some additional tweaks along the way), work through a “Hello World!” problem in the language of your choice. Make sure you can do the following:
- Check for Errors in Syntax
- Compile via GUI and Command Line (if your language supports this)
- Run your Program
At this point you should have basic command of your environment. As you work with it and get deeper into your language, you will become more familiar with the different features and options available to you.
2How To Master a Programming Language
With the start of a new year, as a programmer have you made a resolution or goal to learn a new programming language?
For the next few days, I will be writing a series of posts titled How to Master a Programming Language, where I will be walking you through the steps that you need to take to learn the ins and outs of a programming language.
If you really want to master a new programming language, you have to do more than just read these posts — you need to take action!
Think about what you have done previously when learning a language. Is there anything you have done differently that has helped you learn a language? Please feel free to share your experiences in the comments.
Read the series of posts here:
5More Programming Books Recommended By Readers
Due the overwhelming success of one of my previous posts: 6 Books Every Programmer Should Own, I wanted to compile a list of books suggested by readers.
These books are programming-language neutral and are an effective tool to writing succinct code.
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin
This book covers the best practices, case studies and first hand experiences with creating “clean” code.
Recommended by: Squirrel Hacker, Noroctal Labs and kodeninja
Refactoring: Improving the Design of Existing Code
Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts
This book covers the best practices in modifying existing code.
Recommended by: kodeninja
How To Design Programs: An Introduction to Programming and Computing
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi
This book is geared to the beginning programmer and focuses on the design and creation of programs.
Recommended by: Dave
Structure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman, Julie Sussman
Picking up where How To Design Programs left off, this book explores ways to look at code from an object-oriented point of view.
Recommended by: Dave
If you were the original commenter, please contact me and I will provide a backlink to your website or blog.
0Get Hired By Solving Programming Puzzles
When it comes to down to it practice makes perfect. In order to become a successful programmer you need to keep your skills up-to-date and work on problems outside of those faced at work.
Luckily, there are numerous websites that provide the opportunity to practice. The following blogs comprehensively list most of the puzzle websites that are available to help you practice your skills.
- 5 Resources for Refining Your Programming Skills (via rbright.net)
- Practice Your Code-Fu: Programming Contests and Puzzles Online (via grok-code.com)
- 10 Puzzle Websites to Sharpen Your Programming Skills (via sixrevisions.com)
- 10 More Puzzle Websites to Sharpen Your Programming Skills (via coderholic.com)
There is one other website that is absent from the lists above that provides programming puzzles.

ITA Software is a company based out of Cambridge, MA that specializes in the development of airline and travel software. They use programming puzzles to attract and recruit new employees.
They won’t grade your solution if aren’t considering working for them, but that doesn’t mean that you can’t at least try implementing a solution. The puzzles are designed for those looking for a challenge.
If you are ready for the challenge, ITA has two sets of puzzles:
If you have attempted these problems or have been hired as a result of completing one of the problems, please share your experiences.
25 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.
- How to Stay Productive During the Winter Holidays
- How To Be Productive without Becoming a Productivity Freak
- 27 Great Tips to Keep Your Life Organized
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.
0What Programmers Can Learn From Salespeople

Screenshot courtesy of: The Secret of Monkey Islandâ„¢
What comes to mind when you hear the terms: ‘Salesman’, ‘Salesperson’ or ‘Sales’ ?
- High-Pressure
- Negotiation
- Cold-calling
- Telemarketing
- Spam
If these are the type of words that come to mind, you have probably been dealing with some bad salespeople.
What is Sales?
I do not work nor have I ever worked in sales, but I have taken sales classes offered by my employer.
If there was one thing I learned about sales, it’s that the sales process is more about having a conversation than it is about buying or selling something.
How does this relate to programming?
Before you see how to this relates to programming, you must be able to think like someone who is motivated more by helping people rather than by money.
The Financial Planner
The scenario to understanding genuine salespeople is to look at a financial planners. If you are unaware of what financial planners do – they advise individuals in making major financial decisions such as retirement, taxes, investing, etc.
When you visit a financial planner, you could tell him or her that you want to retire by age 50 and you want to invest $100 per month. Without any further discussion, a financial planner could come up with a solution for your retirement, but is it going to be the best solution?
The Programmer
Any good programmer can take requirements and a design and develop a solution that meets the needs that are laid out. But is this what the end-user really wanted?
What if you actually sat down with the end-user and had a conversation with him or her rather than rely on some specs that a business analyst obtained?
You might be thinking to yourself, isn’t that the job of the business analyst? In an ideal world it would be, but like the Game of Telephone (or Chinese Whispers) something is going to get lost in translation going from end-user -> Business Analyst -> Programmer.
If you have the opportunity to have a conversation with the end-user, take it. Establish a relationship, listen to them to find out what they really need, negotiate possible solutions and close by building them a solution.
Listen Carefully
The most important part about sales and also with programming is: listening.
Don’t be the used-car salesperson who wants to sell the heap of junk on the lot, without understanding the true needs of the customer.
0Fat or Thin? The Future of Web Clients
No, I’m not talking about the millions of people who use the web, but rather they way that we access web content.
Thin
What do I mean by thin? I mean accessing and interacting with web information by the means of a single application: the web browser.
If you haven’t seen Google’s ChromeOS yet, it is the epitome of a thin client. It is like a stripped down Linux distribution with nothing more than a web browser.
When web 2.0 first introduced itself, we saw web sites that behaved like desktop applications. Technologies like AJAX and Flash combined with broadband internet changed the way we interacted with the web – the web browser was the primary application for accessing web content.
Web applications still had a few major flaws: the capabilities of the browser to adhere to web standards (HTML & CSS).
Who had an iPhone the first year they came out? If you did, you might remember that if you wanted to access sites like Facebook or MySpace (who uses MySpace anymore?), or if you wanted to play any games, you needed to do so with Safari.
That first year, the iPhone also teased us with some built-in applications like YouTube and Google Maps.
Web applications have been successful due to the convergence of web standards: XHTML and CSS, but are still dependent on the speed of the network and the capabilities of the browser.
Thick
Today, how often do you use the web browser on your iPhone?
There are over 100,000 custom iPhone applications that provide different ways to access web content. As a result, web clients are getting fatter and fatter.
Why apps?
Accessing web content via apps is a more pleasant user experience because we are relying more on the capabilities of the device operating system vs. the capabilities of the web browser.
How many of you access your e-mail through a mail application or read blogs with an RSS reader, or use Twitter through a desktop client?
Internet-enabled applications are not unique to mobile devices nor are they anything new.
Your web browsers isn’t as thin as it used to be
All of the primary browsers today support the use of extensions or toolbar add-ons to enhance your browsing experience. As a result, our web browsers are also getting fatter.
The Future
Our mobile devices are now loaded with applications for accessing web content: FAT, at the same time netbooks are becoming increasingly popular: THIN.
So where are we headed?
I believe that the application-based client will be the future of the web because it allows for the best user experience. The traditional web browser won’t go away, but will continue to supplement the application.
Because of the difficultly involved in maintaining software updates and new features – the success of web-enabled application will depend on the update delivery model. Applications will thrive if using push-notification models for updating like Apple’s App Store and Firefox’s Add-On manager.
What do you think? Will Google’s ChromeOS eventually have it’s own app store like the Android Market? Or will all future browsers adhere to the same web standards offering the same browsing experience?
0Do 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





