views:

714

answers:

20

Some problems must have seemed repetitive before the days of huge standard libraries.

To prevent duplication, remember to look through answers first before replying.

+3  A: 

The most common task I get as a programmer in my small company:

"I can't send emails, can you help?"

nickf
+2  A: 

The most common that I see are integration related.

Integrate the data from some application into SharePoint for dashboard or automation purposes or parse data from an application so that it can be read and processed by another application.

A lot data moving and translation problems.

spoon16
+3  A: 

its working on my machine!

dotnetcoder
+9  A: 

Since more and more projects these days are in the form of web applications, I'm addressing those specifically in my response. I get a lot of calls from people who think they have the next "killer app" for the web, they are almost always terrible ideas or are already being done.

Anyway, the proposed projects almost always include a need for several of the following:

  • User Authentication
  • Email Generation
  • Content Management
  • Social Networking
  • File Upload
  • Rating System
  • Folksonomy/Tagging
  • Payment Processing
  • Charting/Reporting
  • Exporting Data (XLS/CSV/DOC/PDF)
  • Affiliate Marketing

Additionally, the proposal almost always expects me to shelf my current projects and put my entire team at work for months to implement their brilliant idea with no compensation except for the promise of a small chunk of profit sharing.

rboyd
Your last paragraph reminded of the infamous project tendered on Rent-a-Coder: "Build an OS from the ground up that does everything Windows XP does--but hacker-proof. For $1000 to $3000." I understand gems like this went up on a regular basis.
micahwittman
Never begin work without a down payment. The more of us that do that, the better we will do for ourselves. There are few attorneys that will work for nothing in HOPEs that they get paid later. Electricians, plumbers, etc. This is business. Get paid SOMETHING up front or move along is what I say!
Optimal Solutions
+2  A: 

Database table access - "put it in a grid," they say (usually with customizable columns).

Doug L.
This one is probably 99% of everything I've ever done as programmer.
MusiGenesis
+17  A: 

"Could you please add this feature that I swore up and down I would never need when we were designing the application?"

Glomek
man, that one annoys me *so* much. when I'm doing the requirements, I ask specifically: "are you 100% sure that you will never need more than one X per Y?? If you change your mind in the future it will be a serious pain in the ass to change." and it's always "yeah, no worries.". S.I.G.H.
nickf
Alternate: Remember I gave you a bad performance review because you put that useless feature in and I had to tell you to take it out? Well I'll give you another bad performance review unless you put it back in.
Windows programmer
And the feature that we took out in order to reduce the cost. But now they demand it for free because "not having it is just plain ridiculous"
finnw
+2  A: 

Could you provide an estimate for feature X

JaredPar
You spend more time estimating than actually doing?
MusiGenesis
During certain parts of the cycle I do a bit of estimating. Thankfully it's a very small portion but we do a lot of investigations.
JaredPar
+6  A: 
ngn
+2  A: 

My most common task is creating Windows Mobile applications that allow access to legacy databases from handheld devices. Basic client/server architecture, with the caveats that everything has to fit on a tiny-ass screen and you can't count on the server's always being reachable.

MusiGenesis
along with the extra caveat that they have no idea of a good heuristic on narrowing down what data the user might need to be loaded, but "everything would be nice"... by monday, cause you've already written it once for the desktop version
Steven Adams
@MusiGenesis - Have you used the newly released "Microsoft SQL Server Compact 3.5 Service Pack 1 and Synchronization Services for ADO.NET version 1.0 Service Pack 1 for Windows Desktop"? (What a mouthfull...)
Doug L.
@Doug - we mostly use Oracle Lite on our devices. SQL CE replication/synchronization (using RDA) has proven to be not 100% reliable in situations with erratic network connectivity. Synch Services may fix this problem, but I'd need to see proof.
MusiGenesis
+2  A: 

Similar to the "integration" answer, I suppose, is design.

"We need a set of components that will all do a variant of X."

X can be web-based database access, manage different layers of a natural-language conversation, or run different parts of an embedded device. It doesn't really matter. On some level, they're all going to be similar: guessing which phonemes were heard, which words were heard, and what a logical response would be are all logic/probability/rule-based questions, but they have completely different semantic meaning in a larger project.

Or take the distinctions between login, customer verification, product display, and ordering. Yes, they're all database interactions. But they have different meanings, and they will each inevitably have contrasting business logic requirements.

As a designer, where do you draw the lines? What code can be made very general, and reused, and what really needs a separate function/file/module? Will code that's made too general be confusing? Will separate modules lead to code duplication, and its attendant horrors?

To get back to the question, huge standard libraries (or high-quality standard libraries--not quite the same thing) will only help with tasks that can be easily automated. Zeroth-level design patterns, if you like. But the big issues that undergird the professional practice of programming are largely library-proof.

JXG
+2  A: 

Actually, I think the most repetitive thing which I've come across is the notion that every business is doing something innovative with the same common business paradigms i.e. the way they view their customers/products, or their sales figures etc.

The reality is that probably 80% of work is with the same entities (customers, products etc), same data (e.g. a person's address, phone number etc) and all we do is implement it in a different way (or for a different platform).

Design considerations are almost always roughly the same - everyone wants high availability, scaleability and so forth. There's usually some degree of difference in each project or product, but invariably we end up working with something familiar.

We end up implementing security models, data access patterns and other considerations which feel similar, mostly because they are.

However, each time we get a chance to perfect our technique a little more. It just gets a little easier to estimate, a little easier to build, test and deliver (hopefully!).

RobS
A: 

Perhaps this problem is specific only to company with multiple disciplines(PM, Dev and Testers like Microsoft). People have to argue "Who should own this task" every day.

Morgan Cheng
It was worse before TFS...
RobS
+2  A: 

Working with raw data in ways that it can be useful: import into database, graph it, pivot table it, run reports about it, etc. Basically, taking their raw data (which they my purchase, already have in other systems - Excel, flat-files, legacy apps) and making that data more presentable, understandable and reliable for their day-to-day operations. This is 90% of what I am generally asked to perform.

Optimal Solutions
christian studer
Generally the core generic functions (insert, update, delete, read) are present in each project. However, even within the same client the projects can vary greatly. A framework of some sort would need to be as simple and generic as possible, such that its portable. Would be nice!
Optimal Solutions
A: 

Explaining to management the difference between the design and reality. Whether that is before the development (i.e., what we can actually do) or after (i.e., what we actually accomplished).

Tanktalus
A: 

Programmer X broke it, can you fix it?

Seriously.

pearcewg
+2  A: 

Badly-specified ones.

Rob
Hey -- you get _specs_ ??? :-)
Adam Liss
+1  A: 

Can you build a utility that will retrieve my lost password?"

There is only one correct answer to this: If I could, we'd be out of business.

Adam Liss
+1  A: 
  1. Make it modular.

  2. "Cant you just use the code from our CRM-system in the cashier-application to handle customers?" No. "What? Didnt you built it modular?"

  3. Add multilanguage support. I know we told you to not build it, but you should allways "prepare" for such extentions.

  4. Dont put to much time on the "fluff" (error handling, user friendly GUI, data validation) this is only version 1, you can do that when all funtionality is in place. Then after release. "WHAT? There is no data validation!!"

Stefan
A: 

"Write some UI to help customers use part of the app/edit some data/whatever."

"It must expose the full array of configurability so all our customers can use it to do anything and everything they might want, including the one with five PhD's in rocket science. It must also be easy enough to use that all of the rest of them can use it intuitively, despite having never read the manual and having no idea what it's about."

Sure. No problem. That's what you asked for the last time as well...

Peter
A: 

-- PHB: "This is the most important feature in the world."
-- Me: "But it will clutter the code and make everything less maintainable"
-- PHB: "Everybody will hate us if we don't do this."

A month later..

-- PHB: "Why the hell did we do that for? What were we thinking?"

shoosh