Programmer

Programmer

ManWithComputer

The Internet, IP

Male, 37

I've worked at multiple Internet startups of different shapes, sizes and ambitions. Now I'm the CTO (Chief Technical Officer) of another small company with big dreams. I look nothing like the picture above.

If you copy and paste your homework question in here, I will answer with something that will, at best, get you an F on your project, and at worst, will get you kicked out of school. You have been warned.

SubscribeGet emails when new questions are answered. Ask Me Anything!Show Bio +

Share:

Ask me anything!

Submit Your Question

76 Questions

Share:

Last Answer on September 07, 2015

Best Rated

Any big lessons learned you can share about past and present start-ups you've worked with?

Asked by Reubenesque about 10 years ago

I don't know how big these are, but these are the things I'd tell to someone about to join their first startup: * The emotional rollercoaster is normal. It's not like in a big organization where every success and every failure is shared with hundreds of people. Everything that happens feels very personal. * Apple computers are overrated. Buy a commodity PC and install Linux. You'll get more power for your money. * Take care of your body. Make sure you get enough exercise, sleep and water. Snack on fruit and nuts, not candy or chips. Get up and stretch regularly, or rig up a standing desk. Startups are stressful enough already without ruining your health on top of it, and your mind is _not_ separate from your body. If one is in bad shape, the other can only do so well. * The business dudes are not your enemy, but they do bear watching. Don't let them make promises you can't keep. Remember that they need you (a lot) more than you need them. * It's normal, every so often, to wake up and realize that you are in a completely different business than you originally thought. A startup that can "pivot" in a new direction at this point has a better chance of success than one that carries on with the original plan. * Don't start a company where the only plausible exit strategy is getting acquired. Build something that actually takes in revenue.

Do you think people overestimate the difficulty of coding? Like, obviously it's not easy, but is it the rocket science non-programmers make it out to be?

Asked by Christophe about 10 years ago

Probably! Not everybody is cut out to do this for a living but anyone of reasonable intelligence can learn to do at least a little programming. One good reason to do so is that it de-mystifies computers. There are plenty of them around, and they are here to stay, so you may as well know something about them. To a lot of people, a computer is a magic box filled with 0's and 1's that lets you look at Internets and occasionally sends your checking account number to a gentleman in Nigeria. To a programmer, a computer is a scientific box that operates according to very simple rules applied over and over and over again. Knowing a few of these rules will help you deal with these machines that make up so much of our environment these days.

How long would it take me to become proficient in Ruby if I'm starting with a decent understanding of computers and technology, but no hands-on programming experience? How about for becoming a Ruby expert?

Asked by Crosby87 about 10 years ago

Even though I assume that you probably want to learn Ruby to use Rails, I'm also going to leave Rails out of the equation. The reason is that Rails is a big framework that itself takes considerable time to master, especially if you're trying to get your head around the basics of programming and Ruby at the same time. I don't recommend doing this in any case, because Rails imposes its own conventions on programs that you don't want to get into the habit of using too early. The good news is that Ruby (likewise Python) is particularly well suited for learning on. It's got a gentle learning curve that's forgiving to absolute novices but is still powerful enough for professionals to use. Historically, that's a surprisingly rare combination in a programming language. The bad news is that it still takes a long time to become proficient. Assuming that by "proficient" you mean you can write a program of a few hundred lines that does something you actually find useful, without too many horrendous bugs in it, I'd expect it would take about six months of regular practice. Notice too that I say "practice" as opposed to "study": a little bit of theory is very useful, but the only ways to get better at programming are to write programs, and to read and modify other people's programs. As for "expert," well, I've been doing this since I was a little kid, and now I'm in my middle 30s, and I'll let you know the minute I'm an expert. If you'd like to start learning Ruby--and I heartily recommend this, since programming is seriously a ton of fun as well as being useful--I recommend Learn Ruby The Hard Way, available for free at http://ruby.learncodethehardway.org/book, with printable or eBook versions available for a very reasonable price (I have no connection with this work or its authors). As noted above, programmers are also surprisingly gregarious (at least with other programmers), and if you live in or near a city of any size there's probably a local group for Ruby programmers open to the public. Good luck!

What's the longest coding bender you've ever been on?

Asked by Jay about 10 years ago

In college, I participated in several programming competitions that lasted all weekend. Our strategy was to open the question packets at midnight Friday (the first moment that was allowed), read the question, talk about a strategy for a little while, then get a good night's sleep and regroup Friday morning. The good night's sleep was key, since after that it was just catnaps until 6 PM Monday when the contest ended. So, call it not quite 80 hours.

Long hours during crunch time are the rule in this business, and mental stamina is vital, but being able to occasionally bust out 24+ hours isn't actually that useful. After being awake past a certain point, even if you're technically awake and theoretically working, you're not producing and in fact you're likely doing harm by introducing bugs that you wouldn't if you were alert. Much more valuable is the ability to work 12-16 hours in a day, get a few hours sleep, then come back the next day and do it again the next day, and the next.

What are some less obvious places to look for good devs? I'm going to shoot myself if I have to go to another tech meet-up.

Asked by frizzlefry about 10 years ago

It's difficult no matter what you do to find a good developer these days. Assuming that you have a particular technology that you're trying to recruit someone to work in, and not having a lot of luck, try looking for a good programmer who _doesn't_ know that technology and hiring them to learn it. One of the key attributes of a good programmer is that they don't pigeonhole themselves into thinking that they are an "X programmer," where X is some technology. They're a programmer and they can learn any technology that comes along--and they will. If you live in a place like San Francisco or Boston that has a thriving software industry, find the one guy who knows everybody in town in the business and make friends with him. How do you find that guy? By definition, ask anyone.

Why are most developers socially withdrawn? Is that WHY they go into more solitary fields like programming, or is it the other way around?

Asked by dramatard about 10 years ago

Another old joke: Q: How can you tell an extroverted engineer? A: When they talk to you, they look at YOUR shoes. I think the introversion generally comes first. In my case, for instance, I live with my girlfriend (wipe that surprised look off your face) and have a few close friends--the operative word there is "few"--but I spend a lot more time alone than the average person, mainly by choice.

Do you think there will come a time when there will be tools available such that a non-developer can essentially build websites for themselves? I'm not talking about the Wordpress-type of tools, but rather tools that would allow some to build a reasonably sophisticated custom site.

Asked by royleeeeee about 10 years ago

You can build somewhat sophisticated static sites (meaning sites that always present the same information to every visitor, the equivalent of printed material stuck up on the Web) using Dreamweaver or Frontpage (if they still make Frontpage). If you want to do something more complicated than that, and you can't quickly slap it together out of Wordpress plugins and whatnot, you'll have to learn some programming. Sorry, no way around it. Basically, if you have a tool that's powerful enough to let you do that, it's going to be a programming language, or something roughly equivalent (and comparably complex) but for the interface. The bad news is that it takes a long time to get good at programming. The good news is that it's lots of fun and can come in handy no matter what field you're in. If you like, I could recommend a number of good resources for getting started, enough to keep you busy literally for years.