Showing posts with label productivity. Show all posts
Showing posts with label productivity. Show all posts

Thursday, November 02, 2017

How do I become a programmer who gets stuff done?

The young man wanted to know, "How do I become a programmer who gets stuff done?" He received a number of good answers, like how to organize his work and schedule his working hours. Yet I had a different view of things, so I gave a different sort of answer, as follows.

Some good advice here, yet even if you do all these suggested things, you may be having a different problem. When you speak of getting stuff done, you may be speaking of “finishing” things.

Defining what “done” means has been a classic programmer problem for more than 50 years. Part of the problem is that programmers with different personalities have different ideas about what “done” means. For instance, look at the situation from the point of view of MBTI personality temperaments:

NTs tend to think a project is done when they have a clear description of the problem and a general approach to solving it. Someone else can work out the details.

SJs tend to think a project is done when it’s “code complete”—though research at Microsoft and other places seems to indicate that only about two-thirds of the eventual code has been written by that supposed benchmark. Perhaps this work isn't thought of real programming, but only "clean up."

NFs, such as me, tend to think that a project is done when everyone involved is satisfied that it’s done. Of course, because these "others" are of various personality types, our NF estimate of "done" isn't very reliable.

SPs tend to think a project is done when they are bored with doing it. They share this feeling with lots of other temperaments, too. Programmers in general don't tolerate boredom very well.

Not taking that last step to "clean up" is a curse of our profession, leaving many programs in a less-than wholesome state. Unclean, unfinished programs are the source of many maintenance problems, and of many errors shipped to customers.

Of course, this classification is only a rough model of non-finishers. Many good programmers of all temperaments are excellent finishers, having taught themselves to be aware of their tendencies and counter them with a variety of tactics. Primary among those tactics if the technical review by peers (which is an integral part of the Agile approach but  by no means is not confined to Agile).

So, you offer your “finished” project to your peers for review, and if they agree that it’s finished, you’ve truly gotten something “done.”

If they don’t agree that your work is done, they will give you a list of issues that you need to address before you’re “done.” You then go back to work and address these issues, then resubmit the newest version to another technical review.

Finally, you iterate in this reviewing process until your work passes the review. Then you know you’ve gotten something done.

For more detail on the review process, see, 


Monday, July 17, 2017

Get the Free “Change Your Life!” ebook

Do you want some great actionable tips and advice on how to improve your life from many top personal development experts (including me)?


You can download the free ebook “Change Your Life!: Experts Share Their Top Tips and Strategies for Reaching Your Highest Potential” by clicking the link below and signing up to the mailing list.



There are many great personal development tips from dozens of authors and course creators. I’m sure you’ll get a lot of value from the free ebook and I’ve included my own best advice as well.


The free ebook is part of the Better You Bundles for Good promotion at the end of July. There will be dozens of courses and ebooks, worth thousands of dollars, all for one low price. If you are serious about becoming your best self, you won’t want to miss this opportunity. The Better You Bundle only lasts for 4 days so make sure you check your emails to be notified of the sale.


The best part is that 25% of the proceeds from the sale are going to support Courageous Kitchen, a charity helping refugees in Bangkok. As little as $100 per month can get a family off the streets in Thailand, so we can make a big impact with this promotion.


Here is the link for the ebook again.
Get the Ebook


Enjoy the book!

Wednesday, June 21, 2017

Goals for Beginning Programmers

The question was, "What are some goals a beginning programmer should have?"

I’d have to disagree with those who answered, “Pick a language.” Instead, I’d say, “Pick at least two languages.”

I agree that you should avoid the “holy war” about which language is “better,” but the way to do this is to train yourself to be multi-lingual, or at least bilingual.

Pick two languages that are as different as possible, and do all your practice programs in both languages. Then take some time to figure out how each language has influenced your thinking about the program.

We’ve used this method for several generations of beginning programmers with remarkable results. One of our goals was to train programmers who could move into a new job where they used a language the programmer had never seen before.

Within two weeks, the programmer would be able to match the shop’s average.

Within four weeks, the programmer would be the best in the shop.

And within six weeks, the programmer would be teaching the others how to be better programmers.


Quite simply, our students achieved these ambitious goals, thus giving themselves a terrific advantage in the job market, with prosperous future careers.

Monday, November 28, 2016

How do I find cheap freelance hardware and software developers?

The question was, "How do I find cheap freelance hardware and software developers?"

I warned the questioner to be very careful about what he was asking for:

First of all, you don’t want “cheap” developers; you want inexpensive developers.

Second, the expense of developers is not their hourly or daily rate. It’s the total cost of building and delivering the software and hardware you want.

In my experience, the least expensive developers have much higher rates than the more costly ones. The deliver what you want, the first time, in less time, with less trouble.


However, a high hourly rate doesn’t guarantee an inexpensive product. Freelance developers can charge anything they want, so price doesn’t necessarily indicate value.

Instead, speak to references about any developer you’re considering. Find out first hand what you’re going to get for what you’re paying.

And, by the way, don't think you'll save money by hiring individual developers. Your best bet will generally be to choose a team, perhaps an Agile team, but in any case, a team that has a history of working well together.

Thursday, June 16, 2016

What's something I can do right now to increase my productivity?

I was recently invited to answer the question in the heading. There were already 99 other answers, some of them very interesting. I tried reading all the answers, but gave up after the first two dozen or so. All that stuff about lists and apps and schedules and methods with trademarked-names might have been okay for some folks, but they didn't do much for me. I don't really use any of them, but I’ve been an incredibly productive person all my life.

I've published around a hundred widely acclaimed books, plus hundreds of articles. I've invented useful things and won a handful of awards for my writing. More than ten thousand people follow my tweets and my workshops are filled with people from all over the world. While doing all these things, I've also found the time and energy to support many volunteer causes.

My secret? I can do all these things because I apply just one principle:

Do what you love doing.

If you love it, you won’t need any of this tricks and tips. You might use some of them or make your own if they help you do what you love, but if you’re not doing what you love, no tricks will help much.

But, you say, "there are just some things I have to do, whether I love them or not." Well, first of all, re-examine those things and make a NOT-TO-DO list, to remind you to stop doing things you hate and don’t really have to do. And if there are still things left that you think you must do, experiment.

For instance, stop doing them for a few days or so and see if it matters. I remember when I had a job where we were supposed to put out a daily report for our manager’s manager’s manager. I started doing it every other day, and nothing happened. I switched to once a week, but again nothing happened. I cut down to once a month. Nothing.

After seven months, this senior manager finally came raging into my office demanding his daily report. I calmed him down and showed him what it had cost to do it daily when he only needed it maybe once a year. We negotiated a deal where on the day he needed it, I would drop everything and produce it in about two hours. That gave him what he needed and saved me two hours a day, 199 working days a year. Now, that’s productive.

But you may still have to accomplish a task that’s really needed, so your experiments don’t work. In that case, examine HOW you accomplish the task and use your imagination to find a way to do it that you really enjoy. For example, you can make a game of the task.

For instance, I once had a rather dull report I had to write regularly so I started each time by picking ten words at random from a large dictionary. Then I challenged myself to use all ten words somewhere in my report. Not only did this make the report into fun game, but I improved both my writing and my vocabulary. And, oh yes, people told me they enjoyed reading those reports, so maybe it made them more productive, tool.

If you enjoy doing a task, you won’t procrastinate, and you’ll do it with gusto. Voila! You’re now the most productive person around.

Not only does this principle work for you, but you can teach it to those who work with you, principally by example. When you do this, you're practicing a powerful form of leadership, helping all those other people be more productive. Think of it this way: It's the opposite of the dreaded micro-management. Instead of telling people how to do things your  way, you're encouraging them to find their was to do things so they'll be a productive as you are.

(You think I’m making this all up? Well, how many people do you know who have accomplished what I’ve accomplished. You can check my website (www.geraldmweinberg.com) and then find some other people with a comparable history and ask them if they enjoy what they do, all day. I don't think you'll find many of them who spend their day making lists—unless they've made it into a list-making game.