Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

About 8 months ago I was hired as the sole developer at a small company to take on a certain project. Although there are other small projects that come up from time to time, I've been spending about 95% of my time over the last 7 months working on this project. At the rate I'm going, I think it will be at least a year and a half before I'm done with what we all hoped would be accomplished within two or three months. My boss seems to be aware of this; it would be impossible not for him to be based on what he's seen so far.

One reason the project is taking so long is because I keep having issues pop up. This project deals with millions of records stored in dozens of different tables. Although I'm as competent as anyone when it comes to databases, I'm by no means a database expert or DBA, so I can't look and a slow query and immediately say, "Oh, yes, it needs an index on X, Y and Z and we need to shard this table and we need to tweak the max_foo setting in the config." It takes me time to figure out what's going on. So far I've solved almost every significant performance issue I've come across, but there are a lot of unique challenges and I can't just become an expert overnight. And the performance issues that haven't been "worth" solving---because it would take me three days to make something run just a touch faster---are peppering my day with all these annoying little waits, where I get held up for 30 seconds but it's not like I can go do 30 seconds worth of meaningful coding somewhere else during that time.

It's possible that this is the kind of project that really deserves a team of 3 developers and a DBA. It could also be that a better or more experienced programmer could handle this project on his own in a reasonable amount of time but my current skills just aren't equal to the task. In any case I feel like I'm in way over my head. I know I can eventually get the project done but it might take a ridiculous amount of time.

It's also quite lonely and discouraging to work on a giant project by yourself with no one else to discuss it with. I'm sure at least some other developers know what I mean. There's no reason for anyone else at the company to care one tiny bit about the ins and outs of the system, and there's no reason for any developer outside of the company to care about the project. The isolation combined with the slow pace is a real motivation killer.

Any advice?

share|improve this question

closed as not constructive by Mark Trapp Sep 28 '11 at 7:48

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

63  
Have you considered telling your boss exactly what you told us? –  blubb May 13 '11 at 14:25
4  
A single person can only do so much in an 8 hour day –  Spooks May 13 '11 at 15:30
3  
@jason ... I've also considered just straight up saying, "I've come to the conclusion that I'm not qualified for this job. Let's talk about how we can get this project done, keeping that in mind." ... please don't say that –  aceinthehole May 13 '11 at 18:19
5  
That was my gut reaction. I dont know your boss, but I would think youd be better off if you instead focussed on the specifics of what is going wrong, instead of "I am not qualified" how about "Some weakness in my experience are contributing to problem X, here are some potential solutions". Maybe a consultant, maybe send you to some training. Ive felt like I was over my head for the first couple of months of every job I've had, but I figured it out. I think we all suspect in the back of our heads that we are not qualified, but my guess is, is that you probably are more capable than you think. –  aceinthehole May 13 '11 at 18:37
5  
"I'm experiencing the impact of a knowledge gap in these specific areas" is one conversation. "You made a mistake hiring me" is another. Although you may feel like the latter sometimes, reality is closer to the former. And, btw, we've ALL been there. Hell I've been doing this for 13 years and I'm STILL sometimes there. –  Dan Ray May 13 '11 at 20:13
show 9 more comments

13 Answers 13

up vote 50 down vote accepted

Every programmer I know has been in your spot at least once. I know I have. It's a killer, for sure. The way I get to feel better is to take the problem to the boss, explaining it to him in exactly the vivid words you've so forcefully and heartbreakingly used here in your post.

Yes, of course your boss has noticed but he might not know that it's not your fault. He wants to know -- he needs to know -- what's going on with you. And he has a right to know, in my opinion.

If you can tell him, openly and honestly, what the technical stumbling blocks have been I believe that he will respond in a helpful way. Maybe you can get better tools, or some part-time consulting help on the DBA part, or even some time off so you can re-introduce some of your old interests into your software-burdened life.

No real boss wants a discouraged and -- face it! -- partly paralyzed contributor. It's a bitch, I know, and it's hard to go to the boss with this story (particularly, you might think, this late in the project -- why the hell couldn't I tell him sooner, damn it!) but it will be damaging to you if you don't. At the least, you won't feel quite so discouraged.

If he is not encouraging, well, at least you can cut your losses and get out of there.

share|improve this answer
1  
I agree with 100% of what you said. Fortunately I don't feel bad about coming to him this late in the project. He's known all along that I'm as unhappy with the pace of development as he is. The conclusion that I'm probably not qualified for the job is a relatively recent one. Anyway, I think this is smart advice. Thanks. –  Jason Swett May 13 '11 at 14:41
4  
Since I'm selecting this as the best answer, I'll put here what I intend to do: I'll see if I can work with a DBA to get some of those issues straightened out. If things haven't taken a dramatic turn for the better after that, I'll tell my boss I don't think I can handle the project by myself in a reasonable amount of time and we can discuss how to proceed. –  Jason Swett May 13 '11 at 14:46
17  
@Jason Swett -- Wait! From what you've told us, you are not unqualified! You've worked right along, you haven't given up, you haven't quit. On the contrary, you are much more qualified than anybody else in or out of your company! You are like gold, no matter how slow and muddy the going is. If he didn't have you he wouldn't have anybody and the project would die. Please consider the possibility that you've reached this conclusion (a false conclusion, imo) for reasons that have nothing to do with your abilities and qualifications. –  Pete Wilson May 13 '11 at 14:51
3  
@Pete: Interesting perspective on the qualified part. Here's how I look at it: if somebody hired me to build them a log cabin, I could do it, eventually, but having very little construction experience it would take me much longer than an experienced carpenter. I wouldn't consider myself qualified. That's not a fault of mine, just like it's not a fault of mine not to be a database expert. I'm not trying to disagree with what you said but that's the angle I'm coming from. In any case I appreciate the encouraging words and I have always intended to press on until completion or termination. –  Jason Swett May 13 '11 at 15:31
2  
@Jason Swett I am in lock step with @Pete Wilson. While you may feel unqualified for this role, you are not. Unless you misrepresented your skills during the interview, the hiring leader knew what they were getting. The fact that the situation is so dire is a result of prior bad practices. You're doing the right thing by raising the issue. In this instance you're the hero. Stay strong and remember this lesson when you're in charge. –  Ray Mitchell May 13 '11 at 23:40
show 6 more comments

I'm tempted to say "learn how to do performance tuning" for which there is plenty of good advice here and on stackoverflow.

But there's a bigger issue here. You need to lay it all out to your boss, and give him/her options, such as bringing in a consulting DBA. Never hide anything from your boss - it will only reflect badly on you when the stuff hits the fan. If you're in over your head, it's probably not your fault. In any case, that's what managers are for.

share|improve this answer
2  
+1 for "that's what managers are for" –  Mark May 13 '11 at 18:02
add comment

I was in a similar situation early in my career. Solo developer, etc. What we ended up doing is bringing in a hard core database expert for a month to get the database tuned and restructured. It will cost a bit to do that, but in the long run it saved us a ton of time which saved us money.

As to not having people to talk to or bounce ideas off of, you'll probably have to do that on your own time. Forums, user groups, SE, etc.

share|improve this answer
    
How long did you work with your database expert? –  Jason Swett May 13 '11 at 14:35
1  
As I said, about a month. I had inherited the database(SQL Server 4) to go with the app they hired me to build. –  msvb60 May 13 '11 at 14:39
    
Woops, I somehow missed that. –  Jason Swett May 13 '11 at 14:42
add comment

My advice is that you stick with it. If your company is aware of the problems you are facing and the amount of work resting on your shoulders and they are okay with it, then I don't see the issue. You could suggest for them to hire another developer or DBA if you really must get things moving quicker, but if they are okay with the amount of time you will need to complete the project, then just keep working at it. You will learn a lot, trust me.

share|improve this answer
add comment

Learn how to read an execution plan (SHOWPLAN / EXPLAIN / etc.).

No, seriously; I don't mean to offend, but it should not take you 3 days to optimize a query or index.

If it does, then I suggest you (a) use the vast resources available to you on the internet to teach yourself how, or (b) ask your employer to send you out on a training course. If a 1-week course is going to triple your productivity, then they should be happy to pay the $5000 or whatever it costs.

If the performance issues are design- or architecture-related then that's a different issue. Obviously you need to communicate that to your employer/manager. The sooner the better. Don't try to be a hero. If the system you're working on is demonstrably a piece of junk then - assuming you have some proof of this - you should have no problem managing expectations and/or getting extra help. Just communicate.

share|improve this answer
add comment

I have been in your situation before, in a team of two coding on a large project that somehow grew outside our handling. We also had an large database, lots of requests which resulted in quite a stressful project.

We ended up hiring a database expert for a while, working besides us at the project. Not only was this cheaper in the long run, it educated us alot creating even more value for the company.

share|improve this answer
    
Interesting. I forgot to mention that I asked my boss recently if we could do that. He said to go ahead and at least find out how much it would cost. How long did you work with your database guy? –  Jason Swett May 13 '11 at 14:25
5  
Related: hyperboleandahalf.blogspot.com/2010/04/… :D –  kivetros May 13 '11 at 14:26
    
Beat me by this much. –  msvb60 May 13 '11 at 14:26
    
We ended up working with him for about 1 week, what he did was investigate the application and the database design. He reported suggested changes which we discussed. And ended up implementing - with success. –  Wesley van Opdorp May 13 '11 at 14:29
    
@Jason: If you need an estimate of how much time the DB person will need, ask him/her. –  Mike Dunlavey May 13 '11 at 14:31
add comment

Different from everybody else, I was on the very same situation and I got fired after 1 month of failed attempts to do the job of a DBA. Granted, my situation was peculiar for few other reasons, but maybe I can add a very different perspective here.

Repeating everyone else: talk to your boss. And talk to your co-workers. Give daily reports. Let it clear your situation to everyone. Show the effort. Most of the times, that's all that really matters.

In my case I didn't do it enough. But it wouldn't be enough anyway - I was just not getting paid well enough for all the pressure and requirements needed. I failed at accounting that along with too many things in my life happening all at same time.

Thus, another thing to consider is how much you're getting paid and how good your personal life is in general. It will be much harder to take the pressure if you're not very well structured - get your own home, get someone back at home just to be there when you get a cold or resistances down for any reason, stuff that many people take for granted. If you're in the kind of project that needs extra hours and weekends, you'll need every support you can get - and that will not be accounted in yours or anyone's salary.

share|improve this answer
add comment

I have no idea what language you're using etc. but have you considered pointing to a different, vastly smaller database (in terms of # of rows of data)? It's not uncommon to have a separate db instance for dev, qa, and production. If you can do this, you take database performance issues (and presumably bad data issues) out of the picture and you can focus on developing the core functionality of your app, whatever that is.

It's entirely possible that your boss can hire a separate DBA to optimize the indexes and queries, and that can be done in parallel to your work.

EDIT:

To answer this in a more big picture way, you should schedule a meeting with your boss. Tell him that you'd like to do things slightly differently. Break your project down into tasks and provide estimates for each task (try to make the tasks completable in about 1-2 weeks). If you can't estimate a task, tell your boss. Tell him you're providing these estimates so you both can come up with a realistic project timeline. Tell him why you can't estimate certain tasks ("I don't have the background in this area so I can't provide a realistic estimate."). Ask him for help in coming up with solutions to these blockers (hire a DBA, send you to training, etc.). Make sure each task is a deliverable that can be demoed to your boss. Schedule a time every 1-2 weeks to actually demo the feature. If you miss an internal deadline on a task explain to your boss why it was missed, how to improve process, and what your new estimate is.

If you do these things your boss will have no reason to be unhappy with your progress. Even if it takes a year, it's a timeline he agreed on, and you'll be delivering on schedule every 1 to 2 weeks. He'll see the incremental results each week.

There's a very real chance that the timeline given (2-3 months) was an estimate that was arrived at without much thought and with some vague hand waving. So essentially you're re-negotiating the timeline and getting buy-in from your boss.

share|improve this answer
add comment

Easier said than done, but stop worrying about schedule problems. That's your manager's job, not yours. Your job is to do as much as you can do, make sure your manager doesn't just "seem to be aware" but explicitly spell out your issues and estimates in status reports, and to tell your manager what you would need from him if he asks you to do it faster.

If he doesn't give you what you need, you can assume he has considered the business implications and is willing to trade off the deadline for the lower short term costs. This is frequently the case in small business/lone developer situations. Good managers consider schedule slips a technical hurdle rather than a sign of incompetence, and software development is notoriously difficult to estimate.

share|improve this answer
    
If he's the sole developer, he should take on some responsibility for scheduling. I.e., he needs to be part manager. –  Ben Hocking May 13 '11 at 14:49
    
@Karl Bielefeldt -- To me, it's impossible (not just easier said than done) to stop worrying about schedule problems. See, I have the idea that many developers -- maybe the very ones whose work we value -- define themselves partly or largely by how they keep to their promises (a schedule being a kind of promise), as if that alone were the measure of their skill and their worth. So when they just forget about the schedule, they have to just forget about their intrinsic selves: impossible to do, imo. Better maybe to say "the unforeseen problems aren't your fault" (also hard to accept). –  Pete Wilson May 13 '11 at 15:11
    
@Ben, agreed to a point. No one should be held responsible for schedule who is not given discretion over scope. –  Karl Bielefeldt May 13 '11 at 15:38
1  
@Pete, I see where you're coming from. My point of view is that the unpredictable nature of creating and debugging something brand new means not keeping to my estimate isn't my failure as a developer, it's my failure as an estimator. The latter is often much more difficult to get right, and thus easier to accept failure in. Also, people shouldn't make promises they can't keep. That's why it's called an estimate, and also why I always qualify my estimates with a confidence level. It took me a while to get there, but I'm happy going home if I know I gave it my all that day. –  Karl Bielefeldt May 13 '11 at 16:44
    
@Ben: if you have no experience in the problem domain, and you don't know what you are going to encounter, you have no basis on which to base an estimate. So your estimates will be wildly off the mark –  Dov May 13 '11 at 17:53
show 2 more comments

I hear you. I was in a similar situation just over a year ago.

You must tell your boss exactly how you feel, just as you have explained it to us. Plan out what you are going to say, and ask him for a chat when he has some time free (tell him how long you expect it'll take so he can set aside the time for it).

As others have said, tell him exactly what you are finding difficult. If he's technically minded, tell him in detail exactly what is difficult. If not, don't throw jargon at him but try to make him understand what aspects of the job are difficult.

Provide him with some possible solutions. You've already recommended he hires a DBA. Is that enough? Have you made it clear that the company (and you!) have an urgent need for extra staff - maybe another developer as well, not just a DBA? Unless you make it clear it's got to breaking point, he may not realise the urgency it so obviously has.

You sound like you're feeling the way I did a while back. It -really- got to me, and actually affected my life outside work. My relationship with my wife suffered and once I realised that, I just had to change jobs. I tried to leave work at work, but it's so much easier said than done when you know you're going to be back in that hellish situation in just a few more hours. My advice: take action now. Don't wait any longer. Talk to your boss, give him a chance to do something about it. If nothing can be done, or won't be done, then you really must look out for yourself and change jobs. I was extremely lucky and got offered a job with a far bigger company with more experience and support for the employees (I went from a local company of ~10 people, only 3 of which were in the office I was in to an international company of tens of thousands).

Keep your sanity. Don't let it get to you. You will get through this, one way or another.

Good luck.

share|improve this answer
add comment

See if your boss knows a DBA in another company who owes him a favor, or would grant him a favor, have that DBA sit with you or over conference call for a couple 1-2 hour sessions. I was in over my head(I'm a developer tasked with building out a drupal infrastructure--database crashes, and another task to start up replication) and just a couple sessions with a real DBA helped a lot. Also solves your isolation problem. After just those 2 sessions I went all command line and wouldn't touch phpmyadmin anymore, no need.

share|improve this answer
add comment

That is part of life in IT. And that is why 99% of the drones don't volunteer to do anything new.

This does not make you a bad person or a loser. It does show you and everyone in the company that you cannot do this job.

Your escape hatch has passed. You should have never got into this situation or jumped out as soon as you saw the technology was over your head.

I have seen people in your shoes - and they all got fired.

Find another job while you still have this one - that is your only option. And learn from your mistake of taking on something that you cannot do.

share|improve this answer
add comment

When you wake up everyday, just say "This is a brand new day, and I will make the best of this day". Before coming to the office, which has crappy coffee, head to Starbucks or your favorite coffee place, get an Americano and start coding. It will help you succeed.

Embrace the challenge you get at work and make the best of it.

share|improve this answer
4  
It is not a solution, it is a non-tangible 'work-around', which obviously is not what the poster is looking for. –  WeekendWarrior May 13 '11 at 20:01
2  
@WeekendWarrior Fair. But a wrong or a poor answer is still an answer. Sorting the good from the bad is exactly what downvotes are for. –  Anna Lear May 13 '11 at 20:18
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.