5 ms·
While I feel sympathy for the father in this situation, being a software engineer (or data scientist) transcends the language which you happen to be working wit
by greenpizza13 10y ago
While I feel sympathy for the father in this situation, being a software engineer (or data scientist) transcends the language which you happen to be working with. People who work in software learn quickly that the language you use is just a tool, like any other, which you should use for the right task at the right time.
Of course, not everyone will be an expert in every language. But having the ability to shift when needed to an unfamiliar language is what really makes a person a software engineer and not just a programmer.
- keithnz 10y agowhen you say "it's just a tool", you are minimizing the significance of actually knowing a language and the surrounding libraries and technology. Much like an aircraft is just a tool, it still requires a well trained pilot.
- bumblebeard 10y agoI think you're both right. Once trained, someone who can fly a 747 can also fly an A320 or an L-1011 since they know how to fly a multi-engine plane. Programming is similar in that once you "get it" the skills transfer easily between languages. Learning a new language is much easier than learning the first one.
- craigvn 10y agoCorrect.
- onion2k 10y agoThat's true, but do you think a developer with 10 years of Java would ever get offered a C job if their only experience of it was self-learning? Unless they have other exceptional skills beyond code, or they're very lucky, they're stuck doing Java.
- taurath 10y agoThats only because there is no agreed upon way to understand talent. I'd bet that that MOST Java programmers could take a C job and start doing pretty damn well in the first month or two.
- keithnz 10y agomy experience is the opposite, ( talking about embedded C environment ). It is a hard transition, if they get trained, it's better, but self learning is often characterized by a lot of "learning from mistakes"
- nradov 10y agoA 747 pilot will have to go through a significant retraining process before being allowed to fly an A320 or L-1011 in commercial service. This involves classroom sessions, simulator flights, and real flights with an instructor. Boeing and Airbus aircraft have significant differences in cockpit layout, controls, and emergency procedures.
- keithnz 10y agoexactly my point, you can know "how to fly" but you need to be trained on specific aircraft, not only that, you need to be trained on landing / takeoff on that aircraft into specific airports. In fact I used to work on software that helped manage pilots / aircrews and schedule them onto aircraft and maintain legal requirements, certifications, etc.
- gramstrong 10y agoThe author says it himself: >Learning lots of programming languages is surprisingly easy. Eventually, familiar patterns appear that makes learning new languages easier.
- phil21 10y agoMost folks who say they "know" 12 languages barely can code in most of them. From personal experience hiring programmers and dabbling in programming - the guy who devotes his life around being a Java programmer and grokking the entire ecosystem is far more effective at writing Java than the guy who is a stellar C guy who has been using Java for a year. I think the "languages are just a tool! pick up the best one for the job!" trope is over evangelized. There are exceedingly few competent programmers who can pick up a language and be a true expert at it within a few months. Those guys are not who we're talking about in the article. The more average programmer (e.g. guys who would let skills rust) is likely struggling with the basic concepts to begin with, much less picking up an entirely new syntax. These guys would take time measured years to get up to their same basic productivity as their first language.
- jernfrost 10y agoI 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.