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.

After not really working on my pet project for a while, I discovered Stackoverflow and upon perusing it more intensely I was quite amazed.
I'm a bit of a perfectionist, so when I found eye-openers here highlighting many of the mistakes I made, I first wanted to fix everything.
However, it's a pet project for a reason: I'm self-taught and I'm studying psychology, so programming skills can never become priority one (though it often helps, even in this field).

Issues that stuck out were

  • numerous security issues (e.g. CSRF-prevention and bcrypt eluded me)
  • not object-oriented (at least the PHP part, the JS-part mostly is)
  • no PHP framework used, so many of my DIY takes on commonly-tackled components (auth, ...) are either bad or inefficient
  • really poor MySQL usage (no prepared statements, mysql extension, heard about setting proper indices two days ago)
  • using mootools even though JQuery seems to be fashionable, so there's more probably always going to be better integration with services I'd like to use (like google visualization)

So, my SO-induced frenzy turned into passivity. I can't do it all (soon) in the rather small amount of spare time I can spend on working on my project.
I can leave some of the issues be in good conscience (speed stuff: an unfinished & unpublished project will never become popular, right?).
No clear conscience without good security though and if I don't use a framework for auth and other complex stuff I'll regret having to do it myself.

One obvious answer would probably be going open-source, but I think the project would need to become more impressive before others would commit to it. I can't afford to employ someone either.

I do think the project deserves being worked on, though. How should I tackle it anyway? What's the best practice for little-practice people?


I couldn't edit my question, because it was transferred. I would have emphasised, that I have a working product, but like so many pet projects it will never be finished, so I intended to make things easier for myself in the future too. Some of you mis-guessed my problem as being afraid to get started, but I couldn't react up here, sorry.

I'm surprised that no one seems to think that using a framework would be a good way to relieve myself of some responsibilities (such as implementing an authorization module that conforms to these specs.
Or is it just too hard to turn to something like an MVC when you have been working process-oriented before?

share|improve this question

migrated from stackoverflow.com Jan 14 '11 at 18:44

This question came from our site for professional and enthusiast programmers.

9  
Don't sweat the small stuff... Get it working first, the rest is Future Ruben's problem :) –  Fosco Jan 14 '11 at 18:57
    
Actually, an open source project with code that is too pristine will fail to attract developers. –  Berin Loritsch Jan 14 '11 at 20:52
    
@Berin Is that because it will look like too little is left to be done, or because developers want a project they can improve the quality of? (Too complete in the first case, not good enough in the second.) –  Mark C Jan 15 '11 at 10:05
1  
+1 For using Mootools and seeing through jQuery's fashion –  dukeofgaming Jan 15 '11 at 10:37
1  
Truth be told both of those come into play. People will contribute where they like the project, they perceive a need, and it's a need they can fill. –  Berin Loritsch Jan 15 '11 at 12:11

7 Answers 7

up vote 12 down vote accepted

Out of the issues that you've listed:

  • numerous security issues (e.g. CSRF-prevention and bcrypt eluded me)
  • really poor MySQL usage (no prepared statements, mysql extension, heard about setting proper indices two days ago)

Those two would be my first priority.

  • no PHP framework used, so many of my DIY takes on commonly-tackled components (auth, ...) are either bad or inefficient

Live and learn. So long as you've taken care of security, I wouldn't worry too much about this, yet.

  • not object-oriented (at least the PHP part, the JS-part mostly is)
  • using mootools even though JQuery seems to be fashionable, so there's more probably always going to be better integration with services I'd like to use (like google visualization)

Who cares? It doesn't have to be object oriented in order to be correct. Nor does it have to be jQuery.

share|improve this answer
    
most helpful answer even though I actually think I'll give CodeIgniter a go - I'm worried that designing an auth module according to the aforementioned specs would be a bit over my head, so let's hope investing pays later. –  Ruben Jan 15 '11 at 20:10
1  
@ruben I've heard good things about CodeIgniter, though I have not used it much. And, yes, generally speaking authentication is something that may be better left to a good framework that's already solved the problem. –  George Marian Jan 15 '11 at 22:20

best practice is git er done!

share|improve this answer
3  
Totally. The worst coded project is the one that isn't finished or doesn't work. And this is computer programming, not stone carving. You CAN fix the rough spots later (or rewrite it). Although, you'll probably want to pay some attention to your security problems. –  Bryan M. Jan 14 '11 at 18:51
    
Thanks, but I think I'm in the stage of choosing which rough spots warrant fixing. –  Ruben Jan 15 '11 at 19:25

Ship it anyway

As put by Jeff Atwood, one of the creators of SO - Version 1 sucks, but ship it anyway!

In the face of the inevitable end-of-project blues -- rife with compromises and totally unsatisfying quick fixes and partial soutions -- you could hunker down and lick your wounds. You could regroup and spend a few extra months fixing up this version before releasing it. You might even feel good about yourself for making the hard call to get the engineering right before unleashing yet another buggy, incomplete chunk of software on the world.

Unfortunately, this is an even bigger mistake than shipping a flawed version.

Instead of spending three months fixing up this version in a sterile, isolated lab, you could be spending that same three month period listening to feedback from real live, honest-to-god, dedicated users of your software.

share|improve this answer
1  
I think that only applies if they stay dedicated users of your software. If v1 is crap, then people will ditch it, and your reputation is in the mud. –  Orbling Jan 14 '11 at 21:03
    
@Orbling I don't think so, why can't you go get new users with v2? Of course, this is all very simplistic, but reputation isn't terribly important (or even existent) unless you are huge or in a niche market. –  NickC Jan 14 '11 at 21:34
    
@Renesis: Rather depends on the rate at which word gets around. –  Orbling Jan 14 '11 at 21:58
2  
THIS brought memories back of very bad beta-software in the old days. You cannot just ship ANYTHING –  user1249 Jan 15 '11 at 9:42
1  
@Renesis, people remember. If version 1 was absolutely horrible why would you even consider spending more time on version 3? –  user1249 Jan 15 '11 at 9:42

You are basically having a planning problem, not a technical problem so I read your question as

What absolutely NEEDS to be done, and when?

What is most important to fix? How long time will it take? What do we have to cut to reach the shipping date?

I don't know if you ship, being a pet project, but perhaps you should? Having a tight deadline works wonders for prioritizing and getting things done.

share|improve this answer
1  
Thanks for helping me see what part is important! –  Mark C Jan 15 '11 at 10:02
    
upvoted, but for me, shipping isn't urgent (no money or fame to be had) and I was more concerned that I wouldn't be able to maintain and improve it later if it wasn't done properly. –  Ruben Jan 15 '11 at 18:54
    
@Mark C, you are welcome. As always feel free to write a better answer. –  user1249 Jan 15 '11 at 21:19
1  
@Ruben, if you don't ship it, then it is just for your own pleasure, and isn't it nice to have a lot of tasks to choose from when you have time to spare? –  user1249 Jan 15 '11 at 21:20
    
I hope you did not misunderstand; I was tongue-in-cheek pointing out the nice large text, and afterward I realized that really did help see what the important issue is. –  Mark C Jan 19 '11 at 5:32

Could you write out the top ~20 or so issues and then go through the list and prioritize which you want to get done first and try to do this in a piecemeal fashion? "Divide and conquer" would be the heuristic here as smaller problems can be easier to tackle.

Another thought in this would be to consider understanding from your personality type if a style of development suits you better,e.g. using the MBTI to find your type and then recognize what strengths and weaknesses such a type may have.


Right now you seem to have a bit of "analysis paralysis" and so getting moving is more desirable as it least then you can course correct afterward. MBTI was an example where you could just as easily take other personality typing systems like Enneagram, Strengths Finder, redemptive gifts, F-Score, or others as a way to see what works and doesn't work for you. If you like the big picture but not the details, then it may be advisable to have a friend cover that part for you while in the flip, a friend may give you a big idea to resolve some current difficulty. The big picture is indicative of an intuitive mindset while the opposite is sensing, where each has its own advantages.


While "analysis paralysis" may not be how you see your situation, I do see the paralysis at least if you are doing nothing. Whether you are just waiting for inspiration or considering options is more a matter of semantics to my mind.

For some people, testing in various areas with a self-assessment will likely work. I doubt I could quantify some precisely. However, I have gone through these systems and found that it was useful for me. While I don't have all the answers, I do have suggestions that may work.

share|improve this answer
    
Upvote for actually suggesting a strategy, even though I don't think it's for me: I'm actually trying to course correct now. It's also not analysis paralysis, even though that may be a catchy term. I'm in this for the long haul and I'm trying to make things easier for myself in the future. –  Ruben Jan 15 '11 at 19:37
    
Because I'm a student of personality psychology, I feel compelled to say something about the tests you suggest. Most self-help literature is not empirically founded. Do you really think, people tested whether Enneagram/… results would improve (programming) productivity if people followed their recommendations? A more empirically validated test like the Big 5 or the Wilde intelligence test is able to predict performance, yet I haven't heard of research as specific as matching programmer "types" to a specific regimen. Not all is vapid & astrology-like, but be wary of the evidence. –  Ruben Jan 15 '11 at 19:47

Coding correctly (and yes, there is such a thing) takes time and practice.

When just starting out, getting a project to run is your number one priority. If it doesn't work, no amount of learning "best practices" are going to help you.

However, as time goes by you are going to pick up a few tricks and integrate them into your style. At some point these become embedded in how you approach programming in general. Instead of worrying about sql injection, you'll automatically just use parameterized queries.

Instead of worrying about not using a framework, you'll learn which ones are worth while (note, most aren't).

I guess the point is, don't get overwhelmed. Just pick one thing and do it right. Once you have that down, pick up something else. In the meantime keep going!

share|improve this answer

Because this was migrated (which makes a lot of sense, I'm sorry for not posting here in the first place), this question is no longer "mine". I can't comment on it or edit it (or select the best answer).
I'm not sure how to deal with that, maybe it can be fixed? My accounts were automatically linked, but after the question was moved.

@JB King: Divide and conquer would for example preclude implementing something like CodeIgniter, wouldn't it and cost me more time in the long run?!

Also I heavily doubt the MBTI's validity and theoretical background and so should you ;-) there are better personality questionnaires, but I don't think any of them can stand the predictive stretch to help me find my style of development (but I'd give it a look).

Also @Fosco and @chris: It is "done" and I have beta testers asking me to go public. I will add features though. I won't go public unless security is tight, but implementing a framework for that seems efficient?! + I AM Future Ruben ;-)

share|improve this answer
    
I'll update my answer in this case. –  JB King Jan 14 '11 at 20:50
    
Ruben, assuming that you've used the same OpenID for both accounts and they are associated, it should resolve itself in 24 hours. If that doesn't work, email the team. (The email address is at bottom of the page, labeled "contact us.") –  George Marian Jan 14 '11 at 20:51
    
Again, thanks for all the replies. I will deal out upvotes as soon as my accounts are linked :-) I feel as though I gave you the wrong impression. I could "ship" my product now (though I would have to implement something like TankAuth for my conscience), but I'm in this for the long haul, so I also wondered whether going the –  Ruben Jan 15 '11 at 13:48
    
… extra mile (CodeIgniter, ...) was a good idea (in the sense of being able to add features and collaborators more easily in the future). JB King's analysis paralysis bit is insightful, but I think more analysis at the start might have helped. –  Ruben Jan 15 '11 at 13:55
    
@George Marian: And like clockwork 24 hours later I'm linked ;-) –  Ruben Jan 15 '11 at 18:57

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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