re: I Want To Be A Programmer: How Do I Start? VIEW POST


I am partial towards Java. Yes it feels like lot of boilerplate code and restrictive format. Everything needs to be within class. There are rules on what can inherit and what can encapsulate. But in the end, you develop a strong sense of how to architect your code. Something that python or c++ like multi-paradigm languages can't enforce within you as you would always take the path of least resistance and only try to structure code for sake of reducing repetition.

The main point is that you should be able to structure code even before you begin typing it. Structuring after you have written code is bad productivity

And once you master one programming language, other languages are just different syntax. I have coded in PHP, JS, Kotlin, Swift, TS, Java and C# and Only issue I ever had to deal with was when legacy code was badly structure. My peers can understand how my code works because of the structure. Even in kotlin which provides a lot of flexibilities over java.


pros and cons about your point, I agree that

you should be able to structure code even before you begin typing it

I don't about

you develop a strong sense of how to architect your code

You develop a strong sense of how to use OOP, for years I was trapped in that limited frame, is not easy to see beyond that once you get inside that box, OOP is not the best for everything, has it's merits and its problems, not every project will benefit from it, to limit oneself to one paradigm is not what I would suggest to a new user. That is exactly why I wouldn't suggest Java and to chose a multi-paradigm PL instead, to try to solve a problem with OOP and then re-implement and re-design in functional or other paradigm to understand the differences, pros and cons is a much better exercise to me, than just marry OOP and memorize whole Java boilerplate. You may even become a Haskell weirdo or a Lisp master.


Yes you are right, I should have been more clear about it. And I can share your feeling about trapped mindset. I worked on ruby on rails years ago and I struggled to adapt the meta-programming mindset. I have straight forward avoided using functional programming even though I love elixir as technology stack. Even today, for kotlin and Java lambda's, I struggle a little. For lambda's, My path of least resistance is to write code as I know, and then let android studio take over to convert my code to lambda.

OOP is not best for everything. But it is a good starting point to learn relationships and flow between code. With my dealing with college freshers, I have felt that those with good oop concepts can adapt to other coding paradigm easily, in contrast to those freshers who didn't. I have to review their code less.

One of the fresher working on a PHP project constantly objected our MVC-like approach citing its unnecessary to separate HTML and PHP logic into different file. ( I am living in a so called non-IT city in India where coaching classes still teach PHP 5.1, and college still uses borland c++ 5 to teach students).

I think mileage varies from person to person. Java has a benefit (or curse) of strict coding styles which means when teaching it to students, It's less distracting, because even though you can use your own coding style, community expects you to adapt default guideline. In the end, you have one less thing to worry about.

And like I said, Once you gain some work experience, working on any other language is just adapting its syntax and limitations. I switched my career from Java Servlets to PHP 7 years ago, and last year I switched it to Java and kotlin for android development. The difference between strict type and loose type language was nothing which google can't solve ;)

give functional a try, I started to dig into it when I started with Rust without even noticed; after a while I realized that my code naturally started to get more functional and that was just trying to make it more clear to me; the realization was almost freaky to me. Specially because since the university I always leaned to OOP, first with C++ and then with Python.

Thank you both for your insight!

Code of Conduct Report abuse