Avatar of Taimoor Mirza

Taimoor Mirza

Associate Software Engineer at Intech Process Automation
Avatar of TAM360
Associate Software Engineer at Intech Process Automation·
Recommends
on
PythonPython

Go with Python. It's syntax is really simple and less verbose compare to others. You can use Python for basically anything like web dev, task automation, data science, data engineering, cybersecurity etc. At initial level, it's more important to get an understanding of programming fundamentals. Once you get conformable with coding in general, then you can explore other languages.

READ MORE
21 upvotes·1 comment·253.1K views
Rachel Alan
Rachel Alan
·
November 25th 2020 at 11:32AM

Thanks a lot. I really needed that. Now I can focus on learning it. Thanks for the help. :)

·
Reply
Avatar of TAM360
Associate Software Engineer at Intech Process Automation·
Recommends
on
MySQLMySQL

No matter which front/back-end framework you choose, SQL is a must. It's the main powerhouse when it comes to data management. There's hardly any company in the world which doesn't use SQL. So there are high chances that you will be interacting with relational databases while working on real world projects. My suggestion therefore would be to focus on SQL as much as possible. Any relational database (MSSQL/MySQL/Postgres) will work.

About web developments frameworks, I believe in having more than 1 programming language in your skill set. Sure it's easy to learn only 1 and use it for both frontend and backend which is the case of MEAN/MERN stack. But main advantage of being a polyglot is that you get the chance enhancing your own thinking process. Every language comes up with it's own set of pros and cons. Implementation of problem X in Python may vary in Java or Go. By interacting with multiple languages, you learn new was of observing and attacking a problem.

Then there's also a possibility that some other framework may work much better than node/JS for the development of backend for reasons related with nature of the business problem, scalability, performance and technical debt. On smaller scale, these may not matter that much but as application starts to grow, they can become a huge bottleneck.

Finally, having diverse tool set increases your chances of getting hiring too simply because you know more stuff as compare to those who're stuck with single ecosystem. It can also send a signal to recruiters that you're flexible enough to learn things which are outside of your comfort zone (some disagree with this point).

In the case of web app development, I would suggest you to learn JS for frontend and Python/Java for backend. Whatever combination you decide in the end, SQL is a must.

READ MORE
13 upvotes·1 comment·2.5K views
Curt House
Curt House
·
June 18th 2020 at 4:50PM

Awesome advice. That where I has heading with my question. I intend to learn MERN as well as PostgreSQL since it works with Node. I also intend to learn Python and Django so that I have a broad range of tools to use. I think with the following toolset, I should be able to function well in the market place: JS ES6, React, Express, MongoDB, PostgreSQL, Python, Django. This should be a good target and then learn more as needed.

·
Reply
Avatar of TAM360
Associate Software Engineer at Intech Process Automation·
Needs advice
on
ASP.NET CoreASP.NET Core
and
Spring BootSpring Boot

For context, I currently use JavaScript (React) and Python (Flask) in my daily routine.

I need your help in choosing either Spring Boot or ASP.NET Core. Both frameworks seem to have mature ecosystems. I would like to hear your thoughts on the following points:

  • Difficulty level of both frameworks
  • Level of community support
  • Career prospects i.e do Spring based jobs pay more or vice versa
  • which one will be helpful if I decide to transition towards a more specialized field like data engineering.

I am asking this because it is something that I am also exploring in parallel. I know that Python and #SQL play a huge role in big data.

READ MORE
5 upvotes·776.8K views
Replies (4)
Avatar of keeganwitt
Software Engineer ·
Recommends
on
Spring Boot
Spring Boot

I'll preface this by saying I haven't ever done work on the Microsoft stack, so take this with a grain of salt.

Community support: Java tends to have a more active community (and much more diverse universe of new open source projects) than .Net (related to below).

Difficulty level: I'd say the Java/Spring stack is more difficult because Java developers tend to use more community projects and have to know which ones to choose in which circumstances (e.g. what logging framework to use? What database connection pooling library to use? What testing framework to use). That being said, most decisions you have to make have choices that are vastly more popular than others. My impression is that .NET guys use stuff from the standard library almost exclusively. If it's not provided there, it's a problem they never thought to solve or maybe write their own (usually the former).

Career prospects: I'll get hate for this probably, but Java/Spring has more jobs than .Net. .NET Core even more so because it's new. Most .NET jobs out there are going to be not Core, and not on anything other than Windows. LinkedIn search for jobs in United States shows 97,103 for Java and 36,448 for C#. That's not to say some individual city might not have more .NET than Java, but by and large Java is bigger. Also, .NET is not dying at the same pace as say Ruby on Rails (sorry Rails fans). I'd say it's ticking very slowly lower, maybe even holding steady. I wouldn't say you're screwed career-wise if you choose .NET. C# is also pretty similar to Java from what I've seen, and I know professionals that have transitioned to Java (though interestingly, I don't know any that did the reverse). Several companies have basically no .NET footprint, for example, Amazon, Google, Facebook, LinkedIn, Twitter all have Java, but basically no C#.

Specialized fields: Neither Spring or .Net are going to be a thing in a field like data science. That's exclusively Python (some R) for the most part. The only exception being that there is some Java in Hadoop, and Scala in Spark (which runs on the JVM). But I think those are generally more for data products being created, and not data science work. I'm also under the impression this is increasingly less the case than historically. Some other specialties might make Java useful, for example Android development.

In short, Java is the COBOL of the modern enterprise (which is both a good and bad thing). I recommend it to anyone over .NET, but not for technical reasons. It's for reasons related to the questions you asked. There are actually reasons I think CLR and C# are actually better from a technical perspective than Java (unsurprisingly, since they had the benefit of hindsight). But that's not what you were asking about...

READ MORE
5 upvotes·4 comments·591.3K views
Taimoor Mirza
Taimoor Mirza
·
July 16th 2020 at 3:39AM

Hearing you say " Java is the COBOL of the modern enterprise" sounds kind of depressing....

·
Reply
Keegan Witt
Keegan Witt
·
July 16th 2020 at 3:59AM

What I mean by that is that it's ubiquitous and stable. And that I'm maybe a touch cynical after being a Java guy for over a decade.

Innovation has gotten better under Oracle. Sun kinda let the language languish from a lack of new features (e.g. functional programming). But the last several years have picked up and I think has made companies that were looking at Scala or whatever alternative languages decide that the updated Java was good enough and they no longer needed an alternative.

Let's be honest though, all these languages (Python, C#, Java) aren't exciting. They've been around a really long time and are stable workhorses. But that's not a bad thing. A language that has a lot of exciting new features is just gonna break my shit more likely than not.

I'd also add that Python is chipping away at Java's dominance it seems (although it's not happening in the city I live in). So good on you for having that in your toolbelt.

·
Reply
Taimoor Mirza
Taimoor Mirza
·
July 16th 2020 at 7:30AM

Python for sure has been dominating for the several years. However, I've heard that when it comes to the field of data engineering, Java has more edge. Perhaps a lot of tools like Apache Spark and Kafka are based on it and it also the ability to handle large scale data, but I am not sure about it. Another reason of me asking for Spring/ASP.NET Core is the nature of Java and C#. Knowing a statically typed language (and the relevant frameworks) forces you

to think about your code in more cautious manner. They give a different perspective about writing code. But again, these are just my thoughts.

·
Reply
Keegan Witt
Keegan Witt
·
July 18th 2020 at 10:31PM

That is true. Java/Scala are pretty big in data intensive applications, though this is a fairly highly specialized area. Since most data science is done in Python, I think fairly often folks just run their stuff in Python and even though it's not all that performant, it's often good enough. Though there's definitely overlap in that problem-space.

It is useful to understand how both dynamic and statically typed languages work. But I wouldn't say a statically typed language makes you have to be more cautious, I'd say it eliminates a category of problems (things not being the type you expect at runtime -- you always know exactly what types you're dealing with). Java is rather verbose in its syntax, but that's not strictly related to it's lack of dynamic types. Scala is much less verbose, but also lacks dynamic types (but it does have type inference, which is one of the things that reduces the amount of ceremony). Static typing also have better tooling (it's easier for an IDE to autocomplete stuff, etc), and better performance (in theory, someone probably could create a dynamically typed language that performs as well as statically typed languages, but it has never happened yet).

·
Reply
Recommends
on
Spring Boot
Spring Boot

Spring boot helps you creating microservices in hours, not days and there is a very active community around it with amazing integrations. Check one of the tutorials maybe. At least here in Germany, the job market will be better for Spring Boot as well, there are a lot more companies using Java then C#.

READ MORE
5 upvotes·585.2K views
View all (4)
Avatar of TAM360
Associate Software Engineer at Intech Process Automation·
Recommends
on
JavaJavaPythonPython

Since you're already taking a CS course which involves Java, I would recommend you to keep learning it. Java's statically typed & OO nature forces you to learn a lot of important yet common programming fundamentles. C++, C# and Java type languages also force you write code more carefully (you have to think about the data types on your own and even allocate/de-allocate memories [C++ pointers]). That's why colleges prefer it as go to language for teaching CS concepts.

On the other hand, JS, Python and other such languages are dynamic in nature and hence, easy to learn. But you can't learn certain concepts (polymorphism, abstract classes, diamond problem etc) using these languages. So it makes sense to stick with Java in your case.

READ MORE
4 upvotes·206.4K views
Avatar of TAM360
Associate Software Engineer at Intech Process Automation·
Shared insights
on
Vue.jsVue.js

I started using Vue.js because it's learning curve is straight and has excellent documentation.

1 upvote·434 views