Programming with Access? Know this about "No value given for one or more required parameters"

Today, it’s more about programming .NET with an Access database. Last time, I explained the unique way Access handles JOIN. This time, let’s talk about a syntax error that masquerades as a missing parameter.

Continue reading “Programming with Access? Know this about "No value given for one or more required parameters"”

The one essential Agile ingredient

Agile isn’t about the work. It’s about you. You can’t change your company’s work life without changing YOUR life.

You know more than you think you know, just as you know less than you want to know.
Oscar Wilde

As I wrote last Friday, you just can’t know everything at the beginning of a project. A lot of times, you can’t even know things at the end either! That’s one way of looking at the whole “Agile” concept–simply realizing that your knowledge is limited and therefore letting go of a lot of things that you can’t control correctly anyway.

So what kind of manager works best with an Agile team?

Continue reading “The one essential Agile ingredient”

Why pair programming is kind of cool

Pair programming is easy to get started with and carries a low risk of failure. Try it because it works, but also because you’ll like it.

If pair programming feels threatening at first, you’re normal. Two developers, one keyboard… yuck. If you’re like me, you want your own space, and you get a kind of rhythm going with mid-compile checking email and stuff. Taking that away during pair programming time sounds like it would be incredibly awkward.

Continue reading “Why pair programming is kind of cool”

Programming with Access? Know this about JOIN.

Writing your own SQL statements against an Access database can fail in surprising ways. Here’s how to avoid one common problem: the three-way JOIN that won’t execute.

If you’ve ever implemented a small-scale WinForms .NET project with modest database needs, you’ve probably been tempted to keep it “simple” by using Microsoft Acess (.mdb) files.

Continue reading “Programming with Access? Know this about JOIN.”

Project Planning: "Can we kill 'em tomorrow?"

“Right now” is always the absolute worst time to plan a software project. You should only do it when there is no other choice. You’re not as smart today as you will be tomorrow. Don’t let Dumb You make decisions that Smart You will be stuck with.

What kind of organizations benefit from an agile approach to software development?

I was thinking of this around a year ago while working with a client who was thinking of reimplementing, for the first time, some important applications with .NET. One of the business-interface people started a planning meeting by stating:

Before we do anything else, we need to plan this whole project in detail. We need to know exactly how this is going to be done. Right now.

I don’t recall exactly how I responded out loud, but the monologue in my head went something like this:

Continue reading “Project Planning: "Can we kill 'em tomorrow?"”

Good ideas in a Daily Scrum

The Daily Scrum is no time for good ideas! Save the problem-solving for afterwards.

Someone asked on LinkedIn the other day how to handle technical discussions in a Daily Scrum meeting that is ending early: do you use the free time, or defer the discussion for after the meeting?

To me, that’s an easy call. You do not have time for technical discussions in a Daily Scrum, the same way you do not have time to talk about last Sunday’s football game in traffic court. It’s not a matter of time, it’s a matter of focus and appropriateness.

Continue reading “Good ideas in a Daily Scrum”

A word about strings and pointers in C++

If you’re inexperienced with traditional C-style null terminated strings, the std::string.c_str() method may yield puzzling results.

This question just came up on Stack Overflow. It reflects a pretty common misunderstanding of how C-style strings are represented by char pointers in both C and C++.

Greatly condensed, it goes:

  • You read some data into a std:string object. You display the contents; it’s all there.
  • You invoke c_str() on that std:string, and display its contents; it’s not all there.

Continue reading “A word about strings and pointers in C++”

Where does it hurt?

Before Making a Project Not Suck, you need to know Why It Sucks. It’s not obvious, or you would have fixed it already.

When taking on a new Project That Sucks, the most important thing for me to do first is to find out, in a big-picture sense, what has gone wrong. Why It Sucks comes before Making It Not Suck.

Sometimes it really is as simple as needing another bright software developer. Other times, the client can throw people at the problem but the problem is really structural: it’s set up to fail, and they should consider just dropping it. And still other times there’s a team or management dynamic that could use a push in the right direction. Continue reading “Where does it hurt?”