Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Want to join a startup as a developer, looking for a mentor
48 points by lookin4amentor on May 29, 2011 | hide | past | favorite | 25 comments
Hello everyone.

I am a 27 year old guy who is desperately looking for new opportunities.

I have been programming in Java for the past 5 years, mostly fixing bugs and building new features or parts of the applications I have worked on. I have rarely had the opportunity to build an entire web app by myself, and I learnt most of the Java I know by googling and reading tutorials/books online. I went to a really really academically poor university, I have a very very bad math/analytical background and I lack the fundamentals of computer science, fundamentals meaning algorithms & data structures, operating systems, distributed systems, compilers and last but certainly not least UNIX.

I am currently rotting away in a really crappy job fixing bugs for a really crappy product where I don't get the chance to work with all the best practices like design patterns, junit and tdd, and I keep looking at all these cool startups and all the cool technologies they are allowed to work with and I realize that the only way I can get out of this job and enjoy my profession once again is If I become like them. I am 27 and don't want to continue wasting my life, there's so much I don't know and I feel so worthless when I see all these people working in all this cool stuff, being succesfull and most importantly having fun!. I am not having fun doing what I am doing, I do not feel succesfull in any way and I see no way out because I am simply not employable.

I know a lot of you will say I could do all of these things on my own and in fact I started by going the academic route, to make up for all the stuff I missed by not going to a good university like reading SICP and Introduction to algorithms but this is a long process and even though I am not going to quit reading these classics I really feel I need exposure and experience in technologies that will make me employable in the very near future...I have bills to pay and can't just sit on my butt while I read books...I feel I need to get my name out there and gain practical knowledge that will help me land a job that will not make me hate my life....

I have tried to build an app for myself many times but I never really have an "itch to scratch" I feel lost in a sea of unknowns and overwhelmed by the amount of stuff I don't know and suddenly something as easy as a blog engine becomes an impossible task and I get discouraged and then I have work to do and thus I forget about it again and the cicle continues.

I seriously feel I lack the confidence to do it by myself, I really think I need a mentor, someone who will show me the ropes, who will point me in the right direction, someone to look up to and bear with me through the entire process... I wont need you to hold my hand throughout every step, just point me in the right direction, if you have an open source project let me help, show me the right way to do things, show me the right tools, the right procedures, just tell me what I should learn and let me help you as you help me, I don't have much money but I am willing to pay for these services..

What I know/worked on:

Java servlets, jsp(scriptlets), some spring, struts, hibernate , ibatis, some lucene, some jax-ws/axis I have some experience with SQL, dom javascript and some dojo, dwr for AJAX, some GWT-EXT from my thesis project(really really crappy code) basic html/css(very basic) some ant and some maven, svn (via subclipse and tortoise, no command line)

Fundamentals I believe I need help with(feel free to add to the list...): -Good working knowledge of algorithms & data structures: I'm worthless at solving programming problems/challenges...I want to gain an understanding on how to actually solve problems using different algorithms/data structures, basically learn how to think about these things not just simply memorize a list of algorithms/data structures. -Enough knowledge of compilers/interpreters to make my own simple language as an excercise and understand every step involved -Solid understanding of the OS principles that every programmer should know -Learn c/c++ -Become productive in a new programming language, preferably functional (Ruby, Python, Haskell, lisp, perl....)

What I would like help with: -Become a Ruby/rails/Python/django/{insert cool new technology that startups use here} programmer with a solid understanding of all the "Agile" tools and open source ecosystem involved with it including Test Driven Development, Agile Development, Git & github,heroku and UNIX, basically understand the entire workflow involved with being an active open source contributor. -Learn how to use emacs/vi like all the Ruby/Python/github wizards do -Learn Linux command line, bash, sed, awk, EC2 and the basics of linux system administration that every ruby/python startup guy should know -Learn and become an active user/developer of the new cool technologies like memcached, redis, nodejs, rabbitmq, hadoop and everything else the ruby/python startups use nowadays -Become an active participant of the ruby/python/linux/github/lisp/startup open source communities and be able to hold my own -Learn how to develop web apps the "agile web", fully understand HTTP (basically be able to answer:"What happens when you type www.(amazon|google|yahoo).com in your browser and press return?" in detail with confidence)

I know posts like this show up time and time again...so I am sorry for making another thread about this but I am desperate and I feel I'm slowly wasting my life, I feel worthless and confused and this is my last resort, I have confidence that this community is one of the few places where I can find the right person to help me in my Journey.

Thank you.




I've been in a situation similar to yours, and I'm just getting ready to make the jump from big corporate engineering software to my own startup.

I keep looking at all these cool startups and all the cool technologies they are allowed to work with and I realize that the only way I can get out of this job and enjoy my profession once again is If I become like them

That's a big assumption that's bound to make you unhappy. There are other options; why not apply for other jobs in the Java world and gain more experience?

People in forums like HN love to disrespect Java in favor of newer and sometimes better tools. If you're taking that personally (Java sucks; I use Java; I suck), you need some perspective. Java totally rocks compared to what the rest of us have to use. I once spent six months working in FORTRAN on a Gould/SEL. The only editor I had access to was "ed", God help me. There is always someone worse off than you. There people in my office who have maintained analog computers and entered assembler code byte by byte using eight toggle switches.

Working with awkward technology is a rite of passage.

What I would like help with...

The people who are well versed in all these tools, even here, are a small minority.

It sounds to me like you need to start having fun again with computers, and that won't happen if you compare yourself to some non-existent ideal.


This may not be the answer you are looking for, but (good) mentors result from actually doing things, not vice versa. Just f%^%ing do stuff that interests you and learn whatever you want to learn, without waiting for permission or validation.

I once wrote a blog entry on a somewhat related topic at http://pindancing.blogspot.com/2010/12/answer-to-will-you-me... . HN discussion at http://news.ycombinator.com/item?id=1994998 .

If it helps ease the pain, I was an enterprise sw dev well into into my late twenties, before I reached the "WTF am I wasting my life on this crap" moment. In the days of widespread internet access and Amazon, the only limits to your self improvement and leveling up are within you.

My suggestion : take one item from your "want to learn" list and get really good at it. That process will open more doors (including good mentors). "Asking random strangers on the internet for mentorship in everything" (to quote strlen) is unlikely to result in much progress.


RE: Picking your axe

Your wish list is all over the place. It would help to pick one of the goals listed (i.e. Ruby, or Node, or Python) and hone in on that. Once you figure out what language you want to learn, devour everything on the topic from these sources: * Peepcode tutorials * Slideshare slideshows * Youtube videos or other longform tutorials

Get a Hello World example running in your new language, and then see if you can get it wired up to a database. Congrats, now you're up and running...

It's not sexy or new, but the book the Pragmatic Programmer is the bible on how to become a good programmer and not just a hack.

RE: How to build a web app - read Getting Real by 37signals, this will give you a nice high level approach. This is also a great introduction to agile development principles.

"but I never really have an itch to scratch" sounds like you're not brainstorming hard enough. Even in your post there's the seeds of many different itches. Find the most basic thing you trip over every day, and write a tiny tiny software tool to fix that problem.

Last but not least, sounds like you could use some more experience with front-end concepts. I recommend Bulletproof Web Design by Dan Cederholm as a great overview.

Technology moves too fast for anybody to keep up, just do your best and always keep learning! Good luck


This is going to sound strange, but from personal experience, it sounds like you need to move on.

It almost doesn't even matter what you move on to. It doesn't even matter if it's with the hottest tools, or if it's with the worst tools in the stack. What matters is that you've stopped learning. And almost by definition, anywhere you move to from here, will be different from here - and thus, will give you a chance to learn.

Don't wait until you've found a "perfect mentor" to move. Don't do what I did, and kill your time and energy waiting for the perfect opportunity to move, learning nothing when you could have been learning something. Each thing you move to will give you a little more opportunity, a slightly different perspective. Sometimes you'll even take steps backwards by mistake - but that's OK. Turns out that you're learning from those too. What's important is that you keep moving.


I wrote an application for programmers who want to learn and practice using data structures and algorithms. It includes tutorials and video lectures. I created it because I myself wanted more practice. I hope you find it useful.

http://blueberrytree.ws


This looks exactly what I have been looking for. I have just signed up, can't wait to try it. Thanks


Signed up, this looks awesome!


This is great! Thanks!


For Math: http://projecteuler.net/

For algorithms: http://www.topcoder.com/tc

I would suggest not trying to think of learning this cool thing and all. That's wrong attitude imo. Java's pretty cool too, even though personally I'm Anti-Java. Continue with SICP, learn Functional Programming. Practice Cormen exercises with python or any language of your choice. Looking for a very awesome open source project, well hit this http://www.financialnetworkanalyzer.com/.

For inspiration: http://norvig.com/21-days.html


I have seen a good number of people solve this problem by literally doing it - i.e. contribute to an open source project in however small a way, look for jobs which actually do interesting things.

The unfortunate truth is that most people do not have time nor motivation to become a mentor. Even then they will only spend their experience on someone who you could argue does not need a mentor.

It is much easier to find someone who will be willing to point you gently in the right directions in a new Job. There are lots of companies who are very friendly and willing to accomodate one or new newbies. In six months time, you will find yourself in a different place - somewhere better I hope


If you want to understand better how things work "when you type a URL in and hit enter", you're better off toying around with a LAMP stack and cutting your teeth on PHP.

PHP gets a really bad wrap because it's not a Good Language (TM) and lacks many features that CS nerds consider essential but it's a fantastic tool for learning about web development and building web applications (many of the best web applications in the world including Facebook, Wufoo and Mailchimp are all written, at least in part, in PHP).

PHP is also a very easy language to get freelance work in which pays the bills - and since so many people who use it are completely incompetent you can quite easily differentiate yourself. Beware, though: you'll spend a lot of time fixing other people's horrible code but the good news if you can do that effectively you can usually charge quite well for it (ie. when people get to the point where they decide they've "outgrown" their shitty PHP developer they usually have reasonable revenues and are ready to pay an expert some decent cash to fix the various problems).

Also, get a good grounding in relational database design. Learn how to draw an ERD (entity relationship diagram) and how to write SQL. Although all the cool kids will tell you that you need some "NoSQL" solution to be "web scale" designing your system with a solid data model simplifies development and maintenance considerably.

Overall, I think you're better off doing some freelancing. If nothing else, this will give you exposure to many of the problems faced by real businesses and people every day - there are no shortages of itches to scratch when you're dealing with the "Fortune 5,000,000" - just ask 37signals.com ;)


+1 for getting GOOD at SQL.

Regarding PHP I'm a little mixed. I started my programming career on LAMP so I wouldn't be where I am today without it. But looking back, I sure wish I would have started "properly". A good MVC framework, an intro to the command line. I'm not blaming PHP itself. Case in point http://kohanaframework.org/ (which i eventually discovered a year in..)

Rather imo it's just way way too easy to learn bad practices as a n00b programmer in the php community. You really really need to know where to look and assume the quality respectfully. if you google stuff as i did you get "scripts" that 9/10 are terrible but you don't know any better. what is the "script" for comments on my blog? Anybody have a "script" that lets me run a facebook clone?

Aww man what times!

I guess the good thing is I have a fuller perspective. I was the ultimate spaghetti coder and now I know exactly why and how that's bad, real bad .. I'm also pretty decent at sql because I wrote everything natively. B)

I'd say rails just because I know it and it forces you to learn the command line, MVC, and OO. php is good when its properly OO MVC but what n00b knows that? I sure as hell didn't =p


Since the OP is already familiar with Java it's my assumption he'll seek out the "right way" more naturally than someone completely uninitiated.

That's the route I went: 6 months of C at uni (as well as some assembly for PIC and Motorola micros) then learned Java on the job then freelanced for a while doing PHP. I found I was immediately able to discount popular open source projects of the day (osCommerce being the most memorable) as appallingly written just due to the fundamentally broken way they made use of object orientation (this was before PHP5), even though I didn't have that deep an understanding of the "big mistakes" most people make when writing PHP. In fact one of the first things I did in PHP was write my own framework, which was a good exercise and I still use it in production but I didn't know enough to make it good/usable for others so it never went anywhere.

I'd say, also, in general the "ambience" in the PHP community has improved immeasurably. If you're using ##php as a resource, and modern articles and frameworks to learn from, you've got a far better chance of not falling into the n00b traps than you did 5 years ago.

As a side note re: RoR - I just can't take a framework seriously that would settle for an ORM tool that doesn't support composite primary keys. Same with Django. They're toys as far as I'm concerned.

I've not used RoR commercialy but I have used Django and found it's "opinionated" nature very frustrating - felt far too detached from the "real" HTTP and there were several instances where I wanted to solve a problem some way that was perfectly reasonable in terms of performance and security but Django "wouldn't let me". I assume it's the same with RoR although I've never had good reason to find out.

IMO if you're saying "get a solid grounding SQL" that is not compatible with taking up rails (or Django).


I have been in your position before—I still am in a way—and I can understand the frustration you’re going through. But first, I think you should really narrow-down the subjects you want help with if you want to find a dedicated mentor. There are many of us here that will help you in some capacity to get to where you want to be. But your current list is way too big for a dedicated mentor to help you with and from the sounds of it it sounds too big for yourself to take on at the moment.

I know you want to catch up with all the stuff you’ve missed working in a dead-end job, but you should treat this as a marathon and not a race. Leave an email in your profile and focus on a few practices and technologies that the people that contact you can help you with and that align with where you are heading. Pick stuff that naturally bleed together, ie: Rails and TDD

Are you still in your current Java-based job? Ask your manager if there are any projects you can join where they are testing the stuff you are interested in—even widget companies and megacorps have projects like these. Also ask your co-workers about what they hack on outside of work, you might find your mentor this way. Even though you dislike your job I’m suggesting you look towards it to help you on your journey, because if they’re supportive enough you’ll be able to turn a situation you hate in your favour and boost your happiness a bit.

If my advice about looking towards your current job doesn’t work out, you may have to just take a break from everything for a while, like others here have said. Then come back and take on your problems with renewed energy.

Again, leave an email in your profile for others to contact you. I’m moving from away from being a developer to a designer, but hit me at energy@eswat.ca if you found anything I’ve said useful. :)


Its good that you want to change things and that you tried taking matters into your hands.

While I can't offer what you are looking for I'll still go for a few pieces of advice. First, realize you have been affected by the way the java enterprise world works. Proof is the list of frameworks and technologies that you felt you needed to disclose, also is the fact that you are looking for the "cool tech". Don't see these technologies as merit badges you collect, learn to look at things at a larger scale, how they compare, how they fit together, how they help you solve problems. Get really good at finding the right fit and learning the technologies quickly. Don't focus too much on the puzzles, unless you find them entertaining.

As for the finding an itch to scratch, its easier if its your own but its better if its one many people share, even better if its one technology people usually don't have. You're more likely to find one if you spend time doing other things with other people.

Finally, maybe you just need a job change not all java jobs are the same.


This site just got submitted in the last couple minutes: http://hackermentors.com/ (HN link: http://news.ycombinator.com/item?id=2596024). It might be worth a try.


I've got a pretty good idea of what you're going through. Email me. My address is in my profile.


Put your email in your profile.

It's great that you are sufficiently motivated, willing, and ready to learn.

Important: You need to iron what kinds of things you really want to create. There are a ton of spaces you can venture into via programming. By your wish list it seems like you want to build web-apps.

I currently work for a yc-funded startup as a rails developer. I have no further formal education beyond high-school. I happen to say this a lot but it's exactly for people like you. You don't need a formal CS degree to build web-apps specifically. Of course I couldn't work for google atm but the point is you need to pick WHAT you want to build. Chances are what you like does not involve the stuff you think you need to learn. If you want to work on natural language processing sure you may need some more formal training, but a CRUD app is a CRUD app is a CRUD app.

So what do you want to build? What do you really want to build?

If you want to be a web junky I can help you there:

1) Run Linux.

Or get a macbook if you can afford it but you will still need to know Linux since your app will likely be on a linux-based instance. You NEED to know your away around the command line. You might need to check logs or do some sql on your staging server or something. GIT is also a must and runs on the command-line. You'll debug your app in console mode. You'll run rspec tests in console. You'll launch your first rails app on http://heroku.com. Next get a http://linode.com and follow the tutorials about how to set up your own server. (the point is learning how its done, not necessarily being a pro sysadmin).

2) Rails.

Follow this tutorial and you will finally be able to build that blog engine =) http://guides.rubyonrails.org/getting_started.html

(note: I usually recommend http://www.sinatrarb.com/ as someone's first web-app in ruby but it seems like you understand programming enough to tackle rails, though the sinatra is ass-simple and lets you get your hands dirty with ruby itself. But knowing your way around rails is a definite plus on the employability side.

3) Get GOOD at MySQL (or another datastore).

Apps nowadays are all about the data. The trouble with frameworks is they grow increasingly dependent on abstractions. I'd wager that a good number of employed Rails dev's couldn't write their own sql. Using an ORM is great and has great MVC an advantages but you can't let it be your crutch. Nosql is damned cool but mysql is the defacto standard so therefore gets +1 on employability.

4) Javascript.

I would not recommend doing any kind of javascript "the rails way". Just nevermind all the stuff you read about javascript whenever it has anything to do with rails. The reason is because you don't actually be writing javascript and you need to learn how to write good, unobstrusive javascript. To speed things up you should be good with http://jquery.com. Many here advocate learning to code without a framework but jquery is that good. Again just don't use it as a crutch.

Well that's about it for now. Please feel free to ask me questions as these things are surely not as straight forward as I've laid them out to be. Even getting rails up and running can be a pain in the ass (hopefully you aren't on windows). My email is in my profile.

Remember, I sincerely believe the most important thing is officially working out what it is you really want to create and then you can assess how to get there.

Have fun!

Oh almost forgot. Some great advice I got from a fellow programmer I met in Boulder. It's actually the key to what made me commit to learning linux/rails (i was a lamp guy before) and which ultimately led me to the job I have now.

"The bar is lower than you think."


Amen to the "get good at mysql". Please do. Really understand indexes.


People will want to know what city you are in.


Sounds like you need a change.....

Come down under and restart www.arclight.com.au

Check out the job post and link back to this post... http://arclightrecruitment.theresumator.com/apply/UcxdWd/Sof...

Someone will make contact.


I think I am reminded by a previous blog post on HN about asking to be a mentor and its pretty relevant. http://blog.momentor.com/dont-ask-someone-to-be-your-mentor


It always helps to have a side project, keeps you edges sharp. At the same time try having weekend projects, pick up a tech, see videos on youtube, read stuff from HN. Email me on my gmail id: iamsidd.


You're looking to learn, that's all that matters. Now its just matter of doing it.

I'd be glad to help, do you've an email I can reach you at (mine's in my profile)?


Foremost, I think you need to focus on a few specific goals or projects you want to work on and then pick the tools and skills you need to develop to achieve those goals so you have small successes early on and are motivated to kep going. Then you can tackle the next steps which may seems overwhelming initially.

From what you write it is often not clear to me exactly why you want to learn about those things you mention. You mention some cool technologies but what makes them cool? For me, knowing why I want to learn something tends to keep me motivated even when things get hard or I got stuck somewhere. Maybe that's a personal thing, though.

It appears there are two primary changes you want to make 1) Get out of your job and work in a more exiting setting, e.g. by learning Ruby/Rails and working in a startup using exciting tools and technologies and not feeling left behind on a job where your mind retreats. 2) The other concern seems to be long-term: gain a more solid understanding of the fundamentals of computer science and mathematics.

Outside of traditional university classes it seems best to pick specific problems (small projects) where you can practice newly gained skills. What do you find exciting , where do you want to apply your new knowledge? Robotics? Social networks? Computer graphics? Music? Sports or Health? Does mobile development interest you? With your background in Java, Android development should be easy to pick up, for example.

I think learning new programming languages is great, e.g. learning Haskell in university was mind-expanding, even though I have never used the language ever since. Keep in mind that you can only start with a limited number of new things without getting lost so pick your priorities. Consider clojure with your strong Java background.

You mention you feel lacking in fundamental algorithms but what is it, specifically, what you have problems with? Since you obtained our degree (albeit from an „academically poor university“) you must have some introduction to algorithms class, what is it you are missing? What kind of programmer challenges do you have problems with and what is it you can't do?

Are there many user groups in the area you live? I found going to local lisp meetups extremely motivating and there are often groups covering for example Ruby/Rails, Lisp, Android, Arduino, Processing, JavaScript, … You see what other people are using the tools for and will often get your questions answered right away if you have trouble with something.

Linux: Getting somewhat comfortable with UNIX/Linux and the command line seems relevant to quite a few things on your list. You don't have to become a full-fledged UNIX-admin, don't set your own bar too high! Do you have Linux installed? In a virtual machine (e.g. VMWare Player on Windows, Parallels on OS X)? Or as a dual boot option? If you don't have it on a Notebook, consider getting a cheap used IBM/Lenovo X61 so you can take it to user group meetings. I learned my basic Linux from mailing list discussions on open source projects or IRC but I'm sure there are some good books or tutorials that cover the basic principles, commands, and simple scripting.

By the way, I can only +1 learning jQuery and more SQL (I like Bill Karwin's stuff on the web, he has written a couple of books as well)!

(edit: my email is on the contact page)




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

Search: