Thursday, February 4, 2010

More ruminations from a sofware developer

Thoughts on software development:

Perceived problem: Lack of communication (Problem is communication, but it starts higher level than the developer--where I have to spend my day-to-day to make ends meet--and they don't):

1) If I'm wearing the PM hat then I can easily figure out what the client wants and figure out if a solution is possible. I'm not getting paid any commissions on jobs that I pitch, though I do (at least in the proposal writing part) a job of a salesman.

2) As a developer I re-engineer a culmination of multi-year mountains of spaghetti code and come up with an elegant and innovative solutions.

3) We deliver our clients Rolls Royce for the sticker price of a Chevy.

4) Unfortunately Rolls Royces are hand built and take longer to build than Chevys.

5) Meanwhile the client, in their new rolls forgets that before they had the Rolls, they were riding a bicycle with a loose chain.

6) Then we move to the next client to build another hand built car while the old project drives off to wherever.

Cases in point:

1) Client A -- How can the CEO not appreciate us completing the outward facing website tie-in to the day to day database, which had many false starts before I took over the project and was a monumental business success for implementing a communication/management platform between client and their customers. Client has since hired new developers who inherit the same problems/complexities and the partnership is not severed, but there is a rift which no one works to repair. We should be working hard to get the project back.

2) Client B -- Why would a company look for an outside vendor to provide expensive CRM support for their sales force after we built a custom catalog site for them with multiple levels of access and pricing, photos, which is dynamically driven and flawless in operation for several years. Now that they've dropped the CRM company who is working to get the business back? There are big opportunities, but no one is following up.

3) Client C -- Who is the CEO or CTO to ask us come up with a replacement for a mountain of undocumented spaghetti code combines 10 year old logistic software, ms access, and a volitile asp site on top of it, a program that has become so unwieldy that no one even wants to touch it because of how unstable it is. And then after they choose the budget and the time-frame wonder why it took so long to get to where they are now? ...they fail to grasp that the system we are delivering is meant to last another decade.

4) Client D -- how can the owner bicker about rates when I re-engineered his primary download process from something that took hours each night for years and now takes less than 10 minutes and has a web front end and has active monitoring and is stable and ... So if he can hire a database programmer for $75K a year he won't be getting the support of a company with real application development expertise (back-end, tech, front end, web). If he interviewed a hundred developers, he'd be lucky to get one with as much and diverse experience and doubtful they'd be as talented. There are an unlimited number of opportunities.

6) Client E -- taking a handful of pdf pages and as many excel spreadsheets to develop a cutting edge e-commerce site? Extracted thousands of technical drawings from pdf pages and linking them with third party database incorporating competitive model lookups and custom search/filtering. Could strong after delivery communication yield more work? Sure.

7) Client F -- Took a couple of graphic designer's pages and a spreadsheet with 30K rugs and made them work seamlessly with an off the shelf e-commerce package (product cart), in which the whole database can be updated in a batch dts importing ms excel into sql server dynamically adjusting to any number of different brands, collections and sizes. Automatically adding free pads and options--working around existing framework.

8) Client G -- not done by me, but could be much better than is. The little work I do for them is still patching up average to below average work done by other developers.

9) Client H -- e-commerce site waiting for a developer

10) Clients I &J -- casualties of being spread too thin.

11) Client K (own site) -- tons of possibilities

Areas for improvement:

A. Could I speed up programming time? It goes against my character to deliver less than the best I can. If clients want something quick and cheap then I'm not that person.

B. Could I improve my skills as a developer? I don't know anyone else who has the drive or energy to learn new languages/platforms/systems at the same rate as me. Just as you are at the forefront of technology solutions, I am at the forefront of application development. So yes, but that comes naturally.

C. Could I improve as a project manager (communicating project schedules, expectations, budgets, constraints, risks) with the clients? Of course, but holding the client's hands takes a back seat when I'm busy juggling hundreds of parameters and business rules that have to get coded with extremely limited resources. I end up being either schizophrenic or bipolar, take your pick.

D. Could I anticipate current client near term and future business opportunities. Of course if I knew that I had some sort of incentive and the support to get projects completed.

E. Could I take existing products and leverage the research and development put into past successes and package them for easy distribution for new clients/cross selling existing clients? Of course, if I had some self-interest in the results.

No comments:

Post a Comment

Older Posts