Junior dev in my former job during sprint planning argues for Java instead of Kotlin in Android development. Why? Because he still believes that Kotlin is still experimental and Java is more robust compared to Kotlin.

*laughs in coroutines, lambda expressions, extensions, higher order functions, more flexibility to do reactive and functional programming and compile time null safety*

Project manager sides with him and decides that all code boilerplate will be in Java.

I get to setup the boilerplate in three architectures: MVP, MVVM, and Clean though. Guess which language I set it up with?

So project manager yeets at me and complains that clients will not be able to understand Kotlin once we hand over the project to them.

"Are you serious?" I said incredulously. "Our clients belong to a first world country, in an internet speed much faster than ours, and can hire other dev houses in the future, and you tell me that they can never comprehend Kotlin?"

Excuse me.

  • 23
    So you ignored everyones opinions and the instructions of your manager, just because it wasn't your favorite language?

    Then afterwards you complain that People get upset about your behavior? Wow.
  • 2
    @Makenshi sometimes you just must ignore instructions of incompetent fuckers. Kotlin can compile Java, so what’s the point of not using it?
  • 9
    >Google says they'll keep Kotlin
    >Kotlin objectively more eloquent than Java
    >By experience Kotlin projects are easier to maintain than Java projects
    >Java NullPointerExceptions cost companies around the world billions of dollars per year and you want the client to avoid them.
    >Kotlin is stable now.

    Kotlin is objectively better than Java. Period. If you end up as a villain in the team because nobody agrees with you and has flimsy reasons to back it up, then so be it.

    My former junior dev thanked me anyway because he finishes his tasks better with Kotlin projects now.
  • 10
    @jennytengsonM My point is not whenever your decision is technically sound or not.
    More that you blatantly ignored everyone. You didn't manage to convince the manager that your way was the right one to go. Still you acted on your own authority just out of spite. That's highly unprofessionell.

    Also your reasoning "that the client lives in a first world country and can learn Kotlin" is mind boggling. Training people in languages takes resources. You wouldn't want to do that, just because one developer decides they now what is best for you.
  • 4
    @Makenshi except that I actually made a comparative report on why Kotlin > Java? I'm not going to repeat myself silly after that report. Sometimes you gotta just do it and show your manager an actual demonstration what you mean when you say Kotlin is better than Java. I don't care if you call it unprofessional. I'm nobody's yes man here.

    So what if they had a learning curve to contend with? That's just part and parcel of being in IT. It's actually a kindness to introduce them to the latest stable trends that will make their lives easier in the long run.
  • 4
    You're working as part of a service provider. From your description your client wanted Java and you delivered Kotlin. Regardless of what you think, you delivered the product in the wrong language.

    This could have gotten your old company into massive trouble with the client. If Java would have been explicitly stated in the requirements, they could have even decided to not pay you.

    What you did was not brave or being innovate. And it's rather concerning that you're expressing this much hubris. You're in no position do decide what a client needs. That's not the point of a service provider.

    If you want to make such decisions, then work to get into such positions.
  • 1
    I never worked with Java or Kotlin, so I'm not sure which one is better for your case. I assume Kotlin is a much better fit for your project because of X reasons. However I think you failed to explain that to your teammates and supervisor. Maybe you did not give a proper explanation, or your peers are stubborn as fuck. I think it's best to follow the team decision, but you can try setting up your project in both ways, and point out the advantages of the Kotlin way
  • 1
    @Makenshi except what actually happened was that the project manager assumed that the client wanted Java? I didn't say that the client wanted Java. I in fact asked what the client wanted and he said he couldn't care less whichever language I chose as they aren't devs anyway. Please read more slowly and surely.

    Looking back I did the right thing. I am not going to get anything done if all I do is try to convince my team the superiority of Kotlin over Java. Sorry not sorry.
  • 0
    @Xamenyap yeah I suppose I didn't explain it as well as I should have. We would have wasted weeks of meetings deciding which tech stacks and architectures go well and we would never get anything done. That's why I took to just doing it.
  • 0
    @jennytengsonM Oh, I have read your postings. Interestingly now is the first time you mentioned that you talked about requirements with your client. And that your manager just assumed the product language. Curious that you didn't mention any of this at first.

    But I propose we end this little conversation here. I doubt that anything worthwhile will come out of it. It's a waste of time.
  • 0
    @Makenshi oh now I am obligated to put every detail of my projects in my rants?

    Yeah piss off.
  • 1
    @jennytengsonM No, but it's interesting that you keep adding to your little story.

    Grow up.
  • 1
  • 1
    I am not sure if you did the right thing, but fuck them anyways.
    I am also pissed about this kind of people, but right now I write kotlin, so it's all ok.
    I would resign if someone forces me to start a new project in java right now, it is pretty easy to find other companies that are not filled with idiots.
  • 10
    I guess that approach leaves your company with the choice to either promote you to a tech lead role, or to fire you - depending on whether your office politics skills are on a par with your tech skills.
  • 4
    I like pineapples
  • 4
    @Makenshi or someone forgot a detail. It's a rant site my dude, not a legal hearing. Calm the fuck down.
  • 1
    The team decided on Java and you gave them all a big "fuck you, imma do what I want anyway".

    Ya... I woulda fired you.
  • 0
    @kingcodra they have interop. This isn't like implementing something in Forth when the team decided on Java.

    If I was working on a project where a member implemented something in F# when the rest of the team decided on C# my only question would be "is it CLS compliant?".
  • 0
    @pk76 agreed about the interop, but they had the discussion about Java vs Kotlin. If they didn't, then she'd be fine. But because they had the conversation, it shows:

    1. A complete disregard for teamwork and what her teammates think (even if, imo, they are wrong and kotlin is the way to go)
    2. Cannot follow instructions
    3. Sounds like they had a discussion and op couldn't get her point across, so that shows a sore loser. You didn't get your way, deal with it. Put an argument together and reargue your point for the next project
    4. As someone who doesn't know her, I highly question get soft skills as well

    Maybe I wouldn't fire her, but she sure as hell would be "written up" and this could easily be the last straw.
  • 2
    @kingcodra and I could easily spin this the other way, it shows a complete inability on the part of others to handle anything even remotely different. A completely ridiculous level of rigidity.

    You're delivering a product for the consumer. You're not delivering a product for the team you work as a part of. This is for the consumer, not your own business.

    The fact that they even had a discussion about language to use clearly indicates the consumer was at least flexible about it, and maybe didn't even care.
  • 0
    @pk76 I agree with everything you said. Especially the part about rigidity. They should have done their due diligence and researched. That being said, it was op's job (in the discussion) to make them side with her. She didn't. She needs to honor that and, despite how wrong she thinks the others are, put up with their decision because _it's still a valid decision_ and Java works.

    The team needs to operate as a team. Op isn't. That's what I have a problem with.
  • 2
    @kingcodra I still don't see this as an issue. The consumer is still getting what they want.

    I'll use some prior work as an example. I've cooked a few places in the past and I always wind up head cook. I'll generally come up with the next days special and soup the night before. If I come in the next day and someone else made up a different special I don't loose my shit and say they are being "uncooperative" or "defiant". As long as the consumers are happy with it, I don't see the issue. I don't pay the businesses bills. I'm only going to take issue when the consumer isn't happy. If you defy me and the consumer complains, they I'm gonna say shit to you, but even then it's not because you defied me, it's because you fucked up the execution of your job.
  • 2
    @kingcodra remember folks, sucking your managers cock is more important than the consumer!
  • 0
    @pk76 you're still arguing a different point. I'm talking about internal ops and how I'm unhappy with them. And all your comments are regarding external (client) happiness. I agree that the external factors are fine. I'm trying to say that internally, there are gonna be problems.
  • 0
    @pk76 class act
  • 0
    @kingcodra yeah there are gonna be problems, because they did not do their research, I've been through this, they will not take into consideration any valid argument.
    From what I see the incompetence is a bigger problem in that company then what OP did.
    OP choose the best tool for the job, that's it.
  • 1
    @kingcodra There are these problems only because of rigidity. These problems are because of a team not looking at the big picture, which includes things like the consumer. I keep bringing that up not because it's a separate factor, but because it's a factor of the project that is being ignored. The dev team is not an isolated environment.

    In the aforementioned example I gave, notice how my handling of it did not generate conflict? The issues you are having with this are the effect of how a situation is handled, not what caused the situation.

    I'm not 100% siding with OP. If you want to use a compatible but different stack, and that stack is not something QA is familiar with, I'm gonna tell you you're responsible for all the testing and documentation as well, and you'll be solely responsible for everything in it, unless others want to willingly join you.

    But notice how that doesn't create conflict.
  • 0
    @kingcodra I can, just as much, say the issue here was a lack of soft skills on the team's part (really it's a lack on everyone's part).

    Knowing how to flexibly react to situations and how to remain calm is just as much an important soft skill as learning how to effectively communicate ideas and how to convince others.
  • 0
    @jennytengsonM I hate it‘s syntax, its so ambiguous in many cases and just ugly.
    I like java because of its simplicity, because it has as few syntax rules as possible.
    Although I wished some xtend/kotlin features would be adopted by java, like extension methods, coroutines and the like
  • 1
    @kingcodra It will boil down to the rest of the dev team, which the OP hopefully has been taking into account.

    The front line goes either between dev team and project management, in wich case the OP has already taken the tech lead, and promotion makes sense. Remember that leaders are not great team players because you can't lead by team play. PM may try to fight it off though.

    Or the rift goes between OP and the rest of the company, in which case it's rather bye-bye.
  • 3
    You know, I'm mostly with @jennytengsonM on this one.

    The junior was objectively wrong. Since Kotlin is the standard for Android development nowadays I'd expect the client to react like "wtf, Java?" - if the client cared in the first place.

    As for the PM, managers need to shut up on technical questions. The devs are the experts for this, managerial opinions on that matter are simply invalid. His actual role would've been moderating a "best argument wins" style discussion.

    So the "process" was broken. Does that make @jennytengsonM's action right? Maybe not. Understandable? Hell yes.
  • 2
    Normally the idea of an employee making a unilateral decision against the team wishes would bother me, but in this case I agree with the reasoning behind it. I don’t want to hire mindless automatons, drones that follow orders no matter what, I want thinkers. Since there was no hard requirement from the client, and you knew you could get the project done more efficiently with kotlin, I would support your change in plans. I’d ask that we discuss these things further in private beforehand next time, but I’d still support it.

    Also, I’m not going to punish insubordination, if said insubordination was in effort to push me down the correct path. We all make mistakes, and sometimes we need a little help in seeing one we’ve made. Now should you end up being wrong, you’d have to bear that responsibility as well. That’s all part of leadership though
Add Comment