Alejandro Machado [alemacgo]
How did you begin programming and at what age?
When I began studying at my University. I was 18 years old.
What languages do you code, and in what platforms?
Python, c, c++, Java, haskell, some ruby and several others. MIPS assembly language.
I'm used to my Mac, but I can code on Linux, too.
What machine configuration and operating system do you use?
Late 06 MacBook.
Mac OS X 10.6
Please list web addresses where we can see some of your work
I haven't posted my "serious work" on the Internet yet (I'm working on my undergraduate thesis as of now). You can see what interests me by checking out pinboard.in/u:alemacgo.
What motivates you to undertake a new project?
A strong dream. An appealing idea. A useful purpose, even if it is learning how to code using a new platform, framework or language.
What part of project development is most gratifying to you?
Designing the data structures and the user interaction. A great design is always very important.
From the outside, it seems a rational job, but is creativity necessary for programming?
Absolutely. There's only one thing worse than a bad programmer: a programmer who knows only one language, only one tool and only one way and doesn't question himself. Having an open and creative mind is essential to connect with the end user and fulfill his expectations.
What conditions do you need to concentrate when programming?
It varies. Sometimes it is useful to shut the internet off. Sometimes music puts me in a good coding mood.
After working for long periods of time, have you ever felt as though you were in a bubble?
Not really. I have felt the need to get out and catch some fresh air, though.
When you check out code you wrote time ago, what's the main difference with respect to code that you write nowadays?
It is often much more naive, and uglier. Every day I to generate more beautiful code and less nonsense.
Do you still buy programming books, or do you learn everything from online sources?
I still buy some programming books. I wholeheartedly recommend "Programming language pragmatics" by Michael L Scott.
Do you think programming should be taught at the basic education level?
Yes, I think so. It is a natural task every human being can do, at some extent; it could come in handy later on, and if not, it will be just another subject of general culture. Culture never harmed anyone.
What has been your experience in marketing your software?
As of now, none. We'll see :-)
What do you learn from software users?
User interaction and user interface design concepts. They should be central to your application, yet we don't take them into account as often as we should.
What would be your solution against piracy?
Validating serial keys using the Internet.
Would you consider yourself rigorous in the organization of the coding that you write and on commenting it?
Yes, most of the time. When time constraints appear in the equation, this is more difficult to maintain, but I try nevertheless.
How do you calculate the budget for a software project?
No idea, sorry.
What are your favourite games and on what platform do you play them?
Zelda Ocarina of Time, N64.
Warioware smooth moves, Wii.
How often do you clean dirt-buildup on your keyboard?
Every 3 months or so. Macbooks appear very clean most of the time.
How do you feel when friends or family ask for your help in solving domestic computer problems?
I'm already used to this since I was 12 years old or so. It's a normal thing, but I wish what we do for living exactly was better understood.
As machines for development, what opinion do Macs deserve?
They're great. Simple, you don't have to worry about a thing, more time for coding.
How do you protect your computer from viruses?
In social settings, do people become interested when you tell them you are a software developer?
Not very much. We talk about other things. Unless, of course, we're all developers hanging out.
Do you work alone or in a team? Which do you prefer?
I usually work in pairs, and I prefer it that way. extreme programming works for me.
Are you one of the first to update to new software when it comes out, or do you normally wait until more stable versions appear?
I tend to use beta software if I desperately want the new functionality or if I want to help in finding bugs. If not, I take the easy road and play stable.
What is your main reason for not meeting project deadlines?
In your opinion, which company helps software developers the most?
I don't know very much about this. I know Google helps us out quite a bit.
How many breaks per day do you normally take?
It depends. Usually 4 or 5.
At this point in your career, what would be the project of your dreams?
Working in natural language processing, helping to advance technology with the aid of AI techniques.
What is your next project?
Porting an existing iPhone app to Android :-)
Which websites or forums for programmers do you frequently visit?
Hackernews, Reddit, stackoverflow.
What advice would you give to someone who wants to become a programmer?
Think about the problem first. Then think about the code.