Facing the Blank Page

Most writers face writer’s block at some point. You have a blank page that’s waiting for you to fill it and you have a vague notion of what you want to say, but the text simply doesn’t come out right. So, you write, and write some more, and write still more, and hours later you still have a blank page. Yes, you’ve written many words during that time—all of them good words—just not the right words.

Every piece of writing I do starts with an outline. Even my articles start with an outline. Creating outlines help you focus your thoughts. More importantly, they help you to see how your thoughts will flow from one idea to the next. Sometimes, if you’re honest with yourself, you’ll discover that you really don’t have anything more than a vague idea that will never become an article, white paper, book, or some other piece of writing. Of course, that’s really the reason for this exercise—to see if you have enough information to even begin writing. If you don’t have enough information, then you need to research your topic more. Research can take all sorts of forms that include everyone from reading other texts on the topic, to doing interviews, to playing. That’s right, even playing is an essential part of the writer’s toolbox, but this is a kind of practical play that has specific goals.

Once you do have an outline and you’re certain that the outline will work, you need to mark it up. My outlines often contain links to resources that I want to emphasize while I write (or at least use as sources of inspiration). A lot of writers take this approach because again, it helps focus your thoughts. However, an outline should also contain other kinds of information. For example, if a particular section is supposed to elicit a particular emotion, then make sure you document it. You should also include information from your proposal (book goals) and your reader profile (who will read a particular section) in the outline. Your marked up outline will help you understand just what it is that you really want to write. In reading your outline, you can start to see holes in the coverage, logic errors, and ideas that simply don’t fit.

Moving your outline entries to the blank page will help you start the writing process. Convert the entries to headings and subheadings. Ensure that the presentation of the headings and subheadings is consistent with the piece as a whole. Unfortunately, you can still end up with writer’s block. Yes, now you have some good words on the page, but no real content. An outline is simply a synopsis of your ideas in a formalized presentation after all.

Write the introduction and the summary to the piece next. The introduction is an advertisement designed to entice the reader into moving forward. However, it also acts as a starting point. The summary doesn’t just summarize the material in the piece—it provides the reader with direction on what to do next. People should view a good summary as a call to action. By creating the introduction and the summary, you create the starting and ending points for your piece—the content starts to become a matter of drawing a line between the two from a writing perspective.

At this point, you have enough material that you could possibly ask for help. Try reading your piece to someone else. Reading material aloud uses a different part of the brain than reading the same material silently. Discussing the material with someone else places a different emphasis on the material. The other party can sometimes provide good suggestions. You may not use the suggestions directly, but listening carefully can often present you with creative ideas that you wouldn’t have considered otherwise.

It’s important not to overwork the piece. Sometimes you need to do something else for a while. Yes, you always want to spend time in research and thinking your piece through, some writing is often done in the subconscious. Fill your head up with as many creative ideas, fascinating thoughts, and facts that you can, and then do something that actually will take your conscious mind off the topic. You might watch a television show or movie, go for a while. have coffee with a friend, take a nap, or do any of a number of other things. The important thing is to forget about the book for a while. Often, you’ll find that the now semi-blank page doesn’t present a problem when you return. Let me hear about your ideas for dealing with the blank page at John@JohnMuellerBooks.com.

 

Selecting a Computer Book

Readers contact me on a regular basis about selecting a computer book. I often think they want a precise recommendation from me (and some do ask me to provide a specific recommendation). However, I can’t choose a book for you or any other reader for a number of reasons. Most important of all, I don’t know how you learn. There are other issues too. For example, I can’t always guess from the e-mail precisely how you intend to use the book or what sort of information you need from it. In short, my best guess probably won’t be good enough.

Originally, I tried to handle the situation by providing a blog post entitled, “Techniques for Choosing a Technical Book.” The blog post worked well for a while, but it still doesn’t really answer reader needs. For example, readers would often act oddly if I didn’t recommend one of my own books, even though I knew from the reader query that my book would only solve part of their need and there was a better option out there. (Part of creating a book proposal is to look at the competition in depth and determine how your book will fill a niche that the competition doesn’t. I try to be honest with readers in this regard so that when they do buy a book, they’re happy with the purchase.) With this in mind, I wrote a series of three articles that examines the whole question of selecting a computer book in significantly more detail:

The goal of these three articles is to provide you with the best possible information about selecting and using a computer book. The thing I’ve noticed most often when I receive complaint e-mails is that even when a reader does select a truly usable computer book, sometimes they don’t get the most out of it. A purchase is only as good as the value you receive from it. These articles are designed to increase your satisfaction by helping you use the books more effectively.

Choosing and then using a computer book effectively will help you gain new marketable skills and insights into the computer industry. Overall, it’s my goal to help you earn more money or live a better life when I write a computer book. In other words, my goal is to help you gain something of value—something that you can later say improved your life in some way. Of course, I’m always refining my skills and choosing new techniques based on reader needs at any given time. That’s why I always want to hear from you at John@JohnMuellerBooks.com.

 

Review of Mastering VBA

A lot of people have asked about the next book to read after reading VBA for Dummies. Yes, the current 5th edition of VBA for Dummies still works fine as a starting point, even with issues such as dealing with the Ribbon to consider. In fact, you can find some great updates to VBA for Dummies on my blog. However, the fact of the matter is that readers have been asking for more, which is where Mastering VBA by Richard Mansfield comes into play. This is the next book you should get if you want to move on from what VBA for Dummies shows you to writing applications with greater functionality. For example, a lot of you have requested more information about creating forms and Chapters 13 through 15 will help you in this regard. Richard has done an outstanding job of moving you to the next step of creating the complex forms required for robust applications.

Another common request that Mastering VBA addresses is the need for security. While VBA for Dummies helps you understand the need for basic security, Mastering VBA takes the process several steps further and could help prevent breaches given the modern computing environment (one that didn’t exist when I wrote VBA for Dummies). Chapter 18 begins the process by emphasizing the need to build well-behaved code. After all, if your code doesn’t behave, there isn’t any set of security measures that will protect it from harm. Chapter 19 goes on to help you understand the essentials of good security, especially with all the modern threats that cause problems for developers today.

At 924 pages (versus 412 for VBA for Dummies), Richard is also able cover some topics in detail that would have been nice to have in my own book. Readers have complained about having to go online to view object model details for the various Office applications in my book. Mastering VBA provides coverage of the object model as part of the book so you can work through it without having to go anywhere else. It’s a convenience issue—readers really shouldn’t have to look for essentials like the object model online, but every author has to face space limitations when putting a book together. The object model material is spread out across the book, but there really isn’t any way to organize it so that it all appears together. This is one time when you’ll need to actually use the table of contents and index to find the material you need.

As with all the books in the Mastering series, this one has questions at the end of each chapter. These questions are designed to help you master the skills learned in the chapter. You find the answers for each of the questions in the back of the book. This makes Mastering VBA an excellent option for the classroom. More importantly, it gives you another way to learn the material in the book. The longer I write books, the more I come to realize that one or two methods of learning simply won’t do the job. This book usually provides three or four ways to learn each task, which means that you have a higher probability of actually mastering the material (as defined by the title).

For all of you who have been asking for the next book after VBA for Dummies, Mastering VBA is the one that gets my recommendation. Until I actually have time to write a book that specifically addresses the concerns in the reader e-mails I’ve received, this book is your best option. No, it doesn’t address every e-mail request that I’ve received, especially with regard to form creation, but it does answer a considerable number of them. Of course, I’ll look forward to your continued interest in my book and I hope you keep those e-mails coming my way!

 

Review of C# 5.0 Programmer’s Reference

A number of readers have asked me about the next book to get after reading one of my C# books, such as Start Here! Learn Microsoft Visual C# 2010 or C# Design and Development. Of course, it’s hard to recommend a next book unless you know where the reader is headed. After all, many of my books offer a starting point or deal with a specific area of interest. Based on the feedback I’ve received, in most cases, what the reader really wants is a compendium such as C# 5.0 Programmer’s Reference by Rod Stephens. This 918 page book is truly huge and contains a great deal of information within the pages between the covers.

The beginning of the book offers a different (and updated) perspective of what my books offer. It’s a starting point for your adventure in programming. Rod and I have complimentary writing styles, so if you didn’t quite pick up a concept in my book, Rod’s explanation will almost certainly make the difference for you. Most importantly, Rod’s book offers that latest updates for C# developers that my books can’t offer because they’ve been out for a while.

By the time you get to Part IV of the book, you’re moving away from the material that I offer into some more advanced programming topics. For example, I don’t really talk much about printing in my books. All of these topics are treated in greater depth than the material in my books—generally because I’m covering the topic at a level and in a manner that the less experienced developer will understand. So it’s essential not to skip these topics even if you’ve read about them before.

Part V is where this book really excels. I was especially taken with the chapter on parallel programming. Just about every machine on the planet provides multiple processors today, yet applications don’t use them nearly as often as they should, which results in wasted processing cycles and poor performance. Rod also provides an outstanding discussion of cryptography. If you’ve read the trade press recently, you know that securing data is becoming harder and harder, yet more important all the time.

Every chapter ends with a set of exercises. This makes the book invaluable in the classroom. An instructor can assign the book a bit at a time and have exercises ready to check the student’s comprehension of the material. Appendix A contains the answers for the exercises, so the answers are easy to check. It could be possible to create a student version of the book that lacks Appendix A so the instructor can check the student’s answers without worry about peeking.

What makes this book a compendium, a reference book, is the appendices in the back of the book. There is an appendix for nearly everything you can imagine. Do you need a quick refresher on data types? Well, you can find it in Appendix B. Appendix J will give you the quick scoop about Language INtegrated Query (LINQ). Look in Appendix T when you need to know more about regular expressions. The point is that the appendices make it easy to perform quick lookups when you’re in a hurry.

The bottom line is that if you need a book that will do more than just sit on your shelf, this is the one to get. You could easily use this book to get a great refresher on C# usage, an update on the new features provided by C# 5.0, a great classroom experience, and that reference book that you need later when you need to rediscover something under pressure.

 

Python Community Support

There are many issues to consider when choosing a programming language. Python is no exception. Just because I feel it’s the right tool to meet some of my needs doesn’t mean it will work well for you. That’s why the Understanding Why Python is So Cool section of Chapter 1 in Beginning Programming with Python For Dummies is so important. This section tells you why I see Python as an important programming language and why you might want to use it too. I break the problem into three parts: what Python can do for your application needs, how Python can benefit you personally, and which organizations are using Python for specific tasks. (Another blog post, Python as a Learning Tool, augments the Chapter 1 information.) Between the three sections, you can make an intelligent decision as to whether Python will actually serve your particular needs. I really don’t want you to take my word for it—I would rather know that you selected Python based on your own research.

No matter how interesting a language is, no matter how many features it provides, and no matter how much you personally like it—you can’t typically support a language that lacks broad community support. If no one else is using the language and contributing to it in some major way, the language will eventually die. Fortunately, Python doesn’t have this problem. Chapter 20 of my book discusses ten essential libraries for Python, none of which come with the language when you download it. In fact, the introduction to this chapter lists a number of places where you can find even more libraries to use.

The thing is that Python keeps attracting ever more attention. A recent InfoWorld article, “Hidden gems: 10 Python tools too good to overlook“, provides you with access to still more libraries. The point about libraries is that they represent an essential form of community support. As people use a language, they start to build places where others can discuss it with them. However, that’s only one form of community support. Libraries represent a significant increase in support because creating, debugging, and supporting a library requires time and effort that most developers don’t have in abundance. Someone really has to believe in a language to provide this sort of language support.

The fact is that Python is poised to become the next “must learn” language. It has great community support, provides a broad range of functionality through libraries, and is fully supported by the academic community. Even though other languages have had these advantages and eventually failed, the chances are far less likely that Python will experience problems. In fact, many rankings sites show Python as being the 4th to 8th most popular language out there right now.

Community support is an essential determinant of programming language popularity. How do you rank Python in your toolbox and why? Let me know at John@JohnMuellerBooks.com. Tell me about your favorite Python library and how you use it as well. I’m interested in discovering just what makes some languages so incredibly popular (Python being one of the most popular).

 

Python as a Learning Tool

Python is a great tool for learning how to code because it provides a robust programming environment that lends itself to accomplishing a lot of work using little code. However, Python does all this without using an obscure programming environment with arcane rule—it really is a straightforward programming tool. In addition, the use of an interpreter means that those who are new to coding can experiment and learn coding in an environment that provides immediate feedback. That’s the reason I’m so excited to have just completed the writing of Beginning Programming with Python For Dummies. I’ve been able to provide you with an amazing assortment of programming techniques in an easy to use format. You can read about the contents in my Beta Readers Needed for Beginning Programming with Python For Dummies post.

It appears that the universities in America agree that Python is the best language for learning purposes. A recent InfoWorld article entitled, “Python bumps off Java as top learning language” tells precisely why this language has become so popular. According to the article, eight of the top ten computer science departments now use Python as their training language of choice (along with a host of colleges and other schools). The fact is that everyone is beginning to realize that Python is the best language to learn coding techniques.

Of course, just learning how to code really isn’t enough. You really need to learn a language that will provide you with an income later. That’s where you might think Python falls down on the job and you’d be wrong. Python is used by a number of large organizations as their language of choice. In fact, Chapter 18 of my book tells you precisely where you can get an interesting job just by knowing Python. You should also check out Python Success Stories to see an amazing assortment of projects from large companies that rely on Python because of the special features it provides.

Is Python the right language for every need? No, it isn’t and my book also provides you with that sort of information. A lot of people get so excited about something new that they fail to look for the potential potholes. I’ve always felt that it’s my responsibility as an author to present both sides of a story and that’s just what I do in my book. You discover the pros and the cons of working with Python. You’ll find out that Python does have a distinct place in your programmer toolkit.

If I’ve gotten you just as excited about Python as I am, please be sure to contact me about my upcoming book at John@JohnMuellerBooks.com. I’ll be more than happy to answer any questions about my upcoming book and how it can help you learn this exciting language quickly.

 

Review of Essential Algorithms

Working in computer science means knowing how to work with computer languages, but it also means knowing how to use math to obtain the results you want. Some math is relatively straightforward, but some becomes so complicated that you really do need some type of process or procedure for working with it. Essential Algorithms by Rod Stephens, “defines steps for performing a task in a certain way.” The first chapter begins by defining what an algorithm is and moves on from there to show you how they can help improve your ability to write complex applications.

The examples are written in a pseudocode that the author explains in Chapter 1. In fact, the explanation is accompanied by some examples of how to turn the pseudocode into an actual programming language. I’m almost positive some readers will take exception to the use of pseudocode because it doesn’t relate the example in their specific programming language, which would make implementation of the code as easy as possible for the reader. In this case, the use of pseudocode is impossible to avoid because the book would be far less useful without it.

This text could easily be used in a college. Each chapter ends with exercises that help the reader understand the concepts better (or at least determine whether any of the material actually sunk in). The answers to the examples appear in an appendix at the end of the book. However, in a college setting it might be possible to create a student version of the book without the appendix and a teacher version that includes the answers. The author also uses many of the same examples that I used when I was a student in college, but with an emphasis on diagrams to pictorially show how the examples work. The addition of graphics makes the examples considerably easier to understand.

The early chapters discuss specific kinds of algorithms that are used in every programming language that exists. For example, the author tackles the topic of randomizing data and ensuring that the randomizing process is fair. Of course, getting truly random data on a computer is impossible, but it’s possible to create random sequences of such complexity that the average human would never notice they aren’t random. This book discusses the topic at a length that I wish the text I had used in college would have provided.

Don’t get the idea that Essential Algorithms is light on the computer science aspects of using algorithms. For example, you’ll find coverage of all the basic structures used by most languages: linked lists, arrays, stacks, and queues. I could have wished for coverage of dequeues because many languages modify dequeues to create stacks and queues. Understanding how this essential structure works would have been great.

There are separate chapters for sorting and searching. These two tasks are performed so often by applications that an in depth knowledge really is a necessity for any computer scientist. All the common sorts are covered in sufficient detail that the reader should understand them with relative ease: insertion, selection, bubble, heap, quick, and merge. In addition, you find the counting and bucket sorts (two types of sorts that are completely missing my my college text—I took the time to check). The list of searches are likewise complete: linear, binary, and interpolation.

The opening chapters are finished with chapters on hash tables and recursion. I thought the chapter on hash tables was a bit light and their use as dictionaries in languages such as Python is only mentioned in passing. The chapter on recursion was far better done. I found the material on the various kinds of curves: Koch, Hilbert, and Sierpinski, exceptional.

The middle of the book (starting with Chapter 10) is taken up with trees, networks, and strings. There should be enough material here for anyone who really wants to learn the information. The author seems to hit his stride in these chapters—they’re both interesting and well written.

The end of the book starts with cryptography in Chapter 16. It’s the part of the book that just about anyone will find helpful and it’s also the part that separates this book from being a mere college text and more of a reference book. The chapter on complexity theory is exceptionally nice. Even if you’re already an expert in other areas of this book, it’s likely that you’ll find some new ideas in this part of the book—enough ideas to make it well worth the purchase price.

Overall, Essential Algorithms is the text I wish I had when studying the topic in college and it’ll make a fine addition to my bookshelf. I’ll likely use it as a reference book when trying to understand how various programming languages are implementing a practical need, such as determining how to work with structures such as stacks. I don’t delve deeply into security issues very often, but I’m sure that material will see use as well. There are some holes in the book, but I wouldn’t consider them deal killers and could provide great fodder for the author in the form of articles and blog posts. This is a great book and one that you need on your shelf.

 

Coding Schools and the Learning Process

There are three essential ways to begin a career as a developer. The first is to get a college degree in the subject, which is normally a Bachelor of Computer Science or a Bachelor of Information Technology (amongst other degrees). The second is to teach yourself the trade, which means spending a lot of time with books and in front of your screen working through online tutorials. The third is a new option, coding school. The third option has become extremely popular due to limitations in the first two techniques.

The cost of a college education has continued to skyrocket over the past few decades until it has started to elude the grasp of more than a few people. I’ve read estimates that a college degree now costs between $20,000 and $100,000 in various places. How much you actually pay depends on the school, your personal needs, and the electives you choose. The point is that many people are looking for something less expensive.

A college education also requires a large investment in time. A four year degree may require five or six years to actually complete because most people have to work while they’re going to school. A degree is only four years when you can go full time and apply yourself fully. Someone who is out of work today and needs a job immediately can’t wait for five or six years to get a job.

Teaching yourself is a time-honored method of obtaining new skills. I’ve personally taught myself a considerable number of skills. However, I’m also not trying to market those skills to someone else. My self-taught skills usually come in the areas of crafting or self-sufficiency (or sometimes a new programming language). The problem with being self-taught is that you have no independent assessment of your skills and most employers can’t take time to test them. An employer needs someone with a proven set of skills. Consequently, self-teaching is extremely useful for learning new hobbies or adding to existing (proven) skills, but almost valueless when getting a new job. In addition, few people are actually motivated enough to learn a new skill completely (at the same level as a college graduate) on their own.

Coding schools overcome the problem with self-teaching because they offer proof of your skills and ensure you get a consistent level of training. You get the required sheepskin to show to employers. They also address deficiencies in the college approach. The time factor is favorable because most of these schools promise to teach you basic development skills in three months (compared to the five or six years required by a college). In addition, the cost is significantly less (between $6,000 and $18,000). So, it would seem that going to a coding school is the optimum choice.

Recently people have begun to question the ability of coding schools to fulfill the promises they make. It’s important to consider what a coding school is offering before you go to one. The schools vary greatly in what they offer (you can see reviews of three popular code schools at http://www.mikelapeter.com/code-school-vs-treehouse-vs-codecademy-a-review/). However, there are similarities between schools. A coding school teaches you the bare basics of a language. You don’t gain the sort of experience that a college graduate would have. In addition, coding schools don’t teach such concepts as application design or how to work in a team environment. You don’t learn the low-level concepts of how application development works. I don’t know if building a compiler is still part of the curriculum at colleges, but it was one of my more important learning experiences because I gained insights into how my code actually ended up turning switches on and off within the chips housed in the computer.

I see coding schools as fulfilling an important role—helping those who do have programming skills to build competence in a new language quickly. In addition, a coding school could provide an entry point for someone who thinks they may want a computer science degree, but isn’t certain. Spending a short time in a coding school is better than spending a year or two in college and only then finding out that computer science isn’t what the person wants. Coding schools could also help people who need to know how to write simple applications as part of another occupation. For example, a researcher could learn the basic skills require to write simple applications to aid in their main occupation.

People learn in different ways. It’s the lesson that readers keep driving home to me. Some people learn with hands on exercises, some by reading, and still others by researching on their own. Coding schools can fulfill an important role in teaching computer science, but they’re not even close to a complete solution. In order to get the full story about computer science, a student must be willing to invest the required time. Until we discover some method for simply pouring information into the minds of people, the time-consuming approach to learning must continue as it has for thousands of year. There really aren’t any shortcuts when it comes to learning. Let me know your thoughts about coding schools at John@JohnMuellerBooks.com.

 

Review of Math for the Zombie Apocalypse

Making learning fun is something every author struggles with and few authors achieve. Math for the Zombie Apocalypse is one of the few books out there that actually make a mundane topic like mathematics fun. The essential content of this book is the same as the content for any beginning math book you have ever read. There is no way to get around the requirement of having to learn addition, subtraction, multiplication, and division. However, this book accomplishes its task with panache.

The reader is instantly engaged in a favorite topic of children today, avoiding zombies. Of course, it’s one thing to say that you want to avoid zombies, but it’s quite another to actually accomplish the task. Throughout the book, the reader is asked how he or she would prove their mettle against hoards of zombies roaming the land. The answer is to use math to figure out how to stay alive while less skilled acquaintances become zombies themselves.

Of course, the book is meant entirely in fun. The humor is grand and of the sort that children will enjoy immensely. However, the result of reading the book is that a child sees a useful purpose in learning math—even though this purpose is quite fictional in nature. Most math books out there are dry, humorless tomes filled with mind numbing repetition that will lull the most stalwart child to sleep. There is no reason that a child can’t learn new skills in a fun-filled environment. Before the reader realizes it, he or she has learned new and useful skills.

Fortunately, this isn’t the only book the author intends to write. You’ll want to wait to see the new additions to the for the Apocalypse series, but for now, make sure you check out Math for the Zombie Apocalypse, especially if you have a child that is having a hard time learning the basics. This is the sort of book that I wish had been available when I was growing up and one that I hope others see as being a valuable way to get kids interested in an essential topic. The press, teachers, parents, and even a few students complain about the low scores children achieve in basic math today, but this book does something about the problem.

 

Review of MCSD Certification Toolkit (Exam 70-483): Programming in C#

You’re really excited about becoming a Microsoft Certified Solutions Developer (MCSD)! How do you proceed to make your venture a success? Having been through several certifications myself, I understand the importance of having a great certification guide to help you overcome some of the less intuitive parts of the examination process. Tiberiu Covaci, Gerry O’Brien, Rod Stephens, and Vincent Varallo have provided such a guide with MCSD Certification Toolkit (Exam 70-483): Programming in C#. Anyone planning to take exam 70-483 will benefit from this book because it presents the exam topics in a highly organized manner.

Let me get one of the gripes out about the book before I discuss all of the good material though. It seems as if every certification guide I’ve ever looked at includes topics such as, “Why Get Certified?” The problem with these topics is that they waste space and bore the reader. The reader already knows why certification is important, so there is no need to discuss the topic. The reasons for getting certified vary, of course, but the vast majority of people can sum it up in one word, money. Certification will open a door to a better job, help the candidate keep an existing job, or move the candidate one step further up the corporate ladder. The topic is unimportant because the only thing the reader wants to know is how to ace the exam (or at least get a passing score). I feel strongly that the authors could have used the space spent in preaching to the choir to provide additional helps and aids. If your tolerance for less useful material is low, then you’ll want to skip directly to page 11 of the book and start reading “How to Study for the Exam Using This Book.”

After you get past Chapter 1, the rest of the book starts to take on a predictable pattern. You read the theory behind each of the topics that the exam will test. Code Labs give you hands on experience putting the theory into practice. My favorite sections are the Real-World Case Scenario, which helps you understand how the theory is actually used to write an application that could exist in the real world. A problem with many certification guides is that they pursue a purely academic course—this book avoids that particular problem and gives you practical knowledge as well.

Each chapter ends with a Chapter Test Questions section that contains a few questions you can use to check what you have absorbed. The questions will typically be useful for one or two uses, so you need to ensure you read the chapter and go through the exercises before you attempt to try the test questions. Otherwise, you won’t really know whether you have absorbed the material. Personally, I found the number of questions a bit small. The authors could have beefed up this section to provide the reader with a better idea of how the exam will appear.

The Cheat Sheet and Review of Key Terms sections provide an outstanding method for refreshing your memory the day before the exam. One of the mistakes I (and probably many others) made in preparing for a certification exam is to study too hard the night before. If you don’t know the material the night before, you most definitely won’t pass the exam because these exams are designed to thwart people who cram. A reminder, an overview of what you should know, is really all you need the night before. Relaxing and getting the rest you need are essential.

I wasn’t quite sure about the Additional Reading and Resources section found in each chapter. This section is helpful, but only if you’re using the book as a reference after the exam, rather than as a means for preparing for the exam. The authors could have possibly skipped this section in favor of providing more questions or other kinds of hands on learning activities (one of my favorite CNE books used puzzles as a learning aid). Then again, having the book as a reference after the example will likely prove useful too—just don’t cloud your mind with too many competing sources of information before the exam. The trick is to keep your mind clear and focused on your objective (passing the exam).

Overall, the text is written in a clear manner and you’ll find that the authors carefully lead you from one topic to the next. Developers who are already familiar with C# application development may find the book a bit boring because it really does cover all the details. The book is more designed for someone who hasn’t programmed using C# in the past. In fact, the authors recommend that more advanced readers simply skim the book and look for areas of weakness, which seems to be a winning strategy.

Of course, the big question is whether a book is worth the price you pay for it. In this case, you’re getting a bargain. The book is well written and will serve the needs of anyone who needs to take the 70-483 exam. Certification usually brings some significant benefit, so anything you spend on materials today will reap financial rewards in the future. Getting a book is also a lot less expensive than taking a course. Using this book will save you money in the long run.