I am reading through Deitel's Java How to Program 7e, currently through the 3rd chapter. My goal is to get a programming job without a CS degree. There are only about 15 exercises at the end of each chapter. Is the lab manual or a lab component in general totally necessary? I can't find one except for an earlier version like 5e. I just want to take the shortest path to getting a job without playing a lot of catch up once I get one. I feel like I understand the terminology but I want to get very comfortable with actually doing the coding. Thanks in advance
My recommendation is to finish the degree. Believe it or not, even though it may not be related to the field (and even with it you have a really tough uphill battle), not having any degree makes it almost an impossible battle.
I don't think having read/done the exercises for one book is going to be enough to get you a Java job. Remember you are competing for entry level jobs with people who have CS degrees. And many who have internship experience. At a time while the economy is still tight and there are less jobs.
If I were hiring an entry level person, I would look for some evidence that the person has experience programming. (an internship, a SCJP cert, classes, a project, etc.) All of these take time, there aren't shortcuts.
Thanks Henry I know it is going to be a uphill battle and plan on spending six months to a year getting through this first book with more to come later as it is a hobby for me right now. The open source project suggestion sounds helpful. It is just one book but it is 1600 pages so I thought it would give me a firm foothold. Not looking for shortcuts just learn better at my own pace.
Personally, I'd start elsewhere. Do you know what kind of programming you're interested in doing?
Joined: May 22, 2010
Not really other than eventually learning C# and javascipt as well in order to be versatile. So where would you start? I just picked up what I thought was one of the best reviewed intro books in one of the most popular languages.
Learning *both* C# and Java at a level good enough to be useful is... ambitious.
If you don't know what you're trying to accomplish you're shooting at indeterminate targets in complete darkness.
Joined: May 22, 2010
Since you mentioned that you do some hiring, where are the most jobs? That is my main concern. I will be job searching in Oklahoma City or Dallas, so the main employers are Tinker AFB and oil & gas as far as I know. The Tinker job adverts only require you to fluent in one of about 5 languages. I am open to any advice since my route is unconventional.
Dallas has the expected metro area programming positions; it probably doesn't matter much. Don't really know about OKC anymore.
The thing is... I'd almost never hire anybody that only knows Java, because Java's a horrible language to learn how to think about programming because it has pretty poor abstraction facilities. Not having been exposed to other languages during school you're hit with a double-whammy from *my* viewpoint.
Others will have very different opinions than me, though--I come from a Smalltalk/Lisp background, so I will always gravitate towards people that have experience with metaprogramming, functional, or more dynamic backgrounds.
Having a Computer Science degree does not mean much in Java/business software world. Here it'sits importance depends on the actual person that is doing the hiring for a specific position. There are many individuals that will hire English majors, Information Systems majors, etc. for entry-level positions that may involve programming or software design. Actually, in my experience, English majors eventually turn out to be more valuable for business software engineering than Computer Science majors, especially in publishing or information industries. Moreover, a programmer with a background in Accounting is very attractive in my opinion. And would be a potential great fit for financial systems development....would need to be initially mentored and guided, but in 5 or 10 years, a Rockstar!!!
If you are interested in business software engineering, I suggest that you check out the .NET frameworks. They contain a ton of pre-written code and the emphasis on actual low-level programming is most likely smaller when compared to Java positions.
If you are interested programming for control systems, weapons, medical systems, etc., then I suggest that you start a Computer Science program and get a second Bachelor degree. Most likely won't be using Java for this type of software, so your Java textbook won't do much good.
That 1600 page course is covered in 2 semesters in college. A computer science graduate (or minor or someone who has spent more time on it) is going to know SQL and web programming and many other things. They are also like to have worked on a bigger project in some course.
"Where are the most jobs?" - Are you willing to move anywhere in the country? If not, does it really matter? It sounds like you are looking in Dallas which has its share of employers not just the air force base.
It's not that your route is unconventional. Many people are self taught or started doing something else before programming. It's the expectation that reading one book is sufficient that flagged me.
David Newton's list is similar to mine for experienced people. For entry level, I want less. However, I want to see an internship or some type of experience for an entry level candidate - especially if the person hasn't studied Computer Science (or a related field.)
I agree with Frank that I think you will have more success at a financial company.
A piece of advice if you are targetting a specific company - see if you can talk to someone there over lunch and ask his/her advice.
Joined: May 22, 2010
I really meant where as in what development specialty rather than location because staying local is pretty important right now. Also I thought C# was fairly easy to pick up for a Java-er because the .NET platform is attractive for me if it is more useful for business applications. If not, maybe that is where I should start. The getting a job from reading one book thing was more of an assumption than expectation given the opacity of the subject matter. So does it sound like a .NET like C# would be a better starting point given a business background (and passion)? Thanks for all the help
Frank Bennett wrote:Actually, in my experience, English majors eventually turn out to be more valuable for business software engineering than Computer Science majors, especially in publishing or information industries.
In my experience, I have encountered many great developers that did not have a CS, or even a technical degree. And also, in my experience, I have encountered many great developers with a CS (or other technical degree).
I don't think that my sampling is statistically significant, even with 20 years of colleagues -- in fact, until someone does a real long study, with lots of candidates, I will be skeptical of any statement that says one type of degree is better for anything.
Fair enough. As far as what technology, both Java and .NET are widely used. It really depends on the local employers in your area. I recommend doing a search of hotjobs or the like if you haven't already. Regardless, I wouldn't split the focus between the two. I'd rather hire someone who concentrated in one deeply enough to understand it well rather than knows both a little. Over time, you'll learn more languages. Getting in the door is the first goal. And yes, C# is easy to pick up for a Java-er. Compared to other languages or knowing nothing.
I don't think it's that a CS degree is needed to be a great developer. My comments at least were from a hiring perspective. I would hire a non-CS person as an intern. Or a non-CS person who did an programming internship somewhere else as an entry level candidate. It is the double whammy of no degree; no experience that I think the comments in this thread are addressing. (The comments about whether an English degree is better non-withstanding.)
Dave Frost wrote:I really meant where as in what development specialty rather than location because staying local is pretty important right now. Also I thought C# was fairly easy to pick up for a Java-er because the .NET platform is attractive for me if it is more useful for business applications. If not, maybe that is where I should start.
Also, keep in mind, that with a CS degree, it isn't about the languages (or any component of the technology stack), its the skill learned in those four years. Data structures, algorithms, graphics, networking, databases, compilers, artificial intelligence, etc. etc. etc. Learning a language is something that is done in the first year or so. After that, the students are expected to pick up languages on their own.
As such a CS student should graduate with many languages, and knowledge of many concepts. One 1600 page book doesn't make up for the lack of those concepts.
Dave Frost. Knowledge is knowledge no matter how you acquire it. It's true that getting a degree will give you a big advantage in hiring. It's good to have experienced people guide you. But it's also true a degree may not pay off financially in this market. Some people get put in 40k debt, no job, or some throw away salary.
Having the knowledge to write your own software is it'sits own gift. Whether you do it as a career or not. I write my own database utilities. I also write simple programs to take in many factors like inflation, interest, tax, etc to make fair price comparisons on big purchases I make. You can make stuff exactly how you want it.
My advice is to focus on the following areas
1. Learn how to model data with tables. Learn the different types of relations.
2. learn how to query a database. Understand how to join tables. How to union tables. etc
1. the language itself
2. learn common data structures and apply them to problems.
3. Learn JDBC to connect and query the database from your java code
4. Learn JSP/servlets (a big chunk of jobs will be using web-based solutions)
5. Really understand how to make a program extensible with polymorphism. You want your programs to be able to grow simply by creating a new implementation of an interface and it just "plugs in" and works. I knew the technical meaning of polymorphism but it took me a long time to really "get it" and apply it to my software. Once you experience that "pluggable" feeling its like the nirvana of OOP.
Joined: Apr 16, 2008
Software Engineering ALSO includes writing technical documentation, writing the contents of JavaDocs, writing technical requirements, writing proposals, etc. A software engineer that has studied English, in my experience, performs these tasks better than a software engineer that only studied Computer Science. This observation is simply limited by my 20+ years of experience managing and hiring developers. Other experiences may vary.
Frank Bennett wrote:Software Engineering ALSO includes writing technical documentation, writing the contents of JavaDocs, writing technical requirements, writing proposals, etc. A software engineer that has studied English, in my experience, performs these tasks better than a software engineer that only studied Computer Science. This observation is simply limited by my 20+ years of experience managing and hiring developers. Other experiences may vary.
It may include any or all of those things, and it's been my experience it's easier to teach a CS person to write lucidly than to teach an English major to code. And I've been in the unfortunate position of having to try multiple times in my 20+ years of experience.
Joined: Apr 16, 2008
Dave, that is an interesting point. Note, that in the context of my statement, it is "a software engineer that has majored in English", rather than "a fresh English major graduate with no programming experience." If an English major does not have computer programming skills before joining the workforce, then yes, teaching the Computer Science major to code will be easier, in my opinion.