Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJosh Stetson
12,347 PointsASP.NET or Spring MVC
I have a couple years of professional experience with Java/Oracle/PLSQL doing backend stuff for a large company's IT group. I've been a stay at home dad for a couple years and I'd like to get back into a programming career, but I'd like to focus on web development.
I'm wondering if anyone can provide some advice on career prospects for either one? (Pay / increased opportunities, etc) I know they are both primarily used in large or medium sized companies and I'm fine with the enterprise stuff. I see more job postings for Java developers but do you think .NET will continue to grow in market share now that it's open source? Ideally I'd like to learn both and pick one, but with one child and another on the way my free time is limited so I'd like to pursue one and stick with it for the foreseeable future.
I'm also interested in perhaps learning more about business intelligence and I've read that microsoft has some good tools for that, so maybe I could also shift more easily into that realm later on if I'm already involved with microsoft technologies?
(I realize java is a language and .net is a framework, so when I say java I'm referring to any kind of web development framework using java)
2 Answers
Samuel Ferree
31,722 PointsIt doesn't sound like you need to get a job ASAP to provide for your family (in which case, my suggestion would be to take the first job available since C# and JAVA syntax is so similar, and MVC skills are incredibly transferrable from framework to framework).
Why not get your feet wet a little bit in each, and see which one you like better?
Luis Herrera
2,744 PointsHello Josh, I currently work full time in IT in a city department that is a mostly a Microsoft shop with some mild Java Applications and now I'm in the process to switch back into software development in this case with Java enterprise. The new place I will be working at is another city department but in a position that is permanent with benefits. I also used to work here for a short period of time in the past when I had a temporary position with them. The department is an Oracle shop with mild .net Applications.
Currently I'm learning JSF again. Mostly worked with JaveEE but I have worked with Spring in the past. It was a very frustrating process with both of them. I did eventually try Spring Boot and the process with Spring Boot was better but still challenging. Over the years of jumping back and forth with IT and programming I realized that the source of my frustration with Java wasn't the language itself but the process of learning with the enterprise web frameworks of Java. The frameworks were good but for someone how was just breaking into the web development field I felt I just wanted to build websites. Learn front end development and then connect a back end to it and then connect a database. I wanted to really be productive and not focus on all this massive infrastructure that needed to be built. I felt that during that time I had to learn about a lot of specific things of the framework and didn't feel productive.
From there on I tried many other languages and frameworks for fun hoping to see if they might be a better fit for me while working a few temp gigs in the process to gain experience such as PHP with word press, drupal, AMP stack. Ruby, Python, Javascript. It was fun but I also saw the cons in those options as well. I saw I can produce content fast and I was able to be more involved in the front end as well. While working in the front end I realized I had better skills with the front end and I had more fun with it since I wasn't very good with the backend or at least I can say I wasn't sure what I was doing unless I had a clear reason why I had to implement a certain class or why I had to add certain dependancy. Most of the times I would just follow orders from the training because the class had to move on and the job had to be done.
Another important thing I realized and this circles back to my primary career goals and that is with this other languages I learned they are limited to opportunities in the enterprise environment and I mean organizations like Banks, Government Agencies, City Departments, and State Department. My goal has always been to continue working for institutions that are at that level and I knew that PHP, Python, Ruby and Javascript alone wasn't going to necessarily get me there. It would either have to be Java or .Net and maybe the combination of a scripting language as a cherry to my cake. Likely in this case Javascript because it is the arsenal needed for development the client side.
This was when I started looking back in my life and started thinking about Java and why I chose the language and not .Net. I mean I never hated the language, to be honest I actually liked the syntax because it made more sense compared to the other languages. It was verbose but it made sense and it was structured and not wild like PHP or Javascript. Though Python and Ruby was cool too but I didn't feel like I truly understood everything that was going on under the hood.
Looking back I remembered at the time I had chosen Java because Java had the most jobs and .Net had a lot of tools that were basically copies of Java. For example NHibernate, Spring.Net, NUnit, Akka.Net etc. This made me feel that I should just stick with Java because they are the original tools that were working and were open sources. Other reasons that turned me away from .Net was the fact that C# was originally Microsoft's plan to just copy Java and make a version of there own to compete again it and this to me didn't seem genuine. It made me feel like just learning Java instead because it was the original dominating enterprise language anyway. Though over time I have come to find that actually C# is unique on its own as well and it is a very beautiful and peasant language to work with. Even now you look at C# 7 and it has way more advanced feature that Java doesn't have and its very much behind in that regard. Though I can understand why because the key players of Java want to keep the language constant while being able to keep its backwards compatibility, maintainability, scalability, and reliability features strong. I think over time it will get close to what C# can but it will take time.
Now speaking of backwards compatibility I found that .Net did have some issues with this matter with the different versions of .Net frameworks but again that was some else I wasn't to familiar with as I didn't develop in it very much. Also I found that with Microsoft being limited to Windows and not open source at the time that was a big turn off for me because it looked like it could limit a career. Java had more career options available such as Android, Big Data, and Web Development. Java had and still has a larger presence with the server side especially now with Unix, Linux and now the Cloud that a lot of fortune 500 companies are switching too. Microsoft only had web with Asp.net as a choice though WPF and desktop development looked very promising for a career. Mobile wasn't doing so well for them until they acquired Xamarin. My final point on my decision at the time was with the job market, like you mentioned before there were just more jobs available in Java which meant more opportunities in the enterprise world and at the time I was a student in a hurry to get to work and start my career. I didn't have .Net experience and I saw the jobs were less.
Now fast forward to 2014 I had gone back to IT again because it was difficult to stay in Java as my skills were weak and again was more inline with front end development. From 2014 and now this year 2017 I started heavily research, and building small projects really trying to narrow down my choices. I had to stop being a general developer and specialize which was hard for me. I started to look into Java again and I found that the tooling and frameworks have improved quite significantly. There are more options now to chose from now that help getting started easier now. If Spring is to complicated I could try a micro framework like Spark, Ninja, Jodd and others. If want a bit more features I could try Play, Dropwizard, Grails(Groovy), Vaadin and others. Spring Boot was also starting to be fun and I even tried that with TreeHouse. The course is very good and it broke down a lot of concepts for me that I found complicated. My point is that I could be more productive now because I didnt have to start with a monolithic framework to get started and just learn. I could start small and then move up and start improving my skill so that I can remain in enterprise.
Now while I was working in IT I got to meet the developers from the Microsoft shop and I got a better look as to why they chose .Net and what makes it better. I also did research in this as well and found that Asp.net MVC it not bad either. The tools like Xamarin for cross platform mobile development, Xbox, Mono, .Net Core, even micro .Net for Arduino were very much inspiring for me. As an IT person who works with Microsoft products everyday this really got me excited and this made me contemplate whether I should chose .Net or not. I mean it does have a massive foot hold in the enterprise world and I currently work for a department that is a Microsoft shop. I also know Java which is similar to C# and I have improved on my Front End development skills enough that I could maybe go for Asp.net. Interestedly I found that most of the jobs for .Net all ask for a lot of client side skill such as Angular where as Java they mostly just ask for backend skill to be strong because that is what Java is good at server side backend. Historically I also found that for many years and even now companies have been using Asp.net for more client side development while having Java as there back end. I thought maybe I should switch and speak with the project manager to get me on board.
Well over time I started to invest in .Net but eventually I found that the Project Manager only saw me as a potential Business Analyst and not a developer to hire since he was looking for a Senior .Net developer and not a junior. I was fine with it at first since again it was my foot in the door to move up in the IT/Software world. It was better than being stuck in IT Support but the transition was taking a very long time. Months went by and nothing happened due to budget and political reasons with the state. The city was going and is still going through some huge changes with the hiring of consultants, temps, and civil servants.
At this point around the end of 2016 a friend of mine that I worked with before where I was a Java developer in the previous city department and contacted me back. I let him know that I recently complete my Masters and was in search of an opportunity to get back into development. After some series of events I was fortunate to get an interview at the same place I worked at before with him and I was HIRED as a Software Developer with Civil Servant title. I was so Happy bro. The pay was double and a half what I get now and I got to be with the team I worked with before. The position is predominately Front End with JSF, Oracle ADF as the technology powering the back end.
I was greatly for this because this gave me the opportunity to remain working with front end which is my strong point but still be able to grow my backend skill and not focus on that factor only. By the way I recently became a dad during that time period and now I have a 9 month old son. So this was a huge break for me.
Lololo but back to the Java vs .Net decision to be honest I haven't quite entirely jumped to the Java bandwagon yet. I mean I still like .Net and I find the direction of .Net Core interesting. Sometimes I still find Java web development frustrating but now I look at it with a different point of view now that I got this job. Right now I'm at a point as to whether I should continue focusing on JSF but then invest some time in Spring and Spring Boot or should I consider some Asp.net and .net core. Again like I mentioned before .Net is more dominate with website development than Java. If you check out Builtwith.com, similartech.com, or w3tech.com they will show you that 15.1% of websites are built with Asp.net compared to Java that is only 2.6%. Also with .Net open source I'm curious to see how a unified framework framework that is open source will compete with Java.
Java to me still feels hard just to build a website with lot of front end features but its getting easier over time and I' am appreciating Java more everyday.
Tell me what you think. I'm sorry for the long post I just saw thought your question was pretty interesting as I found my self going through a similar situation. Anyway Josh it was a pleasure posting my thoughts here. Look forward to hear from you.
Thanks.