EppsNet Archive: Programming

You Have to Explain Something to a Computer

 

When you’re doing programming, you have to explain something to a computer, which is dumb. When you’re writing a document for a human being to understand, the human being will look at it and nod his head and say, “Yeah, this makes sense.” But there are all kinds of ambiguities and vagueness that you don’t realize until you try to put it into a computer. Then all of a sudden, almost every five minutes as you’re writing the code, a question comes up that wasn’t addressed in the specification. “What if this combination occurs?” It just didn’t occur to the person writing the design specification. When you’re faced with doing the implementation, a person who has been delegated the job of working from a design would have to say, “Well, hmm, I don’t know what the designer meant by this.” It’s so hard to do the design unless you’re faced… Read more →

Interview with Jim McCarthy

 

Q: What do you perceive as the greatest current challenge for software development managers and how do you help them overcome it? The greatest current (and past and future) challenge for software development managers, and for all humans everywhere I suspect, is accurately perceiving reality and effectively accounting for it in their behavior. . . .   Q: What is your number one software project management tip, trick or technique? Discussion should be illegal. Less talk, more code. — PM Interviews: Jim McCarthy Read more →

EppsNet Labs: Glider

 

Here’s a really simple gliding tabs demo using glider.js, which is downloadable here. As you can see from the really simple code below, you could do something pretty nice with this without too much extra effort. Glider is dependent on the Prototype and Scriptaculous libraries, both of which are included in the glider download, as is the required stylesheet. Read more →

The Average Software Developer

 

The average software developer reads less than one professional book per year (not including manuals) and subscribes to no professional magazines. These developers are not developing or advancing themselves professionally. About 75% of these people do not have a degree in computer science or a related field. They learn by trial-and-error and on-the-job training, which means that they risk learning other people’s bad habits rather than industry best practices. This method of professional development perpetuates ineffective, inefficient practices that hinder the success of software projects. — Construx.com Read more →

Torvalds on Specs

 

A “spec” is close to useless. I have _never_ seen a spec that was both big enough to be useful _and_ accurate. And I have seen _lots_ of total crap work that was based on specs. It’s _the_ single worst way to write software, because it by definition means that the software was written to match theory, not reality. So there’s two MAJOR reasons to avoid specs: – they’re dangerously wrong. Reality is different, and anybody who thinks specs matter over reality should get out of kernel programming NOW. When reality and specs clash, the spec has zero meaning. Zilch. Nada. None. It’s like real science: if you have a theory that doesn’t match experiments, it doesn’t matter _how_ much you like that theory. It’s wrong. You can use it as an approximation, but you MUST keep in mind that it’s an approximation. – specs have an inevitably tendency to… Read more →

Got a Job

 

After three months on the dole, I got a job offer from the IT director of a local non-profit healthcare association here in Orange County. I start next week. As Gerald Ford used to say, “Our long national nightmare is over.” It’s a small IT group — 8 people, including the director. I’ve got to admit I’m a little burned out on big corporate IT shops. I got out of hands-on programming and into leadership roles because I thought I could do a better job than the people I saw doing it. I wanted to develop teams that got things done using their skills and their collective intelligence, but in practice, you typically get locked into some corporate process standard. A process may be good for delivering consistent results, but they may not be consistently good results. Like at McDonald’s, every Big Mac is just like every other Big Mac… Read more →

Offshoring: What Can Go Wrong?

 

You might wonder whether the Linux operating system provides evidence that offshoring can pay off. I had often wondered about this point myself, so I put the question to Linus Torvalds, founder of the Linux project. Torvalds replied that the two models of software development aren’t comparable: I don’t think the Linux model works for offshoring in the commercial sense, or really ends up even being very relevant. The problem ends up being communication and the mental model pretty inherent in offshoring. My belief is that when you say “offshoring,” you very much mean “control the project on one shore, work on the other.” That is, the implication of the offshore work being “subservient” is very much there in the notion of offshoring. In contrast, the Linux model (and open-source in general) is that there’s no one-sided control, and that when work gets done overseas, it gets done because it… Read more →

EppsNet Labs: VoiceXML RSS Reader

 

The Big Picture We’re going to build application that takes RSS data — specifically the EppsNet.com feed — as input, and outputs a VXML file that can be read and spoken by a VoiceXML browser. The RSS Source Format The general structure of the EppsNet feed — or any RSS 2.0 feed — looks like this: Each item within the RSS feed has a format that looks (slightly simplified) like this: VXML Output Consult the VoiceXML 2.1 specification for more details, but the output we want will look like this: What this will do when processed by a VoiceXML browser is: Say the title of the RSS feed. Offer the listener a numbered list of post titles to select from. Parse the user’s selection, by either voice or touch-tone input. Read out the selected post summary. Clear the input variable and offer the opportunity to select another item. Generating VoiceXML… Read more →

Why I Got Into Management

 

My first 10 years in the software business, I had great managers. They did the management thing and I did the programming thing and we got great results together. Then, after the dot-com boom torpedoed industry hiring standards, I got tired of working for managers who should not have been allowed anywhere near a software project, people who were not fit to direct a professional software developer to a table at the Olive Garden, much less direct their activities on a complex project. I couldn’t possibly have continued to work for people like that — it just made a mockery of all the work I’d done over the years to actually learn something — but I still miss being a developer . . . Thus spoke The Programmer. Read more →

Go Tell the Spartans to Program a Football Game

 

I ponied up the 50 bucks to join the XNA Creators Club and so far I’ve been able to code and deploy some rudimentary 2-D games on our Xbox 360. “Can you program a football game?” my son asks. “No . . . first of all, I’m just learning this stuff, and second, you can’t expect one person to duplicate the efforts of dozens of people over a period of years.” “Haven’t you ever heard of The 300?” he shouts. “Yeah. They all died.” “But they gave a valiant effort!“ Read more →

Four Questions to Ask a Hiring Manager

 

I’m rereading parts of The Psychology of Computer Programming and I notice that several of Weinberg’s “food for thought” questions at the end of each chapter would be good questions to pose to a hiring manager: How long have you been in charge of your present group? How many of the original people remain? How many people have left and what were the reasons for their departure? What sort of provisions do you make for this kind of turnover? Describe the sequence of work planned for your current project. Is the actual work proceeding according to the original plan? Do you expect it to continue in this manner? How close is your progress reporting scheme to the reality of the work that goes on? What checks do you have to find out if it corresponds to reality? What is your impression of what motivates your staff? Is it the same… Read more →

Dishonest Estimation

 

I saw the following attributed to Ralph Johnson. I’m not sure if that’s the Gang of Four Ralph Johnson, but it probably is: The problem is that almost all software schedules and budgets are bogus. They are created for political effect and have little relationship to reality. Thus, whether they are met has nothing to do with the people working on the project. Who makes your schedules? Project managers? They are almost certainly the wrong people. You can’t predict how long something will take unless you are an expert at doing it. The programmers? Are they allowed to say “we don’t have enough information to make a prediction”? Are they ever told “that is too long, you’ll have to do it in six months”? The only way to get honest schedules is from people who have experience in doing the work who know that they need to get the schedule… Read more →

Better, Faster and Cheaper?

 

Somehow we’ve got it in our heads that every programmer in India is good, fast, and cheap, and every programmer in the United States is lousy, slow, and expensive. My theory is that for version 1.0 of a product, the maximum allowable distance between the engineers and marketers is thirty feet. — Guy Kawasaki Read more →

Requirements are Boring

 

You’re working on the requirements for Project X? Boring. You’ve got someone figuring out architecture for Project Y? Boring. The guys are designing Project Z? Boring. . . . Who has built something that their customer will certify is part of what they want? That’s interesting. Who has shipped something to their customer and the customer is using it? That’s very interesting. — Ron Jeffries Read more →

I Know Lots of Different Languages

 

My son is looking over my résumé, including the part where it says I’ve worked with lots of different languages. “You don’t know a lot of languages,” he says. Read more →

Job Posting of the Week

 

6 Programmer Analysts with Java, J2EE, Weblogic, Websphere (before Java you should have programmed in C++ not VB or Visual Basic) I don’t entirely share the author’s view that programmers can be ordered up like pizzas — Java, C++, hold the VB — and I would point out, sadly, that the hiring path for developers is now littered with jackasses who don’t know that VB and Visual Basic are the same thing . . . Thus spoke The Programmer. Read more →

Like Father, Like Son?

 

The number of students majoring in computer science is falling, even at the elite universities. So [Bill] Gates went stumping at the University of Illinois at Urbana-Champaign, Carnegie Mellon, Cornell, M.I.T. and Harvard, telling students that they could still make a good living in America, even as the nation’s industry is sending some jobs, like software programming, abroad. — The New York Times, “Microsoft, Amid Dwindling Interest, Talks Up Computing as a Career” My brother is a doctor. He doesn’t encourage his kids to go into medicine though, because he’s incredibly frustrated by the fact that you go to school for 20 years to learn something, only to have clerks from insurance companies decide if a procedure you’ve recommended is or is not “medically necessary.” I’ve worked in computing for 20 years. I don’t push my kid to get into it because during that time, it’s become less and less… Read more →

Edsger Dijkstra, 1930-2002

 

I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself, ‘Dijkstra would not have liked this,’ well, that would be enough immortality for me. — Edsger Dijkstra Dijkstra, a pioneer in computer science and structured programming, has died of cancer at age 72. He was widely known for his note “Go To Statement Considered Harmful” — published in the March 1968 Communications of the ACM — which fired the first salvo in the structured programming wars. (For an opposing viewpoint, see “Real Programmers Don’t Use Pascal.”) Reportedly, the ACM considered the resulting acrimony sufficiently harmful that it will, by policy, no longer print an article taking so assertive a position against a coding practice. Use of titles of the form “X Considered Y” remains a persistent in-joke. Another in-joke: Dijkstra and… Read more →

Radical Notions Debunked!

 

The big controversy at the office this week was a “radical” idea offered by one of our developers regarding data collection with a series of web-based forms. The idea was that rather than just pouring the data into a relational database like everyone else does, we’d build up an XML tree, essentially a gigantic (in this case, ~200K) string, and pass that around from form to form. The advantages of this, if I understood correctly, would be to simplify the data model design and eliminate the need for table joins. Of course, it also violates every known rule of efficient data access and ratchets up the processing requirements by several orders of magnitude, but that didn’t stop one of the development managers from throwing his full-fledged support behind it.   I TA’ed undergraduate software engineering classes for a year at USC, and every so often an underclassman would advance some… Read more →

The Programming Circus

 

Most of my illustrious career has been spent working or consulting for Fortune 1000 companies. These companies are fundamentally dependent on their computer systems, particularly their online systems, to transact business. If the systems are down, the business stops running. In fact, the systems don’t even have to be down to create havoc. What if the response time is too slow? If you’ve ever done user testing with people whose job it is to enter money-making financial transactions for large corporations, you may have been amazed, as I was, at how fast they are. Obviously then, the software you build for them has to be even faster; split-second response time is required. If your software is slowing people down, the business is losing money. Or what if people are sitting around staring at their monitors because they can’t figure out how that great new interface you gave them is supposed… Read more →

« Previous Page