4 ms·
Ask HN: How do you get started in enterpirse Java development?
I've been around this community long enough to know that "Java" is almost a bad word, but hear me out. In my area (Western Michigan), there is an abundance of jobs that require experience doing enterprise Java development. I'm currently a web developer(PHP), and would like to branch out a bit in to Java programming as a profession.
The thing is, even entry level Java jobs are looking for at least 1 year of experience. I used Java during my academic career extensively, and consider myself proficient with it. However, since I don't have any "real" experience, nobody is willing to look my way.
So, my question is: How do you get started in enterprise Java development? What is the best way to gain experience without giving up on the current day job that pays the bills?
- plinkplonk 17y ago"How do you get started in enterprise Java development? What is the best way to gain experience without giving up on the current day job that pays the bills?" Find a small business that needs a web app and build it for them using your favorite technology stack. That's how I started. Show your interviewers the code - shuts off a lot of stupid gotcha/trivia questions. (due disclosure: Though I worked on enterprise dev for 10 years I haven't done it in the last 8 years or so. I got completely bored and the projects all started to blur into each other and so I shifted to algorithm intensive AI/machine learning sw. But it was kinda fun for a while and I worked with some great people and companies. I recently talked to some of my ex colleagues and nothing much has changed in enterprise dev.)
- gcheong 17y agoHow did you make the shift from doing enterprise dev to AI?
- plinkplonk 17y agoI got good at mathematics. IMHO, This is the key step in making the shift from enterprise dev to ML. This is also where I've seen many people making the attempt give up. I also worked through some AI/Machine Learning books. I started with Norvig and Russell's AIMA and open sourced resulting Java code (yes it is a beginner's book and not tough at all, but it is very well written and a great starting point). Then I worked through more narrowly focuses books (and there are plenty of nice books see lists below). I got involved in the local ML community (mostly defence labs - Bangalore doesn't have many cutting edge startups/ sw companies yet). The combination of deep math and good programming opens many doors (as Bradford Cross and others point out elsewhere - see Brad's post at http://measuringmeasures.blogspot.com/2010/01/learning-about-statistical-learning.html http://measuringmeasures.blogspot.com/2010/01/learning-about... for a list of resources . I wrote a supplementary blog post on the books I found useful (I have a somewhat different focus from Bradford and so ended up working through a different set of books) at http://pindancing.blogspot.com/2010/01/learning-about-machine-learniing.html http://pindancing.blogspot.com/2010/01/learning-about-machin...). It helped that I didn't know I was not supposed to do such "crazy" things in my old age and (perhaps rather naively in retrospect) didn't doubt for a second I could teach myself anything I wanted to. I have zero academic background comp sci/math/ML etc. My proudest moment was when a senior researcher I respect highly at first refused to believe I had no formal education in ML and, when I maintained my position, said " Well if you don't have a PhD you should think about getting one. I never met anyone who levelled up as fast as you. If you ever need a reccomendation for a PhD I'll be glad to give you one". And this was someone with a few dozen credentialed junior scientists in his team (some of whom were majorly pissed off that someone with no academic credentials was in a position to tell them what they were doing wrong and what to do next but that is another story for another day). Well enough reminiscing for today. Back to work. My current project involves Computer Vision and Robotics. Quite a change from the Leasing System From Hell (Old time ThoughtWorkers will get the joke! ). But I am tackling tough problems, learning new things every day and often "going where no one has gone before" programmatically. Life is good.
- hapless 17y agoJob postings are built something like children's wish lists for Santa. Your kid doesn't actually expect a pony AND a nintendo AND a dog AND a trip to disneyland. Entry-level job postings don't actually expect 3-5 years of experience. It's normal to be ignored over and over and over when you submit resumes. It's the hardest road to employment. Because 99% of applicants are crap, no one applicant gets a lot of attention. Tweak your resume, make more phone calls, keep trying.
- rubinelli 17y agoPore over your contact list and find friends that went to Java shops, or old clients that want to Javafy their back ends. Joining your local Java User Group's mailing list and participating in events once in a while will help you network.
- kunley 17y agoAnyone remembers demands for 10-year Java experience back in Y2k?
- bad_user 17y ago> How do you get started in enterprise Java development? What is the best way to gain experience without giving up on the current day job that pays the bills? Those jobs postings are usually written by HR people that have no idea what they are talking about. My advice ... apply for that job anyway, even if you don't meet the requirements. But you should be careful ... don't lie about your expertise. In good companies your interview will be done with other developers. If you are indeed capable, but you get rejected because you don't meet that checklist, you should be grateful for that.
- zackola 17y agoBuild something slightly enterprisey but really simple. Make sure it uses lots of enterprise buzzwords like XML, LDAP, SOAP, and UML. You could make something pretty simple that an enterprise client might find useful, like some sort of process management tool, otherwise known as flowcharts. Generally the only difference between enterprise software and not is the price tag. Surely there are exceptions to this. I'd also suggest that before you dedicate a significant part of your life to learning something because there is currently a high demand for it in your geographic area, you may want to consider reading the excellent: http://www.pragprog.com/titles/cfcar2/the-passionate-programmer http://www.pragprog.com/titles/cfcar2/the-passionate-program... Check out the reviews on amazon - might also be helpful to look at reviews for the out of print My Job Went to India. The passionate programmer is the 2nd edition of this book I gather.
- raju 17y agoI work using the Enterprise Java stack. This may be obvious, but let me start here - Java Enterprise involves understanding the spec (essentially the API) and then understanding how a vendor implements the same (e.g. JAX-RS vs. RestEasy). Furthermore - the Java ecosystem is huge. There are multiple vendors for each API, and trying to find a starting point can prove to be overwhelming. My advice - start with something small and move from there. The Spring Framework (which at it's core is merely a Dependency Injection framework and does not implement a J2EE API) is something a lot of Java shops use to wire their applications together, and can be used even on a stand-alone Java/Swing application. The Spring documentation is pretty comprehensive. After that - try to implement persistence - This will introduce you to JPA (Java Persistence API and potentially EJB) and a persistence provider (like Hibernate). Again, go lightweight using a in-memory DB like HSQLDB or H2 so you don't spend time tweaking a DB). Then you are ready to take on something a little bit more complex like a web-app. Look into the Servlet API (this forms the basis of a lot of front-end technologies in Java like JSPs). This should be a good starting point. If you need something more, drop me an email (in my profile) and hopefully I can help. Good luck.
- patio11 17y agoLearn a model/view/controller framework like CakePHP or Rails. It will make enterprise Java development much easier, since you'll know the core concepts in a language that you don't have to fight every step of the way to do things in. (I say that as a former Big Freaking Enterprise Java developer.) Learn core Java, paying particular attention to how to use CS101/201 stuff like loops and collections. Know how to work with HashMaps. Creating hash maps, passing them around, iterating over their keys, etc, is going to be a huge portion of your life. Then start learning Spring, Hibernate, and the rest of the J2EE alphabet soup. You don't have to know everything on day one: if your job needs a lot of SOAP, read up on SOAP, if they need web services implemented in a reasonable amount of time, read up on RestEasy, etc etc. You'll also want to pick up the usual web dev breadbasket if you don't already have it: HTML, CSS, Javascript, SQL, basic Linux system administration, basic system architecture, etc etc. Also: Java code monkeys are cheap, domain experts who can code are expensive, optimize accordingly.
- umjames 17y agoHere's what I did back in 2001. I already knew my way around the Unix command line, so if you don't, that's obviously a first step. I learned the following technologies in order: 1. HTML (basics, you won't need to know every tag) 2. CSS (basics again, you can fill in the holes as you come across them on projects) 3. JavaScript (bare bones, no frameworks, you'll learn them later for actual projects) 4. Servlets (you'll need to also learn a servlet container at the same time, I recommend Tomcat. You can use JBoss when you understand the basics of Java web app deployment and configuration.) 5. JSPs (since they are shorthand servlets at runtime) 6. Basic database administration and SQL (I chose MySQL here) 7. JDBC (the core of all database access in Java) At this point, I started to branch out. There's an endless number of web frameworks out there, I don't know which is the most popular now for Java, but pick something you like. You'll also want to learn an ORM like Hiberenate. You will need to know some supporting technologies and some alternatives. For example, you'll need to know Ant as most Java projects are built using it. Velocity is a popular alternative to JSPs. Just make sure you don't ever stop learning new things. One last bit of warning: If you ever find yourself bored or frustrated with enterprise Java development (especially if you end up on an enterprise portal project), don't think you have to stick with it. Always invest some time in something outside of the technologies you use everyday. That way you'll always have options.
- jbooth 17y agoRead Effective Java by Josh Bloch -- take those lessons to heart and prepare to be dismayed at how poorly designed 7 figure "entreprise" software really is. Then struggle against it for a few years until you say "screw it, my next job will only involve the Collections API, util.concurrent and nio libraries".