If this question has been answered already, please direct me to that thread. But for the life of me I can't find this question amongst, and I believe this the best place on the web to receive good advice from fellow programmers(even though I wouldn't dare consider myself a true programmer yet).
I've immersed myself into learning computer programming and am taking a variety of online courses, reading the classics(Charles Petzold, Abelson & Sussman), coding in my free time, and even attempting to teach myself database structures and discrete math.. so I can better understand the complexities of software development, not just learning a given language.
That said, I do need to know which language or database specialization will get me fastest into an entry-level job. I'm an American currently teaching in China with 12 more months on my contract and have plenty of free time. I'm willing to put in the work and develop my own side projects to prove my worth. I even have little preference for region of the United States. I just want actual company experience for a fair wage while I build my talents. I realize the job won't be glorious, and it will be grunt work. It may not even be directly programming-related. But I'm willing to pay my dues.
Common sense says I should focus on PHP, MySQL or JS since many of the job listings are for those specializations. But everywhere I look details how entry-level jobs for those specializations have hundreds of applicants, and I fear even with a decent portfolio of my own work that I may lose out to recent CS grads. A stack exchange question awhile ago detailed a somewhat rare language that many financial institutions often need workers for, but I can't remember the name of it or seem to find the topic again.
Which leads to kind of an odd question.. what should a motivated twenty-something with passion and plenty of time focus on if they wish to be comfortably eligible for an entry-level position in one years' time? Most people ask 'What is the easiest language to learn?' or 'How do I get an entry-level job without a CS degree?' I'd like to think I'm taking it a step further when asking fellow programmers 'If starting from near scratch, what would you focus on or prepare yourself with if you wanted a programming job within one year'?
Learning CS topics (eg programming, database, computer architecture etc) on your own is somewhat hard but not impossible.
Today's market some form of programming language (structured, OO, procedural etc) and database system (Oracle, DB2, MySQL, SQL Server) is practically a must.
From the programming point, learning data structures and algorithms will be key. Since you mentioned discrete math, this would help you to understand data structures a bit more easier I think. As for what language to start? If you look at college programming 101 course description, I bet most will use Java, teaching object oriented (OO) concepts from day 1. But IMHO, an OO language shouldn't be the first language, but procedural. Back in the days when I was in college, my first language was C then assembly and scheme and C++. Java or PHP isn't even taught (not in the courses I took anyway). Of course C and C++ has an OO version. OO C is for iPhone dev these days.
Long story short, data structures and algorithms are key to any language. The programming language itself is really talking the programming paradigm (eg OO) rather than the actual syntax.
For DBMS, you can't get away with not knowing SQL. Is that double negative? Apart from that, learning a particular DBMS in a bit detail is good. By detail I meant able to do typical DBA tasks (eg create DB, tables, views, etc) and write functions and (SQL) stored procedures.
Which ever DB and/or programming you choose, do consider the platform or operating system it can run on. Eg Windows platform will most like use IIS as web/app server, SQL Server for DBMS and C#/VB/ASP.NET for programming.
FYR UNIX/Linux usually refer to LAMP (UNIX/Linux, Apache, MySQL, PHP/Perl/Python)
I mentioned app server along the way, which you should get familiar with if you are doing enterprise/web development. Common (Java) app servers include Red Hat JBoss, Oracle Glassfish, Apache Tomcat, IBM Websphere, Oracle App Server, Oracle Weblogic, Apache Gerinomo and many more. The list can go on and on.
I should let you digest all that a bit
K. Tsang CEng MBCS PMP PMI-ACP OCPJEA OCPJP
Always! Wait. Never. Shut up. Look at this tiny ad.
Devious Experiments for a Truly Passive Greenhouse!