

Ask HN: What Should I Do? - anonymousgeek

(I'm posting anonymously, for obvious reasons.)<p>I joined a very small company 3 weeks ago. They sell a bunch of stuff online, particularly electronics. The implementation of the site is horrible, but it works and gets around 10K unique users per day. They are paying me around $15,000 above the South Florida market for an experienced software engineer, which is the same I was making in my previous company. (The South Florida market sucks, by the way.)<p>I joined this company because it looked like it was a great opportunity to have a tremendous impact on a business (and also because I hate working for big corporations). I want to take this company to the next level and make it something like Zappos. Something cool. Ten thousand unique users per day is a lot of traffic to start with, so I feel that I have a lot of power in my hands.<p>The problem: I’m the only engineer. Basically, everything technical in this company is in my hands. The website sucks and I concluded that it has to be rebuilt from scratch. I also have to work on little projects that the owners need now, that are directly linked to profits. I still haven’t figured out an approach to rebuilt the site while it’s working (remember it’s horrible and I’m not talking about the UI: nothing is designed in the backend. Things seem to have emerged spontaneously as if by mutations and natural selection) but my gut feeling tells me that it would take me at least a year. So, the combination of what I have in front of me, my ambitious goals, and my “loneliness” make me feel somewhat overwhelmed.<p>I need ideas. Help me think. What should I do?
======
trevelyan
Just remember those 10,000 uniques are being driven by that spaghetti code.
You could rewrite everything and make it better for yourself, but it's hubris
to think that any upgrade is going to be perfect and you could easily miss
some small features or add bugs that make things worse for all those users.
And as allwein says, small changes that improve profitability are more
valuable than bigger changes that don't.

My advice is to implement changes incrementally. When you have to rewrite,
modularize at the same time. Then you can upgrade components piece-by-piece
and easily rollback if there are problems that affect the profitability of the
business.

~~~
anonymousgeek
We are in total agreement. Now, skewing the topic a little: what would you do
if you were in charge, alone, of the technical side of an online store with
10,000 uniques/day and a very cool domain name? Also, the owners of the
company listen to you and like you. Crazy ideas are welcome!

~~~
trevelyan
I don't know the market, but I'd aim really big and build your brand and
community. Give the owners a couple of small wins before you stake your
reputation on something really big and ask them to buy into something risky.
Good luck -- sounds like a fun opportunity.

------
allwein
If you haven't worked with legacy systems, you may want to check out "Working
Effectively With Legacy Code"

[http://www.amazon.com/gp/product/0131177052/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/0131177052/ref=as_li_ss_tl?ie=UTF8&tag=keysofgeni-20)

You'll want to make your boss's profitable projects your top priority. Then
gradually go through and start fixing the legacy problems bit by bit. Don't
rewrite the entire system in a year, start rewriting/refactoring/fixing
individual pieces of it one piece at a time.

I had a municipal tax management application that was a complete mess full of
spaghetti VB code, multiple instances of similar
queries/calculations/interfaces sprinkled all across the app in different
places with different implementations. I even had one screen with a 40,000
line event handler. Over the course of 2 years, the entire thing was whipped
into shape, additional functionality was added, and now it's easy for the new
maintainers to work with it.

~~~
anonymousgeek
Thanks! This is good advise.

------
jcr
Look at the problem your company has and determine how common it is in other
companies. In your free time, build a solution to said problem. Your current
company could be come your first customer.

------
dusklight
read this

<http://www.joelonsoftware.com/articles/fog0000000069.html>

[http://steve-yegge.blogspot.com/2007/01/pinocchio-
problem.ht...](http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html)

~~~
anonymousgeek
I had already read Joel Spolsky's article in the past and it has come to mind
several times these days. I agree with Spolsky but this is a different thing:
I have to maintain and expand the code we have and I want to steer the website
in a new direction.

I also liked Steve Yegge's list of essential features of software systems
(thanks for the pointer), of which my legacy system has none.

