2 ms·
I used to think this, but it is not entirely true. Sure learning new languages is easy. I do it all the time. However learning the environment, libraries, tools
by jernfrost 10y ago
I used to think this, but it is not entirely true. Sure learning new languages is easy. I do it all the time. However learning the environment, libraries, tools and businesses which go with these languages is a huge undertaking.
I've been a desktop C++ developer for most of my career. I switched to iOS development for the last years. It was doable because Objective-C is native language like C++ and mobile apps work in similar fashion to desktop apps.
However I found doing Android development a huge barrier. The language Java was the easy part. The hard part was a completely different ecosystem, thinking and tools. With iOS it is easy, you got clang, xCode, cocoapods, homebrew and mostly apple tools and libraries to deal with. With Android there is a myriad of Java IDEs. There are several build systems. And each build system is seemingly huge and complicated, doubling and package or library distribution tools. Then there is a all sorts of testing systems, and the fact that Java is a world to its own. You don't use all the commands and tools a regular Unix guy might be used to like otool, nm, make, gdb, lldb, ld, gcc etc.
Still it was kind of doable.
Enter Java Script and web development. It confused the hell out of me. A completely different way of thinking of software development compared to what somebody used to native GUI toolkits running on one computer is used to. You got a client and server existing on different computers which have to synchronize. You don't debug in an IDE but in the browser.
And in some ways it feels like Java Script is harder for people who actually know a bunch of languages. You know there are common sensible ways of doing things which lots of languages do whether that is C/C++, Go, Java, Swift, Objective-C, Python, Ruby or Lua. But Oh no, JavaScript has the most odd ball nonsensical way of doing things. It is hard to get, because you can't figure out why on earth anybody would make the language behave this way. If you simply stopped thinking and didn't realize how stupid it was, you'd probably be better off.
- Pharylon 10y agoVisual Studio code has the nice ability to interface with the Chrome debugging API. Once it's all set up correctly (which can be a bit of a pain, depending on your Javascript build process) it's kind of IDE-like.
- flukus 10y agoAndroid feels like another world even if you know java and are used to GUI development in higher level languages. Even for java android is particularly reliant on tooling, to the point where if the IDE screws up it's easier to recreate the project and copy the files in than it is to debug the tooling. In contrast, java with something like swing (not something that I would recommend learning BTW) would feel pretty familiar to you.
- SatvikBeri 10y agoI work in data science, and last year learned the Scala/Spark stack, switching from Python's numeric computing/ML ecosystem. I would say that this involved something like 200 hours of work to get to the point where environment differences were no longer a daily distraction, and of that, only about 20 hours were due to the language itself–most of it was things like getting an IDE to work, futzing around with sbt, learning about the common libraries, Spark configuration headaches etc. 200 hours is a lot of time. It was worth it in this case, because Spark lets you do a lot of things that the Python environment doesn't (and vice versa), but I would be pretty hesitant to invest that time for something without an obvious benefit.