There are three ways to do things…

Homer: …the right way, the wrong way and the Max Power way
Bart: Isn’t that the wrong way?
Homer: Yeah, but faster!

Is there such a thing as “the right way” in software engineering?

Earlier in my career, I was an idealist.  I wanted to do things “the right way”, always.  I hated when the business would push for things to get done sooner, which usually meant taking shortcuts.  I pushed back, and sometimes I got my way, and sometimes I didn’t.  I complained that by going faster, we were just digging ourselves into a hole and I just knew that we wouldn’t ever go back to fix some of the shortcuts we made.

Now I am in charge of a product which I am also the lead developer and architect on (small company).  I find myself wanting to use a phrase that I really dislike: “Perfect is the enemy of good enough.”  (I never liked that phrase, because I had seen it used to push teams to cut way too many corners both in development, as well as product design.)

I find myself telling my colleague things like “ideally we would do x this way, but we are on a tight deadline, so we will have to do it this other way”.  (I typically put in a card to go back and fix the shortcut later.)  I really enjoy that he pushes me to do things the right way rather than taking shortcuts, because I know I shouldn’t, but I am feeling a lot of pressure.

But, we don’t live in a black and white world.  We live in a world with lots of (fifty)shades of gray (and lots of other colors to boot).

One of my nieces just started college, and she is taking a course in programming.  I was talking to her about it last week, and she said she didn’t really like it because there were so many ways to accomplish the same thing.  I didn’t say it to her, but I thought to myself that what she said was true, but there are pros and cons to each of the ways you could do it, and with some experience you can figure those out.

And I think that is what this choice of “the right way” comes down to…using your experience to weigh the pros and cons of doing something one way vs another and making an informed decision.  Sometimes “the right way” in one situation is very much the wrong way in another, and I think we only figure that out with experience.

With experience we can figure out when to break the rules.  And that is ok.

Advertisements

School + technology = awesome

My son recently moved to a new school in the district.  I was really impressed with some of their use of technology (and less than impressed with other technology they use).  I wanted to share the things I thought were pretty awesome.

Twitter

The 7th grade goes on a week long trip to a YMCA camp at the beginning of the year.  It is an overnight camp and many of the kids have never been away from family for that long.  My son was worried about it, and I was worried about how he would do.

The school did not allow the kids to take any technology with them.  That meant no phones, so there was no way for him to call and talk to us (this is because often kids get more homesick when they talk to parents).

The principal knew that this was hard on the kids and the parents, and used twitter to help keep the parent’s connected.  She tweeted out pictures of the kids almost every hour.  It was great to follow the feed and get pictures of my son having a great time.

Remind

In past years, the kids were encouraged to keep a planner and record what homework they had in the planner.  This never worked well for my son as he would either forget to write it down, wouldn’t have enough time to write it down or would forget to look in his planner to find out what he needed to do.

This year the teachers set up groups for the parent’s and students to subscribe to on Remind.  The service can send texts and it also has it’s own app where you can see the messages from the teachers.  It has been awesome so far.  I know what homework he has and can ask him specifically whether he has x done or not.  He also has an easy place to look to see when homework is due, and what is due.

Embrace Technology

I hope to see more awesome services/apps and use of existing services in the future in the schools.  If you have an app/service that you think the schools could utilize, talk to your school…maybe they will just adopt it.