Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
Win a copy of OCP Oracle Certified Professional Java SE 11 Programmer I Study Guide: Exam 1Z0-815 this week in the Programmer Certification forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Junilu Lacar
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Knute Snortum
  • Devaka Cooray
  • Tim Cooke
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Ron McLeod
  • Carey Brown
Bartenders:
  • Paweł Baczyński
  • Piet Souris
  • Vijitha Kumara

Main challenges of being a Java Developer/Engineer

 
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I worked with Java for about 9 years (2003 until 2012) and noticed great challenges:

- Project deadlines. We were always struggled with strict deadlines.
- Project specifications always changes.
- System analysts and java developers not aligned with the project specifications.
- Takes long time to create the project architecture/environment and start to code and delivery something.
- Weak test cases.
- Change requests were always a great problem during the code merge.

What else have you faced in your job? Does it changed so far?
 
Marshal
Posts: 67300
170
Mac Mac OS X IntelliJ IDE jQuery Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I fail to see what any of that has to do with developing in Java specifically. Those are challenges that could apply to any development project regardless of technology.
 
leo nagano
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You are right, but in my opinion, Java takes or used to take long time to create an environment and have any concrete functionality ready in a matter of 1 or 2 hours. Sometimes, other languages/environments as Node+mongodb or mysql keep the client's anxiety low, showing some screens/functionalities in less than one hour.
 
Sheriff
Posts: 4689
309
IntelliJ IDE Clojure Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Are your customers really putting the pressure on to see something meaningful in less than an hour? That doesn't sound like a realistic scenario to me.
 
leo nagano
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I don't know if I were doing something wrong, but 1 to 2 days to create a new environment/architecture and show something seemed a long time for me because we "lost" 2 days of full coding.

Now, I'm creating some Node/Javascript/mongoDB website and within 2 days I have a complete environment + functional prototype built on top of twitter bootstrap framework. Looks more productive.

But I have to agree that Java is powerful in terms of load balancing/cluster/transaction control (XA commits).....
 
Bartender
Posts: 2407
36
Scala Python Oracle Postgres Database Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Tim Cooke wrote:Are your customers really putting the pressure on to see something meaningful in less than an hour? That doesn't sound like a realistic scenario to me.


I spent over 10 years developing database applications with Oracle's proprietary tools (Forms, Reports, APEX etc). I could sit with a user and develop the GUI with them sitting next to me if necessary, because you could build screens, move widgets, integrate data interaction etc really quickly. A basic CRUD screen could be finished in less than an hour, a master-detail screen with some extras maybe half a day, and a really fancy screen might take a day or two. The user probably wouldn't want to hang around all day, despite my charming company, but you could rework the entire GUI for a small to medium sized application in a few days and give them something new and shiny to play with every week if necessary.

There are plenty of good reasons why the world has moved away from that kind of proprietary toolset, but I have never seen anything in Javaland in the 10 years since that was anywhere near as productive for that kind of data-centric application.
 
Rancher
Posts: 2759
32
Eclipse IDE Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
With Spring Boot, I can create a new web application project in 2 minutes. Maybe you are taking longer because you are not using the right tools
 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I agree with Jayesh.

Java ecosystem is full of pre build library and tools which helps to get started very quickly and most of the time base of project is already developed and available to use as it is open source.

Only thing is to use those pre build environment for that we have to be updated with new technology and tools available to use.
 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The biggest challenge in Java world, in my opinion, is the bunch of tools/libraries, that have different versions, bugs etc. And struggling to bring them all together takes a lot of time. And there is no guarantee that specific set of libraries/tools will work together.
 
Arpit Bhargava
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Andrew,

I think this is disadvantage of open source development not just of JAVA world
 
Jayesh A Lalwani
Rancher
Posts: 2759
32
Eclipse IDE Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Right, way back, back when C++ and Java were competing with each other,one of the main differences was that Sun was a big player in the open source ecosystem, whereas Microsoft was a big proponent of closed source development. As a company, Sun adopted, and even enabled open source ecosystems. On the other hand, Microsoft believed (and still believes) that they are the final arbiter of what tools developers should use. It prescribed a list of technologies that came with Visual Studio, and it was difficult to step out of it.

Both methods have their merits. Within a open-sourced ecosystem, you have a lot of choices for the same thing, and some time, one of these choices wins out over the other choices. This has an advantage that you are not stuck with the limitation of one library. If a library doesn't suit your need, you find another. However, the problem is that making the choice is the hardest thing about a project. Most developers don't realize this because someone has already chosen a tech stack for them, and their challenge is to learn and use the tech stack. However, being in a position of selecting a Java based tech stack is very challenging. They only way to know if a tech stack works is by using it. However, you need to decide before hand. If you are an architect, and someone asks you to recommend a tech stack, you know that you are making your best judgement , and your job depends on it. On the other hand, your job in a Microsoft ecosystem is easy: You use the tool that Microsoft gives you, and you know everything will work together. If the tool doesn't do what you want it to do (or makes it difficult), you shrug your shoulders and say something about technical limitations or such. You can squarely put the blame on Microsoft's shoulder and Microsoft is more than happy to take that blame. They get a good excuse to sell your company the next version of Visual Studio.

10 years down the line, this lead to fundamental differences in philosophy. Java development had become more about people. Microsoft development had become about process. When, you have a Java based tech stack, you will ultimately need to switch your tech stack, sooner or later. You know you don't have the best tech stack now, and even if you do, a better one will come in 3-5 years. So, if you are planning for long term, you need to hire smart people who can learn the new tools by themselves easily. If you are in a Microsoft stack, you aren't competing with other companies like you on the strength of your developers or technology choices. You are competing on how well you can manage your projects. So, emphasize on the process. Streamline it to heck. As a result, Java shops eventually evolved into kind or organized chaos, where everyone is trying to pull the tech stack in differrent directions, and what you get is something that either the head honcho loves, or no one hates. Whereas, Microsoft shops became these efficient machines of beauty. In other words, Java shops are meritocratic democracies, whereas Microsoft shops are hierarchical dictatorships.

Of course, what do large companies prefer? Hierarchical Dictatorships?! It fits nice into how bean counters think companies should work. They don't like the mess that goes on in the dungeon of a Java shop. So, there was a need for "prescribed tech stacks", or in other words, Microsoft like tech stacks that tell you exactly what you need to use, and you don't have to go hunting for solutions. There are 2 such stacks that I know of (maybe there are more): Spring and Oracle ADF. Spring is free. Oracle is paid. Spring doesn't provide support (unless you consider hiring a Spring consultant as paying for support) and makes it's source available for you to look at. Oracle provides support.

So, coming back to main challenges of a Java developer. It entirely depends on the company you work for. You are working in a company that tries out and adopts every open source solution out there, then you will be struggling with learning new technologies and figuring out how to make them work with each other. If you are working at a company that s using a prescribed stack, then you will be spending most of the times fitting square pegs into round holes.

 
Ranch Hand
Posts: 343
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Jayesh A Lalwani wrote:On the other hand, your job in a Microsoft ecosystem is easy: You use the tool that Microsoft gives you, and you know everything will work together. If the tool doesn't do what you want it to do (or makes it difficult), you shrug your shoulders and say something about technical limitations or such. You can squarely put the blame on Microsoft's shoulder and Microsoft is more than happy to take that blame. They get a good excuse to sell your company the next version of Visual Studio.



This is only true when it comes to the IDE itself. There are plenty of third-party libraries for a Microsoft ecosystem. Some are open-source.

If you are in a Microsoft stack, you aren't competing with other companies like you on the strength of your developers or technology choices. You are competing on how well you can manage your projects.



That's a great recipe for failure. The biggest single determinant of success in any environment is the quality of your people and the tech choices they make.

Cheers!

Luke
 
chris webster
Bartender
Posts: 2407
36
Scala Python Oracle Postgres Database Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Jayesh A Lalwani wrote:With Spring Boot, I can create a new web application project in 2 minutes. Maybe you are taking longer because you are not using the right tools


Is it equally fast for implementing changes e.g. a year after you've created your web app project from a template, is it still quick to add/move a field or screen, alter business logic etc?

I haven't used Spring Boot as I'm no longer coding Java ( ) but I recall seeing some frameworks that were fine for generating the first cut outline of a project, but where it was often difficult to implement changes later.
 
Greenhorn
Posts: 11
Mac OS X Python Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Java in itself has not matured in terms of setup and kickstart and quickly create application. But that gives a huge push for frameworks for Spring and tools like Gradle to support and automate heavy lifting work of getting started with Java Applications as well as create micro services with ease. With Spring boot, Hibernate creating rest API with CRUD operation can be done in just 5minutes.

Java has tried to bring most of the spring features like dependency injection etc., in J2ee. But spring’s easiness has overtaken it’s complexity by providing default configuration through SpringBoot.
 
My honeysuckle is blooming this year! Now to fertilize this tiny ad:
Java file APIs (DOC, XLS, PDF, and many more)
https://products.aspose.com/total/java
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!