What are the most recent technologies being used by startups and other companies (e.g: Facebook, Twitter, Google, etc) ?<p>e.g: MongoDB, Cassandra, etc
Going about it all the wrong way. You need fundamentals, not technologies.<p>Get yourself a list of buzzwords; read each one out and ponder for a minute how it might be written, how it might work given the limitations of the platform(s) it runs on (you know your Posix/java/win32, etc internals, right?) If you can't mentally visualize how that thing works internally, or how it might be implemented, do some research until you have a firm understanding of how it functions internally. If you don't still get it, research the underlying <i>techniques</i>.<p>As a programmer you're not required to implement every tool you might use, but you sure as hell need to grok its form and function at the lowest level.<p>This frothy trend-hopping is just pure wankery. Don't be one of those suckers. Learn the primitives of <i>everything</i>.<p>You also need that tireless spark, the desire to figure things out and learn their innards; so you don't have to poll others for what you should hack on.<p>(btw, am I the only one who finds the question irksome in a very personal carpet-bagging way?)
You should learn first trusted technologies that are here for long time. Because they despite what people say they wont disappear - there just are no alternatives for them.<p>I would suggest you start with a good RDBMS system - like Postgresql, for programming language Python and Java are good picks - all purpose ones - it pays off to know something that has libs not only for webapps. Ruby is also not bad pick - but python has better more mature libraries for general work.<p>If you insist on nosql - i guess any key-value store would be good, I suggest Redis for memory based + couchdb/mongodb.
But seriously real world is not like "lets do something with new shiny tech". If you want a good job you need to know "standard" things well, you need to learn how to scale applications - and no scaling is not about using noSql, it's the architecture of whole thing that scales not like some magic formula that will solve everyones problems. What i'm trying to say there is no such thing as set of "recent technologies used by startups", every person you ask will have a different answer for you - but basics will always be necessary.
Coming from a hardware designer, I would say just focus on mastery of Python and C. As far as technologies go, only learn what you need to do the job in front of you. You can spend years reading books and online documentation about this or that framework and never turn any of it into useful output. Remember Kipling: "think... but do not make thoughts your aim."<p>As far as fundamental knowledge goes, I would recommend for any software guy to do a rigorous study of computer architecture. Wrapping your head completely around how digital computers actually compute things will serve you well throughout your career.
Tech will change but the core of computing science will not. If you haven't done this already: Immerse yourself (even briefly) in the fundamentals of comp sci with Java, database structures (RDBMS) and healthy amount of maths. No matter the platform, I always seem to revert to what I learned back then.
Please study computer sciences before stucking yourself into a endless quest for the best technology. I can tell you that every new tech is fully based on existent CS concepts.