Hacker News new | past | comments | ask | show | jobs | submit login
I'm a business guy, and it's about time I learned to code (coryliu.com)
12 points by coryl on Sept 12, 2010 | hide | past | favorite | 31 comments



Admirable, but note that JavaScript is quite different than Java. http://stackoverflow.com/questions/245062/whats-the-differen...


I think it's a noble pursuit for a business guy to learn about coding, but I doubt he'll learn enough to be able to build anything useful. That sounds like a record exec suddenly trying to learn how to play guitar after years of sitting behind a desk. Instead of learning how to code, he should learn enough about the process to know what goes into finding a competent programmer or outsourcing partner.


So you don't think I'll learn enough to be able to build anything useful BECAUSE I'm a business guy? Or is there another reason you think I'll never be able to build anything useful?

Fuel to the fire, thank you.


Certainly I think you could do it, but out of 100 business guys who decide to start coding maybe a couple will outpeform those who use their skills to manage dedicated resources. Some will just create an app that a dedicated developer will have to fix at some point. Some will find that it's easy to get into but very hard to master, and just give up.

However, getting into it will be priceless. You'll hopefully develop more of an insight into how tough a given problem is, or isn't. Developers will be less able to BS you (e.g. "we should just rewrite it from scratch"). It'll reduce your risks and help you to interview developers. Hey, and you're young so you definitely have time to learn any skill you want, given enough effort. At 50, more likely a waste of your time. In your 20's (my assumption from your pic) - why not. Good luck.

Btw, I'm a long-time developer that has a post-grad business degree and keeps my foot firmly in both camps! Keeping up with the technical aspects takes up a lot of time, especially if I want to build something useful in a given area.


The ability to write good, useful software does not come over night. A lot of people on this site have been programming for a long time.

It's not because you're a business guy that you'll probably never build anything useful, but because you haven't invested the time most programmers-of-useful-software have. Programming skill is mainly a function of time with an intelligence multiplier. The number of things within the world of programming that you don't know you don't know, is staggering. And you need to know a large amount of inter-related pieces of knowledge to build anything useful.

As an example, I recently built a 'web application' which will send a student an email when a college course that they want opens up at Virginia Tech (http://hokienotify.me). I haven't worked on it in a while, but it took me about three days to write from conception to what you see now.

Let me list the technologies/bodies of knowledge that are involved in this relatively simple application.

    - Front end
        - HTML/CSS/jQuery (Javascript)
        - PHP
        - Form validation and other data sanitation
        - UX/UI
    - Back end
        - Python
        - Regular Expressions
        - MySQL
        - Linux server administration 
            - Apache
            - Bash scripting
            - Cron
It only took me three days to write, but in reality, it took me 10 years.

To reiterate, it's not because you're a business guy, but because it's a long journey from "Javascript is like Java but simpler" to a real, useful piece of software.

Edit: I hope I'm not being discouraging. Programming is fun, and you should definitely continue with it. As you work at it, you get better. Good luck!


I know building useful things is hard and I know it takes time. But I really don't know why that means I automatically have limited effective potential by factor X. It's as if your trying to intimidate me, and I don't know if you're smug or have a big ego or are being honestly truthful, or all the above. You already know I'm new to Java, why do you feel the need express the overwhelming complexities and difficulties in building software?

Maybe because of that one line, you assumed I was an idiot (only partially true!). Maybe its because you don't know I work in an MVC framework building web pages everyday, or that I admin our servers through SSH. Or that I've built MySQL tables, PHP contact forms, and even used PayPal's API once to forward customers to a download page where they could retrieve the product they paid for.

So yeah, you're pretty damned discouraging. That's how I feel unfortunately when I read some of these comments on HN.


"As a startup enthusiast whose never learned how to code" seems to be the opposite of "Maybe its because you don't know I work in an MVC framework building web pages everyday, or that I admin our servers through SSH. Or that I've built MySQL tables, PHP contact forms, and even used PayPal's API once to forward customers to a download page where they could retrieve the product they paid for."


These are technical skills and responsibilities I learned working alongside my programming partner. I still can't program anything functional on my own though. I have experiences relating to programming, but I still do not know how to code. Does this surprise you?


I don't think I ever said you had a limited potential. In fact, you have a lot of potential. My point is that it takes a long time to realize most of it and get to the point where you can write good, useful software (realize in the sense of, "to make real").

The reason I outlined the complexities and difficulties of building software is because you asked why byoung2 said that you'd probably never build something useful. The reason is that most likely you'll give up before long. If you stick with it though, there's absolutely no reason whatsoever that you can't be a great programmer.

I've never taken a formal class in programming. I am proud of what I know and so I do have an ego when it comes to programming. But I am also being honest with you. It's a long road to becoming a good programmer. It might be easier and it might be expedited by the fact that you're older, but it still takes a long time (which can be frustrating!). As I said, good luck!


Building things from scratch can require a lot of skill that may take a long time to acquire, but it is certainly valuable to learn how to code so you can at least maintain code you bought or hotfix things when something goes wrong. also, you'll be able to judge a developer on his factual skill and not on some proxy.


Here's where he lost me and his credibility shattered:

To fully utilize HTML5, I’ll need to know Javascript. And apparently, Javascript is similar and simpler than Java.


Hey, to be fair, I googled "Java vs Javascript" before I wrote that. Here's what I read: http://www.htmlgoodies.com/beyond/javascript/article.php/347...

That's why I put "apparently" :D


Java and Javascript are completely unrelated as Bowls and Bowling.


haha i came here to post just that...

Java is infinitely simpler than Javascript.


To be fair, a lot of college programs will teach computer programming first through a language like C or Java. Those that experience programming for the first time in college can then jump from C to PHP or Python easily.

Of course, I did it to the other way. PHP/Python --> C, and that wasn't that bad either. The big thing he needs is to learn the overall concepts using a good language; the choice of language here is not that big of a deal.


I've seen a lot of this lately and I think it's an admirable idea. Even if you don't become a rockstar coder yourself overnight it'll earn you a lot more respect among coders, and you'll have better conversations (provided they're not 'so why isn't my code compiling?').

We all have to start somewhere.

It intrigues me, though, that pretty much everyone I've seen come from a non-coding background who wants to enter this inner sanctum has chosen an entirely different platform and language. I know of people trying this via RoR, Processing, PHP, Python, C++, jQuery and now Java. Good reasons for all, bad reasons for some, and mostly down to who they know and what advice they gave.

I can't help but wonder if there is a Better Way. Even as a coder I find some languages/platforms require a lot of banging your head against incomprehensible documentation and Simon Says tutorials. I've been totally nostalgic lately for the BBC BASIC days, when stuff was so easy to just see working straight away without a day-long installation headache and platform wrangling and the doubt you picked the wrong one to learn. I'd love to bring this feeling of magic back.


I think people want to learn modern languages because they want to be able to create things tomorrow if not today. It would probably be hugely valuable for me to go back and learn the languages I should have learned as a kid, but theres a sense of urgency and expiry. I have more commitments, so I have less time to learn. The time that I have to learn, I have to use productively. Oh how I yearn for those summers as a kid, where we had days and weeks to ourselves.


I think you may be overestimating the difference between one language and another. There are differences between the BASICs of the 80s and (say) the bash scripts of today, but they're not as big as surface syntax would initially seem to suggest. BASIC back then taught one thing well, unstructured imperative code, well enough that a BASIC programmer, believe it or not, wouldn't have felt it too big a jump to move straight to assembler programming, which would have been the next logical progression to eke out decent performance on the severely resource-constrained microcomputers of the day.

The biggest difference between programming then and now is the size of our problems, and consequently, the number of abstraction tools in our languages. But there is a relatively small set of abstractions known to work well, and a substantial subset of them crop up in almost all languages. Learning all of a Python or Ruby or Javascript, and knowing how to use it well and in a structured way, would cover a good, say, 60% of various concepts of imperative, functional and object-oriented programming, such that you could move to any of the others (in that set) without much trouble.


Learning all of a Python or Ruby or Javascript, and knowing how to use it well and in a structured way, would cover a good, say, 60% of various concepts of imperative, functional and object-oriented programming

Totally agree, and my issue is more that these languages are too linked to the environment in which they run - step 1 of learning to code shouldn't be wrestling with install files and stacks and tools (http://tryruby.org is a great exception). Secondly, a lot of the way they are taught does not actually teach you the abstractions but expects you to parrot code and infer the abstractions as you go along.

Don't get me wrong, I don't want to bring back BASIC as a platform for today, though it'd be fun to see it happen.


I think he's thinking right. He's a business guy, but realizes that he needs to have some control over his product. Even if he gets someone else to write his app, he'll still be able to follow the code if he knows the language a bit. Who knows, maybe he'll like java and writing code that he'll become a coder who like business. There are too many languages out there, my philosophy is to pick one and get working. There are too many people who will pick faults in anything and everything you pick. Hard part is making a decision...now the next hard part is following thru with your commitment. I'm picking up Java right now, I find the Dietel Java: How to program 7e pretty good text. Very wordy, but that means it explains the concepts very well. Of course, I find myself skipping over the commentary unless I don't quite understand a concept. Either way, Good luck to you.

Sean


Glad you took the decision to just do it! There will be lots of road blocks and you have to be strong to overcome those difficulties.

I too took the decision to learn to code earlier this year, it was actually a re-learning process as I've coded before(about 20 years ago). Nonetheless i still had to learn the new language.

Well, six months later i can build a fairly complex web app in about a month which i think it's great for my skills. Now I need to start doing some freelance work to pay the bills while building my personal projects.

Just don't give up when things don't seem to move. Ask questions, go to the forums, stackoverflow, etc.

Best of luck!


This is an admirable idea, but for most people, it's just not practical, and from reading your post, I think you would fall under the "most people" category.

I, and everyone else here, totally understand your goal, but what you're trying to do is epic. A better goal would be to find a person, who is experienced, cross platform, and honest, who can guide you through your issues.

The idea that you are going to handle these things on yourself is just a non-starter. Or, aka, how corporate north america runs, except this way, its you, not the shareholders who have to pay for it.


I don't think trying to learn Java is epic at all. Perhaps you misinterpreted my blog or took it for more than face value.

I'm learning Java because I want to learn how to code. I'm not going to continue to completely rely on others to build things for me.


I'll use the rather clichéd chess analogy: Learning the rules of chess is easy, you can do it quickly. Actually learning to play the game well takes a lot of effort, time and practice. Learning the rules of a language is easy, actually learning to program is hard and takes time.

I think any sufficiently intelligent and motivated person can learn to code at least at a modest level. Just remember that its going to be slow, frustrating and painful. Be sure not to be caught off guard. A frustrating problem that comes at you all of a sudden, can dry your enthusiasm really fast, be sure not to let that stop you. You are supposed to feel pain and frustration, you're brain would rather watch bad TV, or browse reddit or something. Just like when you exercise your muscles ache, because they'd rather you lie on your couch with a bag of chips and a can of soda. Pain is good, it means you are learning.


I think it's great that you're doing this. Personally, I'm not a big fan of Java (although there are many, many people who like it), but I will say that the one thing you can do that will give you the best odds of actually learning Java is to make an Android app. Even if you don't have an Android phone, you can build and test everything in the simulator.

I firmly believe that the best (and maybe only) way to learn programming by yourself (and get good at it) is to get yourself a good book or tutorial (like this one http://pragprog.com/titles/eband3/hello-android) and set aside an entire weekend Friday-Sunday to go through the entire book (and actually type out all of the code).

Next, come up with an idea of moderate complexity that you think would be fun/useful/maybe profitable (e.g. not a game, maybe a client for some web service like Twitter or Shopify) and spend a couple of weeks working on it until it works. Then you'll be a programmer!

P.S. This is the method I used to learn Ruby on Rails and iPhone development, and now I do both of them for a living :)


That book looks awesome, will definitely look into it.

On the plus side, I'm in the market for an Android phone, and it would be perfect to be able to hack things onto it right away.


What would everyone recommend as a first language for someone with a non-programming background?

I learnt BASIC at school a long time ago, and I know my way around html and very basic php.

I would want to make basic webapps that make use of databases


I always recommend mastering HTML first, then learn ColdFusion which will be very familiar because it is tag based.

Once you've learned the basic programming concepts you will be in a much better position to decide what to learn next. Or grab one of the two open source distributions of CF and build your company.


I'm in the same position right now. I am working on a startup with a developer buddy, but I decided to take a bit longer to launch to learn how to code what we are building.


Why Java? Although similar, C# is easier and more flexible now.


I mentioned a few reasons at the bottom, notably the type of things one could make with Java.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: