My job sucks help me switch to programming .
April 17, 2008 12:00 PM Subscribe
How long would it take to become decent at programming Java for someone with basic non OO programming skills?
I am currently working in an analyst role juggling figures on spreadsheets all day but hate it and would rather be a programmer. My company has a rather small 5 person + 2 testers dev team that works on a BI like solution with a web interface in JAVA. They have a shortage of programmers so I think I might have a chance being accepted.
My current programming knowledge is basic understanding of php ,SQL and CSS/HTML although I have been programming perl and C in high school but forgotten the most of it. I don’t know much about OO programming other than the very basics of it. I would like to ask, although it is probably impossible to give a general answer, how much time do you think it would take me do become a JAVA programmer decent enough for production work for a webapp? Is that even a realistic goal within say 2-3 months.
Also how should I go about pitching this to my boss? I don’t have much to show in real work other than the drupal site I am currently working on that’s not online yet and an algorithm I wrote in the R language.
Also what is a good primer to OO programming and strongly typed languages in general? Something that can show me some typical examples of OO design and how different datatypes should be used and declared in the real world.
Any other input is also greatly appreciated.
I am currently working in an analyst role juggling figures on spreadsheets all day but hate it and would rather be a programmer. My company has a rather small 5 person + 2 testers dev team that works on a BI like solution with a web interface in JAVA. They have a shortage of programmers so I think I might have a chance being accepted.
My current programming knowledge is basic understanding of php ,SQL and CSS/HTML although I have been programming perl and C in high school but forgotten the most of it. I don’t know much about OO programming other than the very basics of it. I would like to ask, although it is probably impossible to give a general answer, how much time do you think it would take me do become a JAVA programmer decent enough for production work for a webapp? Is that even a realistic goal within say 2-3 months.
Also how should I go about pitching this to my boss? I don’t have much to show in real work other than the drupal site I am currently working on that’s not online yet and an algorithm I wrote in the R language.
Also what is a good primer to OO programming and strongly typed languages in general? Something that can show me some typical examples of OO design and how different datatypes should be used and declared in the real world.
Any other input is also greatly appreciated.
Define "decent"? And how many hours are you looking to put in per day/week specifically on learning, rather than trying to hack your way through?
If you just switch into Java but don't take time to step back and think about the OO issues then you'll just learn bad habits and effectively write C code in Java. You have to have some time in your schedule to read/explore/experiment with OO.
If you're willing to put in a couple hours of reading/exploring a day, you can get the basics of OO down in a month, and become decently competent in a couple months.
posted by Leon-arto at 12:12 PM on April 17, 2008
If you just switch into Java but don't take time to step back and think about the OO issues then you'll just learn bad habits and effectively write C code in Java. You have to have some time in your schedule to read/explore/experiment with OO.
If you're willing to put in a couple hours of reading/exploring a day, you can get the basics of OO down in a month, and become decently competent in a couple months.
posted by Leon-arto at 12:12 PM on April 17, 2008
yep, if you have done any in depth programing, it should be a pretty smooth transition. as above, there are some differences in approach for OOP, but, you should be fine. spend some time and learn the structure, then get the syntax, as that can be very analog from one to another.
posted by Amby72 at 12:19 PM on April 17, 2008
posted by Amby72 at 12:19 PM on April 17, 2008
My company has a rather small 5 person + 2 testers dev team that works on a BI like solution with a web interface in JAVA.
I would like to ask, although it is probably impossible to give a general answer, how much time do you think it would take me do become a JAVA programmer decent enough for production work for a webapp?
Java, it's not an acronym, but I'm just nitpicking there.
As for "decent enough for production work," it depends on how quick you are on the uptake and how much practical work you'll get to do before jumping in. I'd recommend you start programming straight away and learn from your mistakes -- figure out what "web interface in Java" means -- are they using straight JDBC and some custom classes or an ORM framework like Hibernate, a web framework like Struts/JSF or simple JSPs, or are there any other custom components? The nice things about frameworks is that they will force certain OO paradigms in a way that jumping in and programming won't immediately do.
As for theory and OO primers, I can't recommend a particular book, but I'd strongly recommend something that emphasizes design patterns as well as object-orientation. Factory methods, utility classes using static methods, and the like.
If you're able to join a team and take on a piece of functionality with some coaching, you're going to be making reasonable contributions within a couple months. If you're coming from a point of no experience and you're trying to take on a full project by yourself, it'll be much, much longer. I spent much of last year mentoring someone who had just graduated college with a CS degree, used Java in the past for some coursework, and consistently working with object-oriented concepts (and not duplicating code every ten lines) was still a difficulty for quite a while.
Write, learn some more, rewrite, and learn in the process.
posted by mikeh at 12:20 PM on April 17, 2008
I would like to ask, although it is probably impossible to give a general answer, how much time do you think it would take me do become a JAVA programmer decent enough for production work for a webapp?
Java, it's not an acronym, but I'm just nitpicking there.
As for "decent enough for production work," it depends on how quick you are on the uptake and how much practical work you'll get to do before jumping in. I'd recommend you start programming straight away and learn from your mistakes -- figure out what "web interface in Java" means -- are they using straight JDBC and some custom classes or an ORM framework like Hibernate, a web framework like Struts/JSF or simple JSPs, or are there any other custom components? The nice things about frameworks is that they will force certain OO paradigms in a way that jumping in and programming won't immediately do.
As for theory and OO primers, I can't recommend a particular book, but I'd strongly recommend something that emphasizes design patterns as well as object-orientation. Factory methods, utility classes using static methods, and the like.
If you're able to join a team and take on a piece of functionality with some coaching, you're going to be making reasonable contributions within a couple months. If you're coming from a point of no experience and you're trying to take on a full project by yourself, it'll be much, much longer. I spent much of last year mentoring someone who had just graduated college with a CS degree, used Java in the past for some coursework, and consistently working with object-oriented concepts (and not duplicating code every ten lines) was still a difficulty for quite a while.
Write, learn some more, rewrite, and learn in the process.
posted by mikeh at 12:20 PM on April 17, 2008
Learning the syntax won't take you long. A month sounds right, less if you're adept. Java kind of prides itself on not having many corner cases (generics, however, continue to trip me up).
Learning to think in OO concepts can take years. But yeah... you can convincingly fake it for a long time.
posted by sbutler at 12:21 PM on April 17, 2008
Learning to think in OO concepts can take years. But yeah... you can convincingly fake it for a long time.
posted by sbutler at 12:21 PM on April 17, 2008
ok, I take that back a step, after carefully reading your post, it may be a bit more involved. a bit more complicatied than scripting/formatting/query languages.
posted by Amby72 at 12:21 PM on April 17, 2008
posted by Amby72 at 12:21 PM on April 17, 2008
You can learn language and OO concepts (assuming you have good examples and references) relatively quickly if you apply yourself. What won't take a short amount of time is becoming comfortable with the platform libraries (i.e. the java.* classes) and the approximately elevenity hundred libraries that your product undoubtedly is built upon. That is a ton of work because there is a ton of stuff to get comfortable with.
posted by mmascolino at 12:28 PM on April 17, 2008
posted by mmascolino at 12:28 PM on April 17, 2008
I would like to ask, although it is probably impossible to give a general answer, how much time do you think it would take me do become a JAVA programmer decent enough for production work for a webapp? Is that even a realistic goal within say 2-3 months.
Depends on how serious you are about learning Java. By the way, don't write JAVA on anything, I once knew a guy who threw out any resume that had "JAVA" in all caps anywhere on it. Anyway, I wouldn't be comfortable myself applying for a job in a language unless I had used it for at least a year, but that's just me and my pace. I would also want to have at least one hobby project written in that language, which I could refer to during interviews and whatnot.
Also what is a good primer to OO programming and strongly typed languages in general? Something that can show me some typical examples of OO design and how different datatypes should be used and declared in the real world.
Learn about Design Patterns, there are several good books about it. A lot of the books that say "Learn OOP" will just go through the buzzwords like Polymorphism and whatnot but won't actually teach you anything useful, whereas design patterns are right at the heart of what OOP is about. Also, the original WikiWiki has a lot of good pages of info about patterns and Java-related stuff.
Also, much more important than learning OO concepts and Java syntax is learning how to think like a Java programmer. A lot of scripting languages like php and perl are built so that one guy can hack together something quickly, whereas Java was specifically designed to be used by software teams in a more structured way. For example, when you learn about checked exceptions in Java, you might want to search Google to find some articles and blog posts about checked exceptions, so that you can get an idea of why they were put into Java and what some of the pros and cons of them are. Once you get into the mindset of how Java works, it will be easier to avoid those frustrating "Why doesn't this work like it does in perl?" moments.
posted by burnmp3s at 12:39 PM on April 17, 2008
Depends on how serious you are about learning Java. By the way, don't write JAVA on anything, I once knew a guy who threw out any resume that had "JAVA" in all caps anywhere on it. Anyway, I wouldn't be comfortable myself applying for a job in a language unless I had used it for at least a year, but that's just me and my pace. I would also want to have at least one hobby project written in that language, which I could refer to during interviews and whatnot.
Also what is a good primer to OO programming and strongly typed languages in general? Something that can show me some typical examples of OO design and how different datatypes should be used and declared in the real world.
Learn about Design Patterns, there are several good books about it. A lot of the books that say "Learn OOP" will just go through the buzzwords like Polymorphism and whatnot but won't actually teach you anything useful, whereas design patterns are right at the heart of what OOP is about. Also, the original WikiWiki has a lot of good pages of info about patterns and Java-related stuff.
Also, much more important than learning OO concepts and Java syntax is learning how to think like a Java programmer. A lot of scripting languages like php and perl are built so that one guy can hack together something quickly, whereas Java was specifically designed to be used by software teams in a more structured way. For example, when you learn about checked exceptions in Java, you might want to search Google to find some articles and blog posts about checked exceptions, so that you can get an idea of why they were put into Java and what some of the pros and cons of them are. Once you get into the mindset of how Java works, it will be easier to avoid those frustrating "Why doesn't this work like it does in perl?" moments.
posted by burnmp3s at 12:39 PM on April 17, 2008
Thinking in Java (free online, or buy the book). It's a good immersion into the Java/OO world.
Java is my main language now. When i moved from Perl to Java, I was able to be productive within a few months of starting, but it took me years to really understand OO programming deeply. (I'm a bit thick). YMMV.
I actually got alot from one of those "Learn Java in 21 days" books when i started out, mainly because it contained working examples that they explained thoroughly.
A good idea is to take a successful PHP or Perl webapp you wrote and try to duplicate it in Java. This will help you learn the Java equivalents of stuff you already understand.
In terms of progressing at work, I suggest the best approach is to start learning Java now, and when you have a handle on it, try to solve a work-related problem in Java then show it to the team. The idea is to learn to program, then try for the position, not the other way around. ;^)
posted by Artful Codger at 2:21 PM on April 17, 2008
Java is my main language now. When i moved from Perl to Java, I was able to be productive within a few months of starting, but it took me years to really understand OO programming deeply. (I'm a bit thick). YMMV.
I actually got alot from one of those "Learn Java in 21 days" books when i started out, mainly because it contained working examples that they explained thoroughly.
A good idea is to take a successful PHP or Perl webapp you wrote and try to duplicate it in Java. This will help you learn the Java equivalents of stuff you already understand.
In terms of progressing at work, I suggest the best approach is to start learning Java now, and when you have a handle on it, try to solve a work-related problem in Java then show it to the team. The idea is to learn to program, then try for the position, not the other way around. ;^)
posted by Artful Codger at 2:21 PM on April 17, 2008
(Microsoft haters please skip this comment.)
I taught a 16-week .Net college course a few semesters back, that met 4 hours/week, and had 1-2 simple (I thought) homework projects each week, and one larger project at the end of the semester. My students were: college kids just learning programming concepts; experienced programmers looking to upgrade from VB6 or some other non-OO language; and a few folks with CSS/HTML/scripting backgrounds.
After 16 weeks, only the college kids with no real exposure to programming (and thus no preconceived notions or bad habits), and a very select few of the old-timers "got" OO concepts. Most of the oldsters used VB .Net stuff in a VB6 style. The ones with only the HTML/scripting background were pretty much hopelessly lost, and only managed to finish with lots of help. Only a couple of the students were at a level where I would have felt comfortable recommending them for a paying job as an OO programmer.
Also how should I go about pitching this to my boss?
You have to show that hiring you, an insider already familiar with the company, will be more beneficial to the company than hiring an outsider. Can you get to know anyone on the current programming team, and find out what their concerns are, other than just being shorthanded? Maybe they need someone who can code but who also has a really good understanding of some part of the company's operations. You could be that person - at the beginning, you are more valuable because of your deep knowledge of the business function at hand, not because you are a whiz-bang coder.
You may have to pitch this idea more than once over some period of time.
posted by SuperSquirrel at 3:04 PM on April 17, 2008
I taught a 16-week .Net college course a few semesters back, that met 4 hours/week, and had 1-2 simple (I thought) homework projects each week, and one larger project at the end of the semester. My students were: college kids just learning programming concepts; experienced programmers looking to upgrade from VB6 or some other non-OO language; and a few folks with CSS/HTML/scripting backgrounds.
After 16 weeks, only the college kids with no real exposure to programming (and thus no preconceived notions or bad habits), and a very select few of the old-timers "got" OO concepts. Most of the oldsters used VB .Net stuff in a VB6 style. The ones with only the HTML/scripting background were pretty much hopelessly lost, and only managed to finish with lots of help. Only a couple of the students were at a level where I would have felt comfortable recommending them for a paying job as an OO programmer.
Also how should I go about pitching this to my boss?
You have to show that hiring you, an insider already familiar with the company, will be more beneficial to the company than hiring an outsider. Can you get to know anyone on the current programming team, and find out what their concerns are, other than just being shorthanded? Maybe they need someone who can code but who also has a really good understanding of some part of the company's operations. You could be that person - at the beginning, you are more valuable because of your deep knowledge of the business function at hand, not because you are a whiz-bang coder.
You may have to pitch this idea more than once over some period of time.
posted by SuperSquirrel at 3:04 PM on April 17, 2008
This thread is closed to new comments.
You can learn OO in less than a month.
posted by unixrat at 12:09 PM on April 17, 2008