What have you tried?

If you’re a developer and you’re about to ask another developer a technical question (on a forum, via email, on a chat channel, or in person), you’d better be ready to answer the question “What have you tried?”

This of course isn’t specific to software developers, but that’s my field and it’s thus the area in which I’m most familiar with the issue which motivated me to write this. I’m (sadly) quite sure that it applies to your own industry too, whatever that might be.

The thing is, there’s a disease in the software development world; a sort of sickness. It’s an unusual sickness in that it’s often not something you acquire once you actually join the industry (like greying hair, caffeine addiction and an ulcer), but rather it’s something that new recruits already have when they arrive.

Now, a quick clarification before I continue: when I say “new recruits”, I don’t just mean graduates and other young people. There are those who will say that this sickness is a product of modern western education systems, and that things were perhaps better back in the day. Maybe that’s true and maybe it’s not, but I’m not qualified to say and that isn’t the position I’m putting forward here anyway. The illness I’m talking about seems to apply to both young and old alike.

The illness, of course, is a flawed approach to solving problems. Here’s an example, which is an actual quote from a web forum:


1) Can we establish http connection in application.

if so, i need that code.

I checked NSURLconnection. I cannot intergrate that code.

2) I want to display a image from the website

Can anybody please provide me the code?

If anybody having sample program please give me.


So where’s the problem? It’s not in the quality of English (it’s reasonably evident that English may not be this person’s first language, and that doesn’t matter as long as the intent is clear – which it is). It’s not in punctuation and grammar, because those things again aren’t particularly important in this context as long as they don’t become barriers to understanding what’s being asked.

The problem is that this person’s problem-solving technique is to ask for the solution. Not to seek advice on how to approach the task, or ask for the names of likely classes to look into, or a link to an example – but to just ask for the code, fully formed and ready to go. This is not problem solving, and software engineering is entirely about problem solving.

The interesting thing to note here is that the above example isn’t actually as bad as it could be; there’s one tiny glimmer of light to be found in the assertion that this person “checked NSURLConnection”. That inspires some small amount of confidence, since NSURLConnection is indeed a suitable class to learn about when wanting to make HTTP connections in Cocoa. However, it seems that “checking” it was pretty much the sum of our friend’s effort – they “cannot integrate that code”, and have thus given up.

This is an issue we all see constantly (and I don’t mean having trouble making HTTP connections). There’s an entire class of so-called developers whose first and final tactic when given a problem to solve is to simply ask for the completed solution elsewhere, commonly on web forums or other suitable help channels. Their goal is the same as ours – to have code which solves the problem, which can then be presumably delivered to the client. This goal is reasonable and quite normal.

What isn’t normal is the unwillingness (I hesitate to say inability – because after all, very few things are truly, fundamentally “hard” if you apply sufficient thought and effort) to achieve that goal by a process of self-education, honest attempts and the classic iterative process of refinement and improvement until something acceptable is created. This process in turn equips you better to handle the next challenge, and sooner or later you find that:

  • there are entire sets of familiar problems to which you already know the answer and can approach with confidence; and:
  • you’re quite capable of approaching unfamiliar problems by generalising your current knowledge and conducting some simple focused research.

This isn’t some trick of software engineering; this is the entire process of learning how to do anything at all.

It’s not a secret handed out at institutions of higher education, it’s just how things work: you begin with a lack of understanding about a topic, and a need to solve a problem in that topic area. The honest, sustainable means of doing so is to improve your understanding. This is achieved by:

  1. Formulating a question which, when correctly answered, will improve your understanding in some way; then:
  2. Attempting to answer it.

Note the second step above. To argue that grabbing the completed solution in some way satisfies this process is laziness and intellectual dishonesty, and probably renders you unworthy of being helped. For after all, why should someone else do your work for you?

I’ve had a lot of personal experience with people displaying this troubling unwillingness to learn or research or try. I’ve released a lot of code over the years, and I’m very visible in the open source community for the platforms I work with. Since open source contributors seem to be seen as freelance teachers, that means I get a lot of email asking for help with one thing or another. And I provide that help whenever I can.

I’ve helped literally hundreds of people looking to get started with Cocoa, since Mac OS X was first released. I don’t send boilerplate replies, either – I replied to each email individually. Everything from specific code issues (including but by no means limited to queries relating to my own code), book recommendations, right up to advice on how to get started with programming as a whole; I’ve done my duty in that regard, and I really do believe it is a duty. People who can do something to whatever extent ought to help others who wish to be able to do the same; surely that’s a fundamental truth and indeed a desire for all of us.

But this is real life, and no principle comes without the consideration of certain realities. Help may be free for the most part, but that doesn’t mean there isn’t a cost-benefit ratio to be considered. My benefit may come from a warm fuzzy feeling rather than cold hard cash, but if you’re wasting my time then you’re not going to seem as worthy as someone who genuinely wants to learn.

Here’s a secret: willingness and desire to learn are the true qualifications.

Not ability; we all have differing innate and developed levels of ability to acquire certain skills. Some (probably most) of these can be improved with practice, and some can’t – and it’s wrong to pigeonhole or generalise a person’s ability in an entire discipline just because of their seeming difficulty in one particular aspect of that discipline. But if you want someone to spend time and effort (especially if it’s time they’re giving freely), then you’d better earn it.

Earning it isn’t about throwing a few units of currency at your teacher, and it’s not even about successfully completing your task – it’s about bloody trying. And trying is what so many of the type of developers I’m talking about seem bizarrely unwilling to do. So, of course, many of us ignore them. Problem solved, right? Wrong.

There’s a huge knock-on negative effect of the proliferation of this unwillingness to make the effort to solve problems yourself. People who are in a position to help stop frequenting the chatrooms, forums and mailing lists. “Bad signal to noise ratio”, they say, with some justification. The losers are the genuine (by which I mean well-meaning, willing-to-learn people who just happen to be new to a particular area) developers who naturally choose those places to ask their legitimate questions. These people have a reduced chance to get meaningful guidance because of the effort involved in working out who’s a lazy time-waster and who isn’t.

This is an awful thing, and it’s never been more relevant – since logically, platforms which are young and/or experiencing a surge in popularity are exposed to this phenomenon the most. There are fewer people who are genuinely experienced, the average level of experience is less, the amount of help being requested is higher, and there’s a far higher proportion of lazy, grab-the-money-and-run types mixed up in it all. This is the iPhone, Android and so on.

So, if you’re going to ask a technical question, I guess the first thing I have to say to you is: Great! You’re asking a question, and that means we have a better than even chance that you want to learn something. That’s usually awesome, and I stand ready to salute you.

But wait. Have you considered – really considered – what it is you’re about to ask? Is this the right time to ask, or can you take one more step first, which might either make your question clearer (good) or even unnecessary (probably better)?

Try taking a few minutes to run through these points:

  • Have you broken the question or problem down sufficiently to really ask something concrete? In software engineering, you can pretty much divide problems into the two categories of (1) things that can be broken down further, and (2) things you already know how to do or can look up trivially.
  • Is your problem the sort of standard question for which there’s definitely already some sample code and documentation available? There isn’t a GUI toolkit in the world that doesn’t have a section in the tutorial on how to put a window on screen. There’s no programming language that doesn’t tell you how to read the contents of a file. Skim the documentation, or do a quick search. If your problem is that simple, the answer is probably just moments away. You can find it!
  • Try searching the web. This is glib advice, I know, but stay with me. If you’re having trouble getting a decent result, you need to narrow things down. Don’t search for “if statement” if you’re just interested in an if-statement in ruby; instead, try “ruby if statement”. What might be even better is finding a site that’s specific to the language or technology you’re working with, and searching there. For Cocoa, this is the CocoaBuilder list archives. Someone else has probably asked your question – or maybe a hundred someones.
  • Whoever made your language or framework or API or whatever also created a bunch of sample code; really, they did. It’s designed to help you get on your feet with various common tasks, and there might be some code that does at least some of what you want to do. It’ll take you only a few minutes to check, and at the very least you can grab a load of code which will come in handy at some point in the future.
  • Use your IDE’s online reference or other built-in documentation. Xcode has a documentation browser. Eclipse etc will show you the Java class documentation. PHP.net has you covered for your PHP scripts. Find the canonical reference for what you’re working with, and search it. You’re going to find something that’s helpful almost every time.

OK, you’ve gone through those steps and tried at least a few of them. I can now finally say congratulations. Either you’ve solved your own problem (great), or you are now officially ready to be helped.

When I ask you “what have you tried?”, you can say with confidence that you’ve tried all that stuff above, and you can tell me anything promising you found, or you can say that you’ve at least come up empty honestly. I’m going to help you at this point, because I can see that you want to learn and that you’re willing to work for it, and so I want to teach you.

That’s the key realisation. When you’re asked “what have you tried?”, it doesn’t mean “show me the code you’ve written, or piss off”. What you have to do is at least try to help yourself – and the trying is the important thing.

Not just for avoiding pissing off someone who would otherwise be willing to give freely of their valuable time to help you, but actually for your own development. Do it enough times and the number of questions you’ll actually have to ask will start to go down. You’ll also be in the position to help others (including me), and that way everybody wins.

So next time you’re considering asking a question, you’d better be ready with a convincing answer when you’re asked “What have you tried?”

If your answer amounts to “not a lot”, take my word for it: the next question you get back will be “then why should I help you?”


 

Update: I’ve pointed the domain whathaveyoutried.com to this post.

80 comments

  1. I rarely comment on anything, but I really liked your article. I have relatively little experience, am a senior computer science/engineering major, and absolutely hate seeing the things that you’re describing. If I can’t figure out a problem, given available information, I step back, have a few beers, think about it, and then dive back in. Surely the beers don’t help (and are not always present), but when I finally do solve a problem I feel that much more satisfied.

    I’ve experienced far too many people during my time at university who want “help” with homework or projects. This “help” usually involves obtaining a copy of my code or answers to a homework assignment, copying them, and submitting them. I have learned to weed out these types and refuse them, especially considering most of my classes are curved. If one of these students had a question for me that involved my knowledge and not my solution, I would be more than happy to help. I would see a question like that as adding to my overall understanding of a problem. Alas, those questions are far too rare.

    I am about to enter a career, and I am confident that I will never end up as one of the “engineers” (in quotes because they are probably not really engineers) you mentioned in your article.

  2. Nic Article Matt.

  3. Jonathan Dickinson

    The real question is where do you draw the line with *being helpful*? I often come across questions like this on SO and it usually takes less than 30s to answer them (if the ‘Engrish’ is good enough). If they come back and ask for all the code – well then lmgtfy.com is your best friend (often it is the best answer).

  4. Someone sees the light! Thanks for this post: I personally can’t stand to just ask for code that ‘works thx’, because that’s (IMO) cheating, and only hurts you in the bargain: you don’t know how it works, you can only modify it a bit etc… I’ll bookmark this page, just so I can show people!

    And this article explains one of the reasons I like dreamincode.net . And CodeProject is a great self-help I found too.

    But in sooth, there’s nothing I despise more than leeching, learn-nothing bludgers that call themselves ‘Programmers’. Try getting away with that as an engineer!

  5. I think that this problem is just one of the manifestations of the problematic approach to life. We may call it the “Western” approach, maybe.

    As sysmgr points out, the management often wants the solution ASAP, the cheapest one, etc. I am far from being a manager, but i perfectly understand this kind of logic. If the company is at verge of a bankruptcy because the sales are low because of the competition, it seems very logical that the management would prefer the “ready” solutions, that they won’t have time to invest in “development”, etc. But when we look around, we will see the same thing everywhere: the people want to take pills and become slim (instead of gradually working to change the eating habits), the people want to go to the psychologist to “magically” solve their relationship problems, etc. Heck, the people even want the entertainment to be “effective”! If you don’t provide a quick and cheap answer/product, you’re out of the game (so it seems).

    Many people DO understand what quality is, and ARE ready to invest and to seek out the “best”, but it is still a minority of people. The quest for the “best” has often the same problem, just on another (more “prestige” level). Nevertheless, the willingness to do it is the key part of the solution. For example, when you understand that pills or food additives won’t make you loose weight, you start looking for the “gym” or “workout” solutions; but then you end up going to the wrong classes or buying a stupid “workout” equipment for home (that doesn’t help much). When you understand THIS, you go to the much better classes, and start learning more about the body; you may even go to the very expensive lessons, but that is also still not perfect. Eventually (and hopefully) you may understand that you’re involved in the constant process of self –improvement. At this point you would already have much better “attitudes” than in the beginning.

    So, what is the solution to the problem posed in the article? IMHO (according to the spirit of the article itself) – there can not be a “magic” solution. They solution can only be a personal one – improving yourself (maybe by helping others to improve, maybe not). Posting of such articles is probably one of the steps; because some people who will read it, and are not “there” yet – they still will carry something out of it, they still will be exposed to this opinion. It will be another drop of good will to improve the world in the ocean of idontknowhat. And now stop procrastinating, and back to work!!!

  6. Great article. The only time I ask for help with a problem, I always as for someone to ‘point’ me in the right direction, prefering to work out the solution myself, but then only after much time researching on my own. Another negative side I see is the number of people that ask for help, but do not acknowledge when a response has provided them with a solution to their issue. Not only is this common courtesty, but it also helps others that may come across the same issue. Not very professional.

  7. I had a older colleague tell me when i was starting out that you ind two kind of people in our industry. Natural Coders and Natural Troubleshooters, and very seldom some one who is both. I have found it to be very true. I have worked with devs who could right increadibly elegant code but could troubleshoot their way out of a paper bag. It’s no excuse and the behavior you describe makes me apoplectic. Especially now… When I started you would have to fish through books other obscure sources looking for answers. Now, Google it… You can find samples and other people who have had the same issues. Just begging for help is no way get a job done.

  8. I wrote a blog on this same topic a few months ago as well:

    http://blog.davemorton.net/2009/02/on-integrity-and-learning-c.html

    As a frequent answerer on MSDN, I feel the pain of those who constantly request to “please send code”. There are some also who seem unwilling to do any research on their own. If this continues for some time with a particular user, rather than continuing to answer their questions, I will simply begin ignoring their questions entirely.

    Don’t get me wrong. I love helping other people solve their software development problems, but that’s just it. I love _helping_ other people, not doing their work for them.

    Anyways, your article is very well put. Props on making it to CodeProject’s Daily Digest today.

  9. I have not time to read the whole article & comments through. Could someone plz provide a simple “summary” so I can use it in my life ;-)

  10. I couldn’t help, as I read this great essay, how much worse the situation would be if these ‘helpasites’ lived in the days when one needed to actually use BOOKS?

  11. There are those of us who learn better by example. I can learn much more much faster by dissecting a good code example than I can by spending the same time researching an issue.

    That said, I still conform to some of the rules Matt laid out. I spend some amount of time looking into the issue before I would flat out ask for the answer. I have enough confidence in my ability to find a solution to a problem that if I don’t find it in a reasonable amount of time, then I figure it’s an obscure or difficult thing to do.

    But from the perspective of the one answering the question, they have no idea what process has brought the questioner to this point. Thus the title of the article, “What have you tried?”

  12. I used to teach programming (Java, C++) and I remember the same issues, students would just run up to my desk and say “I have an error”, the first thing i would ask is what is the error, 99.99% of the time they would say they dont know, my response eventually was to tell them to go back and read the error on the screen THEN come back for help.

    I usually tell people where/how to find the answer they are looking for instead of the specifics but there are some people who still focus on just getting the final answer.

    I have all respect for someone who will try to find the answer or actually take the time to disect the code that works, from what I have seen if you give someone the answer most of the time they wont go through the answer and instead use it and move on to the next issue

    Great Article!! im saving this link as a reply to these people ;-)

  13. Jonathan Peterson

    Over the short (but growing) time that I have been learning code, I have been astounded by this phenomenon. (That is not to say that it has been restricted to this industry… but rather that I’ve begun noticing it due to my own need for seeking guidance.)

    I was raised, and schooled (in public systems) with the mentality that you’re supporting… and indeed it was shocking and disgusting to me the first time I encountered someone who did not want to learn, but rather to be handed the answers.

  14. Benjamin Kinsey

    As others have pointed out, I think the author fails to recognize “learning by example” as a valid method to understanding how things work in practice. Now I see people linking to this article as an excuse not to help people, because they feel the person asking for help has not put in a sufficient amount of work.

    • You couldn’t have got it more wrong Benjamin.

      Read the article again.

      And if you think “learning by example” does not include presenting one’s own efforts to be critiqued then you simply don’t understand what the phrase means.

  15. I agree with this totally,

    Sometimes people ask me “how do i put my image on my web page” wich is not even an programming issue, but rather more of a markup issue. But anyway, most of the time i tell those people where to look for it, and make them figure out themselfs. In the case of the web image, i just tell them to google for “HTML ” and that they will find the answer there.

    People that ask me “plzz i need code asap!”, i just respond with “No, I have put time and effort in creating this code, I needed that code as part of MY sollution to MY problem. It would not be fair to just give away my code, to both myself and the one asking for the code.

    Willingness to learn, not having a problem to research the web or visit the local library, for hours-days-weeks or even years will result in learning whatever you want to learn, not just programming.

    i remember a quote i’ve read somewhere, Good old Ben Franklin once sayd:
    “To try and to fail is to learn, to fail to try is living with the burden of how things could have been” i think this one applies pretty well here.

    Well i have to get some work done, Great Article! Greetz from The Netherlands.

  16. Yes you are absolutley right!

    But on the other hand, there are outnumberd users they only critizise written language, or formulation, not helping at all. Then a big discussion startes, about formulation, unkindness of the poster and/or answers… at the end the poster has no answer and getting flames.

    Please STOP this, post only if you have a question, if something is unclear. Post helping code or maybe a hint/link to the solution. I mean this in developer forums not here…

    about me: if you right noticed, my native language is also not english, it is german. But I’m willing to learn!

    Greetings from Austria

  17. Everyone in who uses forums to ask questions should read this

    A lot of people sometimes just want to get the answer, or even worst, when they say: please give me code to…

  18. This is a rant by yet another egotistical developer considering himself superior. Another Ego trip for another “me me me” developer.
    What is it with developers and Ego?
    20 yeasr in developement and development management and that has been the one constant.
    It should get its own greek letter. Get out of your own butts.

    • If you knew what you spoke of this would be of concern.

      However it is clear you know nothing of the person who you are criticising so it signifies less than the barking of hungry dog.

  19. hence why it’d probably be impossible to pinpoint when rtfm was first quoted.. this has to be a problem since the beginning of time. its called laziness i believe :)

  20. This brings to mind something I did in college. It happened fairly recently (that is “recently” in a geological time frame…): I was given a programming assignment in a Pascal class to develop and implement an algorithm to “partition” a number, preferably using recursion. I didn’t feel like using recursion, and was curious if someone else had already done the algorithm. Here is what I did:
    1. Walked to the library.
    2. Thought up a likely sounding subject. Found the drawer in the card catalog where the subject was listed (alphabetically). (This was the newer, engineering, library, with a nondescript card catalog. The older library had gorgeous oak cabinets. But I digress…)
    3. Tried another subject or two. Eventually found a card for a promising sounding book. Wrote down the title and call number. Got a few more titles in case the first book didn’t have what I needed.
    4. Went upstairs to the stacks. Using the Dewey Decimal number, found the appropriate shelf. Read titles ‘till I found the book I wanted.
    5. Looked up the subject in the index of the book, and then went to the appropriate page.
    6. Started reading and Bingo! Not just one, but three pseudo-code version of algorithms for the problem.
    7. Photocopied the pages. Good thing I had enough change in my pocket to use the photocopier.
    8. Walked across the street to the building that had the terminals for the DEC-20 computer. Logged on and started translating the pseudo-code into Pascal. Response time was good, only a few seconds per line, so it went fast. Was glad I was using Pascal on a terminal instead of having to punch cards for the FORTRAN system. Ran the program in batch mode (there was no other choice.) Debugged. Reran. Repeat. Finally printed out the program and results on green and white paper.
    9. Handed in my printout in class.

    Total time, about 2 ½ hours. And I was able to brag to my classmates about the great shortcut I had taken on the assignment, and it WAS a big timesaver.

    Do any of the steps above seem familiar to you? How many of you even know what a card catalog is?

  21. Interesting. I don’t program anything Apple, and I don’t know about cocoa, but I’m a programmer.

    I spend hours looking up a subject in google and where ever else I can find. I try looking up in documentation, I try different things in my code (sometimes, I want to be honest here, sometimes I’m just sick of working with my non-working code). Finally I go into chat and ask. The first reply I usually get is a flippant “google it” or “rtfm” or some such. I almost always google it first.

    Another situation, I need to figure out how to do something, I’ve tried a lot of different things and looked up stuff that didn’t turn up anything (this happens a lot of the time, googling but not finding anything because you somehow don’t have the right combination of magic words that will summon your solution out of thin air, remember old text adventures, where you had to put in the exact word or it didn’t know what you were talking about?) So I go into chat like the above and ask my question, and show my code. This time it’s like “Why are you doing it that way, why aren’t you using lists? Why not use this library or api, etc, etc… All I wanted was a little answer to my question, you don’t even have to give me code, all you have to do is link me somewhere that explains it.

    Or how about this I’m trying to figure out how to do something, i’ve done the prescribed searching. So I’m discussing in a chatroom about different ways to do something, and guess what someone is actually trying to be nice and trying to help. They tell me one thing, I ask them another, they try to explain it again, i ask them about a certain aspect. Little do they realize that I’m just not getting it. They assume I already know stuff or whatever. Sometimes people are just slow, like me. I’m slow, it takes me forever to do something. And guess what sometimes I can’t remember something I did 6 months ago even when looking at code, even when commenting.

    And why do you assume I want to learn something specific? Maybe I just want a quick code snippet because it should be simpler than the awful mess I’ve made for myself. Maybe you can do in a few minutes what it takes me hours to even being to start on?

    You want me to respect you by going through all the effort of trying to figure it out on my own, and generally wanting help, then you need to respect me in the fact that I’ve actually done that, and not assume because I asked a silly question I wasn’t industrious enough for your tastes. He didn’t jump through the ring of fire, so he doesn’t get help on learning to ride…

    The best thing you can do if you don’t want to help is just not answer me, don’t go through the trouble of insulting me because I wasn’t up to your standards. If someone asks you for code just delete. If he pesters you tell him you don’t give out code, and not to mail you. If he still pesters you put him on your spam list and don’t even look at the email.

    Sorry if I’m the a-hole on this thread, it’s stressful enough to try to keep up with all the trends and all the proper ways to do something, without someone being snooty and not telling you that there’s a reason for a specific way of doing something that you’re not doing.

    • So you believe that everyone should assume that everyone who asks a “silly question” should, 100% of the time, be assumed to have already tried to research the problem themselves?

      And this should even apply to people who have repeatedly shown that they abuse the privilege?

      I don’t think you believe that even though that’s how your posting reads.

      The article is simply suggesting that someone like your good self who has put in some hard yards say that up front in making your request.

      Stop asking others to assume you are a good person who is doing things the right way. Instead of that remember you are asking for the kindness of strangers and put the evidence of your bona fides on the table for all to see. Not only does that immediately remove you from the group being spoken of in this article it also serves as a good example to others about how to ask a question.

  22. Hi. I’m a totally newbie at game programing, and i’ve been studying computer engineering for 3 years (and a few more to go yet). I find your article really interesting, and it helped me to kind of… you know, sort things into my mind (i don’t know if thats the expression, sorry). Anyway, the thing is you took your time just to give a really nice advice to people like me, and i feel relieved that there is still people like you out in the net.
    Thank you very much for your work sir.

  23. [...] have said this better myself. You can leave a comment or a trackback from your own site. Comment on this [...]

  24. Nice article!

    By the way, I wonder if someone could give me the C++ code for automagically clean this kind of article from my google searches. Send it to my email as soon as possible >D

    Oh, and make me a coffee, I feel sleepy…

  25. By far, the most comprehensive article I’ve ever read. I worked as a web developer instructor for 2 years and most of the students (i.e. clients) I’ve worked with are unfortunately of the type not willing to do their home work before asking for help.

    I quit teaching because of that. Anyway thanks for writing such a beautiful article.

  26. i really enjoyed your info/article & u are correct! and why i’m glad i’m the older generation before internet. we had 2 find our own answers. and now after being ill 4 quite sometime (years) but wanting2 program again i find myself wanting 2 take the cut & paste path (only because of physical weakness & the yearning 2 learn v studios ide faster so i can get back 2 actual programming )But immediately realized I wasn’t learning like I was when keeping/ writing my own notes, the tabs & magic markers so i know exactly what u mean 4 me it’s the OG way. I thankl my Mom 4 always saying “Look it up” use to tick me off when i was a kid but i now see it was 4 my own good. And really it’s the best way. I probably messed this msg up but i hope u get the gist of this. I even wrote software (assembler, c,C++) 4 nasa & never took a single computer course. i’m sure if i’d clipped & pasted instead of researching everything myself i would have never been able 2 do that or even learn program languages on my own. when i went 2 take programming classes (2 see what i missed) the schools would ask me 2 teach (weird)

  27. Hi Matt,

    your piece rocks, I totally agree with you.

    People really shouldn’t start anything like computer programming if they don’t feel a burning desire for solving problems, starting from their own.

    At Applicom we are no programming geniuses, we are just normal developers who have learned the craft after many years of practice. Yet, less than 4 weeks ago we managed to release Apollo, our integrated project management and contact tracking app (http://www.apollohq.com).

    It’s a modern single-page app, where we push 80+k lines of javascript into your browser; It’s based on the fantastic dojo framework (dojotoolkit.org); We really owe the dojo guys a lot, for the great work they are doing on the framework, BUT in the last 18 months we never asked anything to anyone (except google of course!) to solve our programming issues.

    And I’m quite proud of it. Not a single post asking for help in the forum nor in the mailing list.
    We read a lot, and we take responsibility for what we do.

    My point is: once you know the basics, there are very few programming challenges you can’t sort out by yourself.

    People usually complain that dojo is not well documented. They want every possible combination of code snippets to get their app up and running in no time. They complain that documentation is sometime lacking or outdated.

    I’m sure 90% of what people dare to ask on the mailing list, is something they could have been easily solved by themselves in at most a couple of hours of honest searching/experimenting/studying.

    I want to tell something to this kind of people: go to the source.

    I’ve been through and read every single line of dojo and dijit sources, and a good part of dojox.
    Not once, but two times. And I’ll tell you something: for the most part, dojo is a beautifully crafted and well commented javascript framework. Reading the source code has made me a better programmer, and helped a lot in making what Apollo is today.

    Thanks again for this post, it’s nice to know whathaveyoutried.com exists!

    Cheers,
    Andrea Di Clemente

Leave a comment