Hacker News new | ask | show | jobs
Ask HN: Help me come back and choose the right technologies
10 points by adidum 5735 days ago
I am attempting a come back as a programmer, after an unbelievable absence of 3 years. I need your help to refocus, and select the right technologies for what I'm going to need in the near future. Here is my story: Java developer for about 10 years, up to exactly 3 years ago when I quit because of some major family issues that required my full time attention all this time. But there was something else, that is important for me to always keep in perspective: I was really burnt down and I also became unhappy because my profession took so much time from me, actually all of it, for constantly having to learn something new and being good at what I was doing. I actually love learning, but I my profession didn't leave time for learning anything else besides computers, and life is so much more than computers. I guess I'm a generalist more than a specialist. So this is the first half of my question, how can I be a hacker but in the same time have a real life outside computers. How do you balance both?

Having said that, I am ready to start again and I thought I'd start fresh, since my Java is probably already a bit rusty. I've been looking these days at things like Ruby, Python and a few LISP flavours. I am attracted to LISP because of the paradigm change it requires, and I'm not really new to it, I used it a bit in the university. The reason I want to come back is because I do love technology, always did, and I already have a project lined up, for which I'm looking to select a set of technologies that will make productive ASAP. This project is a directory of local activities for people. The closest model I can think of is Craigslist, with the major difference that all the listings have a temporal dimension, they start and end at some time, and that people can rate and comment on those listings. As an example of such activity, let's say a chess class, that starts in 2 weeks and goes for 3 months, 2 days a week. The project is about aggregating such activities, broken down on categories and geographical areas. How would you do such project, most efficiently? This project is important for me to get it done successfully and on a timely fashion, I don't have time for too much trial and error, to spend much time learning something that turns out not a good choice. That's why I decided to ask you guys. I would like to choose something that doesn't have a steep learning curve, so I can became proficient with it sooner than later, something with great support for web applications, tried and stable. Should I stick with Java, since it's the only language I am now familiar with it, and it has so many mature web frameworks? Or is this a good time for me to take the leap towards something like LISP? I must admit the idea of a paradigm shift associated with my comeback sounds very appealing to me. I've already started replacing relational databases when it comes to the data model with something more semantic, like TopicMaps and/or RDF. In the same time I want to be realistic and maximize my chances of a successful comeback and project completion. Sorry for the long post, thanks a lot for your kindness.

5 comments

Welcome back!

I recently "came back" so to speak. I spent 4 years after college on a development team for a Fortune 500 company that didn't actually develop that much and I came to see my profession as just a paycheck... I got a wake-up call and I've re-discovered my passion.

Congrats. Honestly, I didn't read your entire wall of text there but if you want to get into something cool (and use something you already know) you could do what I'm doing right now and learn Android development. It's a lot of fun and I didn't even know Java starting out. The docs are great.

http://developer.android.com/

thanks so much for your welcome. I have a question for you: what are the reasons that determined you to learn and develop for Android? I'm asking because to me it's all about motivation. If I have very meaningful reasons for what I'm doing, then I enjoy doing that, and don't quit too soon.
It sounds like you have a good idea of what you want to build, which is great!

Now it sounds like the thing you have to do is figure out the data architecture - that could help make the rest of your technology stack decisions for you. For instance, can your data structures be modeled in something NoSQL like MongoDB or CouchDB? To me, it sounds like you'd want to use a relational database, but it would be fun to experiment!

yes, that is sound logic. The data structure model is very important to me. I would like to create a framework that I can reuse, where data is modeled semantically. I can't believe there isn't such framework out there already. I'm thinking TopicMaps. Java might be the top choice if going this way. Thanks for the idea.
If you want to be productive ASAP, and have done Java for ten years, I would suggest Java.

Picking up new technologies is great, but even the most user-friendly ones will have a learning curve. IMHO it's best to start with a new language/framework/etc as just a small, isolated chunk that takes advantage of its sweet spot.

I've always been a fan of learning what interests you. If you like Java, stick with it. Learn what has changed in the past few years so you can capitalize on your experience.

That said I want to give a vote for Python. I knew Java and python just seemed to feel right for me. YMMV!

Turn off email, your phone and the TV.

Try Google AppEngine, Java and JDO. Install IBM Eclipse and the Google AppEngine plugin and deploy in two clicks. Move to VPS if you need more than what Google offers.

Do LISP/RDF research when code is up and running.

I'd recommend Objectify instead of JDO.

http://code.google.com/p/objectify-appengine/

The reason why Google chose JDO as the default interface to the AppEngine's datastore instead of JPA is because the datastore is not really a relational database and JDO is much better suited for non-relational backends.

However, there's a lot of stuff in JDO that you will never use in an AppEngine application.

Objectify is a thin wrapper around the low-level datastore API. It's a pleasure to work with and it will save you a lot of time.

Believe it or not, but I lived without phone and TV for a few years now, it's great :) I'm giving Google AppEngine a serious try. Otherwise I'll have to look for a Java Web framework, the problem is that there are too many out there. thanks for the advice!