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