4 ms·
Ask HN: What Should I Do?
(I'm posting anonymously, for obvious reasons.)
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.)
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.
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.
I need ideas. Help me think. What should I do?
- dusklight 15y agoread this http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.ht...
- anonymousgeek 15y agoI 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.
- jcr 15y agoLook 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.
- allwein 15y agoIf 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?ie=UTF8&tag=keysofgeni-20 http://www.amazon.com/gp/product/0131177052/ref=as_li_ss_tl?... 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 15y agoThanks! This is good advise.
- trevelyan 15y agoJust 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 15y agoWe 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 15y agoI 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.