

Am I lazy? - mrcozz

OK so here's the thing. My girlfriend is passionate about designing her own jewelry line. She already has a (Blogspot) website and a nice array of clients, so things are going pretty well on that front.<p>The natural next step would be an own website, including webshop; that should give her more flexibility and would definitely be perceived as more professional than the current blog/shop setup.<p>With me being a software engineer, she turned to me and (as I am a good guy) I want to help her as good as I can. I basically gave her two options. The first option was to create her webshop using Shopify, since they basically have everything she will need at an OK price.<p>The second option was that I would develop a very simple webshop with just the basic functionality she would need, like managing products and orders.<p>Of course she chose the "free" option and because I wanted to learn Django, I was actually glad she did.<p>So I started of developing some basic stuff and gathering "requirements". The thing is, when I started developing ten year ago, this stream of requested features was all fine with me, and I was sure it could be done. I had a "can-do" attitude back then...<p>Now when I hear stuff like "Products should be groupable", what I think of is things like "can a product be in multiple groups?", "can groups be nested in other groups?", "are these groupings based on color or function?", "how we will filter this in the UI?", ...<p>An endless stream of derived requirements will fill up my brain and then I just get to the point where I realize this will all take way to much time to implement and I abandon the project altogether.<p>I guess that my "experience" has made me (maybe too) cautious on which projects I will take on and that this fact will limit my results and success on the long term... Have you guys and girls noticed a similar evolution in your career or am I just getting lazy?<p>Can't wait to know what you all think!
======
staunch
Totally normal. You're not lazy. You just haven't learned how to overcome your
own experience yet. Beginners have the advantage of not knowing what pain
they're creating for themselves down the road.

The solution is simple: just dive in head first. Do the simplest and fastest
thing possible. Get something working. Don't worry about extensibility or
maintainability that much. Make a mess and then clean it up.

Some of the most successful software in the world was terrible in its first
versions. Embarrassingly bad.

Also: just use Shopify for this, at least until you've got your own version
working.

------
ChuckMcM
Hah. Yes, you have reached the edge of grey-land where the number of black and
white statements become fewer and fewer. :-)

Yes this is entirely a function of your experience, so now that you know what
can be done your ability to choose is compromised. Its funny because this
happens with anything where there is a surplus of the currency [1]. The short
answer is that the next step on the journey is to prune meta-requirements. You
have this endless tree stretching before you and you start writing the code
where you put blocks in the group and you note how it would have to change if
it would need something more complex and then you stub that off with a comment
like:

    
    
       # this only handles one level of grouping to group further
       # will require a subclass for groups which identify the type
       # and a method for invoking that groups display policies.
    

Then move on. People will be amazed when they come to you and say "Uh, we kind
of want to group by color..." and you say "Ok" and then blam that change is
in. Basically you build your potential into the structure of the code so that
if any of these possibilities are realized you can do them quickly.

~~~
debacle
Chuck, you reference a footnote in your post but I don't see it.

~~~
ChuckMcM
Sorry too late to edit, there is a common problem which is of the form 'too
much currency'. If you consider problem solutions as a choice which are
constrained by the currency available to purchase and you increase the
currency you increase the choices and then you lose faith in the choice you
make. Ok, that sounds too circular, lets try an example.

Lets say you're a techy and you want to buy a motherboard for you new desktop.
If you're poor, you invest a lot time researching motherboards and then go out
and buy the best motherboard you can afford. Often you have to make
compromises but that is ok, you only have so much money. Now you take that
same scenario where you have up to $500 to spend (I picked that to be 'more
money than any motherboard you might put in a desktop costs' number. Now you
go to the local computer shop and you can buy _any_ motherboard and you're
frozen. How do you choose? Often this is a much harder place to be.

The problem manifests itself as too many choices. So once you have too much
money you can't efficiently choose (no forcing function to give up) and once
you have too much experience programming its harder to choose a path which has
known deficiencies, hence the OP's issue. Also called analysis paralysis, but
the enabling factor is that you have enough currency for too many choices.

------
CowboyRobot
This parallels my own experience. I too had a "can-do" attitude 10 years ago
but now just can't be bothered with many things that I used to spend time on.
This, however, is not laziness, it's maturity. You have now reached the level
of maturation in your understanding of technology to know that things you
learn for a one-off project will be forgotten within 6 months. And you are
nearly at the level of maturity in relationships to know that if your
girlfriend is truly passionate about selling her jewelry that she can learn to
maintain her own eStorefront

------
hasenj
I'll quote a tumblrer:

"When you except to run into brick walls you usually don’t go as fast as you
can. When you let go of fear and focus on results, it’s freeing and
effective."

<http://infjdoodles.tumblr.com/post/28056863738/>

Basically, stop thinking about the what ifs. Focus on making something work
and relish the result.

------
arthole
don't reinvent the wheel. shopify is good enough and it's an incremental cost
on each of her sales. how do you feel about maintaining this code if you guys
break up?

yeah... your caution is well founded. she's a client (who isn't paying you, in
this case). And, you don't want to get this client upset if you are too busy
with a paying client to solve her problem. that's not going to be good for
your relationship... is it?

I think your analysis is good, but it needs to go one step further. is your
desire to dive into Django the best option for her long term interest? if she
is your first client for a jewelry designer web-shop product, then cool. but
if not ask yourself what is in her best interest.

And take her out some where nice and romantic after she gets the shopify
website set up as congratulations. and surprise her with flowers, a clean
kitchen, and a make out session so she feels better when she's frustrated that
she can't get shopify to work right.

------
helen842000
When building projects people can utter a few sentences that equate to days
and days of work for you.

Your experience has taught you to check & double check exactly what's really
needed.

You aren't lazy, else you would have persuaded her to use Shopify. You just
don't want your time wasted.

------
olegious
That's why MVPs were invented- define a minimum set of features and stick to
the plan and get something out of the door, then build upon it.

I find that some of the longest product-related discussions occur over
features/edge cases that very few users may need/will seldom occur.

~~~
kls
Agreed, you need to help her understand the value of an MVP given the fact
that you are a single developer and I am assuming using spare time for this
project. She has to understand that the project has to be broken down into
small digestible parts if there is any chance of it getting off the ground.

