Love this. Interested to hear about the underlying technology used. Sounds like building this might be a bit of a nightmare.
HN user
GotToStartup
"Trying to use all the features of a language and thinking a one liner is cool even when a five liner and a one liner is same when compiled into machine code"
Thing is, it's pretty easy to code for a machine. It's REALLY hard to program in a way that other developers can understand you. And, like in literature, using less words to describe something is more often better for the reader.
"Too much jargon, falsely claimed software engineering practices and overly zealous object oriented mentality"
I used to hate all the jargon too but then I realizes it gives programmers a vocabulary to discuss things. When everyone understands the jargon, it makes discussing complex solutions a lot easier. OO can definitely be overused, but honestly 99% of the problems I face are people just writing unmaintainable, procedural code. You're right though, OO can often be less simple (harder to read all at once) but that's the trade off we devs need to balance when writing code.
I don't want to sound condescending but is it possible you are making excuses for learning hard things. Maybe it's the people you work with who are pushing it down your throat the wrong way. Maybe you already know these hard things but just haven't had to use it so you're giving up on the ideas. Or maybe I'm still in the cynical phase of my life.
This is awesome! What made you build this, I would have thought the market were too saturated? Have you considered blogging about your process? Would love to hear about what marketing you did to achieve where you are at today.
While I agree that pg's example is a bit extreme, the point still stands. At the beginning stages, great design won't determine the success of the product. Having customers will. So time and money is better spent in other areas. This isn't to say they won't come to you eventually when a better design is needed. Great design is still important, just not at the stage this company is at.
I highly recommend the book "Making Software: What Really Works, and Why We Believe It". It's a collection of essays showing statistical studies on certain software techniques.
Interesting, not to get too off topic here but is there a reason you didn't use a 3rd party service for billing like Paypal or something? Sounds like you went 90% of the way and stopped at the last 10.
But if companies want to see actual code in a language they use, then learning python to use simply for interviewing wouldn't really work either right? So your only options would be "use any language but not just pseudo code" or interview for python jobs only.
Oh no, I certainly didn't know all the lessons and I haven't done all of them.
"How elegant are your solutions? Have you tried writing them in a different style than you're used to?" That's a great point, so I suppose it's less about the actual Project Euler problem, and more about optimizing, refactoring and trying them in different languages.
Great article with lots of valuable info in there. The part about the actual whiteboard is almost irrelevant. Most of the comments here are getting too worked up about that.
"Learn Python and use it during your interview." Python is expressive, a high level and kind of writes like pseudo code. Just write pseudo code. The point isn't syntax anyways.
"The highest value problems I know of are on Project Euler." I do enjoy running through Project Euler problems but I have no evidence that's making me better at my day job, only better at answering Project Euler problems.
I had a different take on the article than most of the comments I've read. It's about keeping your word. If You say you're going to do something then DO IT. If you don't want to be seen as a joker then you just have to keep your word.
I see it like this. If you make a timeline yourself and find you won't be able to keep it then you have 2 options. 1) Let the person you promised know right away or 2) "find a way. Or make one" - do what you got to do to get it done.
Sebastian is highlighting the second option because it's already passed deadlines and shit sounds like it's getting serious.
If you want to be respected, loved and an effective leader. Keep your promises. Every single one of them. (Or, in true Machiavellian form, at least make sure it's perceived that way.)
Steve Jobs inspired me on so many levels. Whenever I need a boost I find myself watching one of his incredibly powerful talks, oozing with inspiration. The man accomplished more in an hour than most will their entire lives. This is a hard loss for our entire industry.
Writing as little code as possible to fully accomplish a goal has recently become a fundamental principle that I live by.
If I can write a piece of code in fewer lines, I'll do it. That pretty obvious, we all would. But I try to take it a step further and consciously seek solutions that lead to fewer lines of code. Chopping down a large block of code is an incredibly gratifying feeling for me.
I find that writing less code while maintaining expressiveness usually leads to simpler solutions and, IMO, it is simplicity that reduces the bug count.
I don't know man, the interviewing process is just so broken. Maybe because interviewing in general is so broken or maybe it's because software development is such a new industry.
Either way, isn't it strange that the best advice for doing well at interviewing is to practice. Practice so you become better at interviewing, not necessarily better at your job.
In a way, this article reminds me of Paulo Coelho’s The Alchemist. The journey of a shepherd boy who leaves his world to discover the treasures of his personal legend.
"They represent the Promised Land where, one day, we'll start doing something meaningful."
If you don’t have an urge to go out and do something different than what you’re doing now, then this article probably doesn’t apply to you. I think It’s more related to people who say you’re going to one day start your own company, or work for a startup, or “travel to Montreal” but immediate problems always get in the way. You don’t have to change the world necessarily, just be happy and follow your dreams NOW because life is too short.
"I have since found that many, many people I respect likewise worry they’re faking it. Anybody in my audience got the same issue?"
It’s funny, when I started out in the professional programming world I had a ton of confidence. I felt unstoppable. Back then, I didn’t know shit about programming but hey, how hard could it be. Then I started learning and slowly my confidence starting dwindling away. The more I learned, the less confident I became. I was humbled by the smart people I learned from. I realized how little I actually know. Now I’m noticing how big of an issue confidence has has become.
"I have found that actually showing confidence issues, on the other hand, does not do great things for one’s business"
I’ve found that showing lack of confidence hurts in most areas of life. The less confidence I speak with, the less people take me seriously though. It’s ridiculous. Now, whenever I speak with certainty & confidence, it feels like I'm faking it. It’s a huge internal struggle and it’s interesting to hear others perspectives on this.
I've been interviewing with companies recently and it's interesting to see how some places just completely ignore these types of questions. My guess is that there's a bit of self selection when interviewing. Some places don't looks for passion because they themselves may not be passionate.
On the other hand, you do want to make sure they know how to program. Talking about side projects and areas of interest may bias the interviewer when they really just want to know how technically competent you are.
Wow, thanks for this reply, it's exactly the kind of info I was looking for. I've checked out those forums and most seem to have a great deal of noise, however, the stickies you mentioned in BHW do have a lot of really useful information to get started.
Interesting. I'd love to hear more about this. You don't happen to blog about this process do you?
Computer science does not equal programming. Yes, programming is a part of computer science but you learn a heck of a lot more from a computer science degree. You learn about algorithms, computational complexity, lots of math, logic and a lot more. You learn how to use a computer to solve hard problems and how to identify patterns in problems that others have already solved. A lot of it is theoretical; you won't be taught how to build a web site.
If you wan't to learn how to program just enough to validate your idea, then perhaps taking a computer science degree might be a little overkill. Read some tutorials and just start programming easy stuff and work your way up.
Although I didn't go to MIT or Stanford, I never learnt HTML or CSS in university. No, that's not what a Computer Science degree teaches.
I like the simple and clean layout, however, what I really need is a way to send large files (>200meg).
Bought the book because of this comment. I'm yet to read it though.
Chess. In many ways, chess is very similar to programming. It is a beautiful mix of art & science. It requires constant learning, studying and practice to get better. It allows you to solve puzzles and identify patterns. It has been around for many centuries and yet people still find new strategies.
This seems like a great opportunity to learn a new language, framework and IDE. Visual Studio is an awesome IDE but it's always valuable to learn something different and be able to integrate that in your day job. To answer your question, a successful site that keeps popping up that uses asp .Net MVC and the Microsoft stack would be StackOverflow.com
I see your point here and I mostly agree. However, as a software engineer I am constantly learning the "machinery underneath" and it frustrates me to see people make absolutely no attempt to learn even the basics. I mean "A piece of software" would suffice as a response to his question. I guess I know what my mechanic must feel when he deals with me.
Friggin genius.
"We've blogged about Four things to have a hope of being funded, but the most important two at an earlier stage are having a co-founder and a starter executive summary." um ... ya this is going to be a problem.
See, there is a fundamental problem with this. You, as a non coder, will NEVER be able to tell who is and who isn't a "rock star". And odds are, your dream coder will probably not want to work with you. Unless of course you're working on something really cool with a bunch of other really smart coders.
Beautiful design, really makes me want to use the app a little more. Would be nice to have some sort demo login or video walkthrough like mrduncan mentioned. May I ask who designed the site?
Totally agree with this point. I understand the importance of naming and so I try to put some though into it, only to realize I’ve lost my focus on the initial problem. Now I get a first draft down and then go through and rename methods & variables appropriately. I usually end up breaking apart classes and methods on my revision.
I find a lot of inspiration from other really well built apps. Often finding something that somebody has clearly done RIGHT motivates me to do the same.