
Ask HN: Want to join a startup as a developer, looking for a mentor - lookin4amentor
Hello everyone.<p>I am a 27 year old guy who is desperately looking for new opportunities.<p>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 &#38; data structures, operating systems, distributed systems, compilers and last but certainly not least UNIX.<p>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.<p>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....<p>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.<p>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..<p>What I know/worked on:<p>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)<p>Fundamentals I believe I need help with(feel free to add to the list...):
-Good working knowledge of algorithms &#38; 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....)<p>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 &#38; 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)<p>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.<p>Thank you.
======
phugoid
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.

------
plinkplonk
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...](http://pindancing.blogspot.com/2010/12/answer-to-will-you-mentor-me-
is.html) . 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.

------
dylanhassinger
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

------
sbisker
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.

------
pepsi_can
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>

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

------
szcukg
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>

------
kuahyeow
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

------
dools
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 ;)

~~~
apsurd
+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

~~~
dools
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).

------
eswat
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. :)

------
igrekel
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.

------
foob
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.

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

------
apsurd
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."

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

------
cincinnatus
People will want to know what city you are in.

------
raykoz
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...](http://arclightrecruitment.theresumator.com/apply/UcxdWd/Software-
EngineerDeveloper.html)

Someone will make contact.

------
zitterbewegung
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>

------
iamsidd2k7
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.

------
jackbean
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)?

------
kaiwetzel
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)

