Software Writing
There are 38 entries for the tag
Software Writing
In 1846 it wasn't a required practice for medical professionals to wash their hands or equipment when treating a patient. In 1847, Ignaz Semmelweis experimented and discovered that incidences of maternal death from Puerperal fever at Vienna General Hospital were drastically reduced simply by requiring midwife ward staff to wash their hands.
Despite showing data that mortality rates under his watch at his hospital rapidly fell off after instituting this new practice, his theories were not widely accepted until well after his death when Louis Pasteur confirmed the germ theory of disease.
What does this have to do with software? Well, I...
Let's imagine for a moment that we're building a dog house for our beloved family pet. We want it to protect Rover from the elements, be a comfortable place for him to escape the sun and relax, and in general, have the structure hold up for quite some time.
We are probably going to select decent wood, rather than scraps. We'll probably frame it out, make sure it's sturdy, make sure the joints are secure, that it has a solid base, and that the roof is well put together. We're probably going to plan it out, draw it up, and do...
I suppose it's time for the obligatory weigh-in on the latest bit o' reckless software advice from Joel Spolsky on the merits of the "Duct Tape Programmer".
I think being a duct tape programmer is a bit like being an alcoholic. Once you become one, you are one, and when you want to stop, you have to constantly be vigilant against backsliding. Oh, and the first step is admitting you have a problem.
Hi, I'm Scott, and I'm a recovering duct tape programmer.
I don't want to get too deep in the weeds on Joel's article, because the simple fact is that it...
I must start by disclaiming that I am VERY FAR from an expert on Lean. I've read some books. I've seen and been a part of a Lean implementation in a laboratory environment. I am, I hope, actively pursuing an informal but practical education in the discipline, but I am no expert. What follows is my thoughts, my thoughts only, and an open invitation to further conversation on a topic about which I feel passionate. Also I'm not an expert on Agile. I believe strongly that the idea of a named methodology applied rigidly to practice with no flexibility in...
A key part of Lean Manufacturing and the Toyota Production System (TPS) is the idea that you should go and see for yourself what is happening on the manufacturing floor. When striving for continuous improvement, or maybe more importantly, true understanding (which must be had before improvements can be made) of the processes and problems on the production floor there is no substitute for being in the place, directly observing the people and machine processes, and when possible, putting your hands into the production line and becoming the person that performs work on the floor. This is also referred to...
One of my tweeps @mjeaton has asked his sphere of influence to follow on to his post on the same topic, so here we go. How old were you when you started programming? The first time I was exposed to programming was around age 10, someone introduced me to BASIC on an Apple IIe in 1987. I don't really remember what we did, as I was interested more in getting back to the game I was playing. This is probably indicative of why I'm not an alpha geek. All the alpha geeks quit playing games on their C64 in...
Disclaimer: This post represents my own views of alt.net and is merely an expression of what I would like to see it become. This is not necessarily the view shared by anyone else. I do not speak for this group. So this alt.net thing has been around for almost a year now (as a named concept anyway), and with the upcoming Seattle event, I've been wondering what my place in this world is, what my contribution can be, and most importantly, what my passion in software is, and how I can work toward it. I want to go to...
To the unintiated, the title is: The Safety Net - Test-Driven Development In Real Life For the Win. Warning - This post contains some of my thoughts about *practical* TDD and the reasons for it. This may not all encompass "dogmatic" TDD practice. To me, TDD is all-important first as a safety net. Before you find TDD soluble enough to understand how it helps you drive design, you have to understand that you're putting it there to save your code from you, your QA group, and most of all, changes. When I think about TDD, I think about it as...
Those of us not at MIX08 are likely jealous of those who are. Certainly Twitter has been aflutter with MIX08 tweets, letting the rest of us feel left out in near-real-time. Oh well. That's not the point. Just wanted to get that in there. The point, as you're wondering, is that while I was watching the keynote stream from MIX08, I found it very easy to succumb to Grass-is-Greener Syndrome (GIGS?). It's super easy to watch something like the IE8 demo, or the Silverlight stuff done by the Vertigo and Hard Rock people, or the just astonishing end-to-end magical technosex...
The question came up via Buddy Lindsey: "on a beginner's level, why should one use a Continuous Integration solution?" Here is my honest, un-googled, from-real-world-experience answer as someone who has done non-trivial corporate team-based development both with and without CI. All of this applies equally to web and desktop development, from a mechanical standpoint there's absolutely no difference. The differences are in the code. Preamble If you are alone, writing code with no team, no release cycle, no QA, or anything of the sort of stuff that represents professional software development, then CI is probably nothing more than mental masturbation...
entia non sunt multiplicanda praeter necessitatem All things being equal, the simple solution is probably right. Or, if it looks like a duck, walks like a duck, and sounds like a duck, it ain't an emu. Someone else put it something like "don't look for zebras when it's likely there's horses about". Last week I posted exasperated about Reporting Services performance. What was going on, in a nutshell, was that we were at a standstill in application performance, and though it had been getting progressively worse over time, it had made a giant leap into "shitting the bed" almost overnight. ...
I got probably the biggest compliment I've ever received regarding my coding ability the other day in the form of a twitter entry (a "tweet"...I guess...is the word. /puke) by my junior programmer and right hand man boy, that (aka Doug, bct). good api's make things easy. sweet api's are self explanitory, imo. i got to work with a sweet one today. thx scott. He was talking about the internal library I created for working with Word documents, part of which I published for a series of blog posts a couple of months ago. I bring this up not...
I hate the year combo box. Yeah. I said it. Are we really so afraid that a user won't type in a proper 4 digit year that we need this thing?
Look at any online registration or purchasing form. You need to enter a year for your date of birth, or your credit card expiration. Easily 8 times out of 10 this is done via a combo box with prefilled years. This, in and of itself, causes unecessary problems in design, maintainability, and usability. This is an anti-pattern.
Design Problem: Rather than be agnostic about the fact that you have to store a...
Scott posts his and asks for more, particularly from people like me. I went to college for history and poli sci and drinking and dropping out...not for comp sci. I did learn some things about software while in college...just not from college.
The List
People talk a better game than they play - don't get too caught up in the latest and greatest, or if you don't speak patterns, or if you never programmed a C64, because at the end of the day everyone does what they need to do to keep getting paid, everyone has written and...
Can what we do be harnessed to help, in some small way, save the world?
I always try to eliminate paper processes when I write a system. I walk around, look at post-it notes, and realize they exist because of some lack of features in software. Can we eliminate enough paper consumption with software to make a difference?
Can we engineer workflows to gain efficiencies out of software that will ultimately reduce wasted energy and resources?
Can we become software scientists and create ways to help the physical scientists improve our global situation?
Can we challenge ourselves to do more than pull data from databases...
I think David Laribee really nailed it with his idea of ALT.NET, and Oren further clarified the real intent (as I took it anyway) of the idea here. It is all about a mindset. Some others have jumped on this and tried to use it as fodder for the religious wars, but that's stupid. That's not what it's about at all. In fact, you could expand the idea to encompass all developers that are keeping an open mind about tools, libraries, and methodologies that fall outside of those provided or touted by the major vendors.
I think what we're really talking...
Okay well a few days ago I blogged about the absolute worst development job I (or anyone else I dare say) ever had. If you have one to top it, post it up and send me a link. We’ll make it a meme. Now I want to tell you about the second worst development job I ever had (Jeff demanded it, so I gotta). This one is bad in a completely different way from the last one, and in many ways it’s worse. Only a few people know I even had this job, and you will see why shortly...
Sure it’s free but are you doing the right thing by standing idly by and using it without paying?
Everyone is all abuzz about the death of NDoc. Scott talks about it, and makes a plea to us all to contribute in some way to an open source project that we find valuable. Jeff takes that on and and essentially says that our contribution requirement extends to us using the software, and that contributions via code or cash are unnecessary. Phil jumps in and says yeah, that’s probably true, but you also get what you pay for (sorry for the broad...
I’ve mentioned some of my previous bad jobs in other posts, and said I’d blog about them. Forthwith is story #1. I want to talk a little about bad tech jobs, and the things I’ve learned from them, and maybe, hopefully, inspire some similar stories (unless you have had no bad tech jobs, in which case I hate you, and grats). So everyone has had a crap job, before they got into their chosen career, be it a college McJob or something you did on summer break in high school. But let’s talk about the crap development jobs we’ve had,...
I’m the boss, need the info. – Dr. Evil
Believe it or not I spent a bit pondering user-driven-design while I was laying in my hospital bed being bombarded with bad TV. My visit to the hospital (and my prior one) showed me that, in the UI department anyway, hospitals fail miserably. People like you and I, we thrive on information. We need feedback when we take action. It’s ingrained in us from birth. We get grades on papers and tests and anxiously await their return when we do school work. We seek verbal and nonverbal feedback when we interact with...
Heard this week in an interview: “This area isn’t exactly a Mecca for IT”. Truer words were never spoken.
So…I live in Ocala, FL. I’ve mentioned it before. We are about 40 miles south of Gainesville, known primarily as the home of the UF Gators, the home town of Tom Petty and Danny Rolling (no meaning implied in their juxtaposition), and briefly starring as the home town of Keanu “whoah” Reeves and the ever-so-tasty Charlize Theron in The Devil’s Advocate (oddly enough Charlize played serial killer Eileen Wuornos, one of whose victims was from Ocala, and another was found here)...
WTB [Roundup] or [Weed-B-Gon] PST!
Pardon the MMO parlance there. Yowza been busy. Still busy but trying to pull my head out of the sand for a while. Just caught up with about a month’s worth of unread blogs. Many thanks as usual to Jason Haley for recapping me with almost everything I needed to know in that time. Dude, you moved to Seattle? WTF? (been giving that some thought myself lately…neither here nor there).
So I got to thinking about patterns in software development. Not design patterns, but project patterns. Patterns I have seen over and over. I would love to...
This post is part of a series aimed at bringing people up to speed in what’s going on today in application development.
Finally, the fourth pillar, Abstraction. Abstraction is the principle of reducing complexity by hiding the details when possible. Abstraction takes many forms in practice (hey, it’s polymorphic!). In one sense, Abstraction is very much a part of Encapsulation, in that you are hiding the dirty details of the implementation and encapsulating it in a pretty API. In another sense, Abstraction is closely related to Polymorphism, in that if you have a SportsCar, you could treat it abstractly as...
This post is part of a series aimed at bringing people up to speed in what’s going on today in application development.
Let’s move to Polymorphism. Polymorphism is the one that always gave me trouble when I was learning OOP because it sounds a hell of a lot more complicated than it is at root, but also because there is just so much to polymorphism once you get deeper and deeper into OOP. At root, polymorphism means that one thing can have many shapes (or, in World of Warcraft, Polymorph is where a mage turns you into a sheep). From...
This post is part of a series aimed at bringing people up to speed in what’s going on today in application development.
Time for Inheritance. Inheritance is pretty much the thing that makes OOP so interesting and can make OO designs wicked complicated, because once you know what inheritance is, you want to do it all the time. (inheritance is like sex?) From Wikipedia:
a mechanism for creating subclasses, inheritance provides a way to define a (sub)class as a specialization or subtype or extension of a more general class (as Dog is a subclass of Canidae); a subclass acquires all...
This post is part of a series aimed at bringing people up to speed in what’s going on today in application development.
What I want to do here is talk about the basic principles of OOP that you should be aware of. I’m not trying to teach you everything you need to know, but I want to give you my interpretation, a basic understanding, and some pointers to more information that you should use to further your knowledge. This was supposed to be a single post but it grew beyond 10 pages and so I figured I’d break it up into...
This post is part of a series aimed at bringing people up to speed in what’s going on today in application development.
In this post I just want to talk about some basic terminology that may be confusing if you are new to programming, or particularly if you are new to object-oriented programming. When I first was getting into more advanced programming from my early VB days I didn’t know a lot of this stuff, and I had to learn a lot of it as I went, and do a lot of reading as well. This was before blogs and wikipedia,...
I am going to attempt to put together a series of posts as kind of a Readers Digest version of what’s going on in software development today. A little story about what brought this on:
My buddy is looking for a job. He is a very sharp guy, extremely talented programmer. I’ve worked with him twice and would gladly do it again because he’s exactly what you want in a developer. He’s smart, talented at finding solutions to problems, tenacious, and motivated. He gets excited about code. To me, a guy like that is way more valuable than a coder who...
Over the years I’ve taken many a would-be programmer under my wing and showed him the ways of our world. Some of those mentorings turned out well, some not so much. It’s always been my firm belief however that if you are in a senior or lead position in software, it is your duty to mentor and almost create an apprenticeship relationship with the newbies in your charge, to prevent them from becoming bad programmers and ending up as lowlights on the blooper reels of the Daily WTF.
When I was coming up the software lead I worked for was a...
MbUnit poobah Andy Stopford threw up a link to the Joel Test the other day. He got a comment that went a little something like:
“Hey thanks for the link to the Joel test. I now have more arguments to convince my bosses on the importance of working in a quiet environment, using the best tools money can buy, among other things.”
Buddy, I gotta tell ya, if you have to find arguments to convince your bosses that programmers need quiet, good tools, and so on, you gotta get out of that job. Like now. Even if the offers are not being thrown...
How often is it that you can read something that’s extremely well written, agree with it in principle, and still want to walk up to the author, pull the middle finger out of your pocket (the old “I got something for you” bit) and tell him to fuck right the hell off?
I guess that’s why I like Joel. Sometimes good, sometimes bad, his writing always makes me think, and it’s always well done.
But I take HUGE umbrage with his latest work, Hitting the High Notes. Not the underlying thesis mind you. I agree 100% in principle with something he has been...
K.
So in a previous post I bitched about not being able to group my online/offline contacts in MSN Messenger 7. Thankfully J. Gregory doesn’t suffer from the same inability to find menu options as I.
However, after the relief of looking at a properly organized contact list kicked in, I started getting pretty pissed about the UI design of the new Messenger, and many, many other apps. Honestly…I fucking write software and I couldn’t find this option (Contacts Menu|Sort Contacts By > Group Offline Contacts). And I was pissed that a bit of UI design made me feel stupid especially after finding out where to...
So I'm taking a little break from what I’m doing (tell you shortly) to write this. I’m hoping to get some feedback.
I have decided tonight to beef up my compsci background. I am not a compsci grad. I am not a grad at all actually, but when I was in school I majored in ancient history. Minor in political science (yeah…so not a science). At the time, I had no plans or even desire to go into technology. This was 1995. In 1997 I got my first tech job as a temp working help desk at a sizeable law firm...
My boy Bill is always entertaining, especially when he's making a point that he's passionate about. This time it's the way that programmers shirk their duties with phrases like "it works on my machine", or making apps the least amount of user-friendly possible (making the customer read you hex on the phone? wtf? I've worked with programmers that couldn't read you hex on the phone, and just the other day I had to remind someone who should know better which letters are and are not valid hex characters.)
See, to me, this is bullshit. And I can say things like bullshit because...
Secretgeek has a post about TODO Driven Development. It's funny cuz it's true.
I follow this methodolgy quite a bit, and I find it to be very helpful. A lot of times during the day I have meetings or other random things that interrupt my development time. So what I will do is think through how I am going to implement a given thing, and then write the shell, write some TODO flags, and then fill in the TODO's later. This way, when I have to leave in the middle of coding some class, or some...
Build or Buy?
It's an interesting question. When is it better to build systems internally than it is to buy them on the market? Where is the balance line between cost to buy and cost to build, time to implement, control over functionality, and so on?
At my company, we are evaluating whether to build or buy a new lab management system. If we buy, we have narrowed it down to the best of breed solution on the market. The base product won't suit our very specific needs, and we would need the product extensively customized...
A few things I've read over the last couple of days have been sparking some thoughts. First, Jason Mauss' Devcampus project, and the comment discussion about the various "schools" or "subjects" to be covered. Then there was someone who gave me the link to this post (yes, it isn't recent, but if you haven't read it it's new to you) by Eric Sink. And today, PragDave had a post about growing from novice to expert and why that will be important in the war on outshoring.
So, I start to thinking about the path from coder to...
There is a difference between a "Programmer" and a "Developer", something I have felt from working in "programming" for quite some time, both as a manager and as a worker bee, but I have never been able to articulate it as clearly as Eric Sink has.
And the fact is, he's right. I have often had no use for someone that only wrote code, and did nothing else. My best team was a team where most of the members were able to think outside the box, come up with solutions on their own, work with users, work with customers,...