TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

If you had to start over, what technologies would you learn in 2014?

146 pointsby PhilipAover 11 years ago

36 comments

skrebbelover 11 years ago
Folks, the big point of this article is not that Hanselman likes C#, it&#x27;s that his list of options does <i>not</i> include Objective-C or Java. It&#x27;s that he thinks that the web will win (over app stores). I strongly believe that he&#x27;s right there.<p>At some point, app stores had &quot;discoverability&quot; as an advantage over the web. This has been one of the strongholds of native app proponents. These days however, with the enormous amount of apps available on popular platforms, this discoverability feature has become a joke. It&#x27;s akin to searching the 1999 web for interesting sites but you can <i>only</i> use a badly managed, bribe driven version of Yahoo.<p>Whoever can make the Google of app discovery might make a temporary splash, but i bet that, not long after, people will return to plain old Google Search. You only need 1 major mobile OS to change paradigm and hide the difference between apps and web apps, and your mom won&#x27;t care anymore. Given that the world&#x27;s #1 mobile OS is made by the worlds #1 web company, this change is not difficult to predict.
评论 #7210560 未加载
评论 #7210617 未加载
评论 #7211767 未加载
评论 #7210740 未加载
评论 #7210744 未加载
评论 #7213703 未加载
评论 #7211165 未加载
评论 #7213054 未加载
gizmoover 11 years ago
It depends on your goals. If your goal is to do a startup, then the obvious choice is to really master an entire web stack. For instance linux &#x2F; nginx &#x2F; python &#x2F; html &#x2F; css &#x2F; javascript.<p>If you want to do research in computer graphics, then you better learn OpenGL and C++ or .NET. Want to work in embedded systems? C.<p>Scott&#x27;s recommendation of C# &amp; Javascript is a solid and pragmatic choice, good for those looking for a safe career in software. But it&#x27;s certainly not the right choice for everybody, and even 30 years from now there will be plenty of challenging opportunities that have nothing to do with the web or javascript.
评论 #7211616 未加载
评论 #7210878 未加载
评论 #7211531 未加载
评论 #7210639 未加载
crazygringoover 11 years ago
If you&#x27;re looking to maximize your choice of companies to work at, one piece of advice could be to focus on front-end instead of back-end.<p>I&#x27;m equally proficient at front-end and back-end, but the last time I did a whole bunch of interviews, I advertised myself as a front-end programmer (since there aren&#x27;t too many full-stack positions around).<p>Why? As a back-end developer, you&#x27;re limited to picking companies that match a single one of the three broad back-end categories -- generally Java, Microsoft, or &quot;open-source&quot; (PHP&#x2F;Ruby&#x2F;Node&#x2F;etc.) -- since any programmer is usually only going to be really proficient in just one of those. If we assume companies are split 3-way, you&#x27;re instantly limiting yourself to 1&#x2F;3 of possible companies.<p>But on the front-end, there&#x27;s no balkanization. It&#x27;s just JavaScript, JavaScript, JavaScript. It&#x27;s not too hard to learn JavaScript and jQuery inside and out, and with some solid CSS experience, knowledge of good development patterns, and maybe a framework or two, you can interview practically <i>anywhere</i>.
评论 #7211724 未加载
评论 #7211742 未加载
评论 #7211768 未加载
评论 #7211688 未加载
评论 #7212045 未加载
评论 #7212689 未加载
stiffover 11 years ago
This idea that a software engineer picks a language as his &quot;favourite&quot; and becomes a &quot;Ruby developer&quot; or a &quot;JavaScript developer&quot; ever since is completely misguided, and I&#x27;m sad to see it cherished further in this article.<p>Languages are tools, and tools should be picked depending on the project: its application domain, performance requirements, availability of libraries for important subproblems that have been identified, target platform, etc., there are lots of very concrete factors to look into. Completely ignoring those factors in favour of choosing your &quot;favourite&quot; or one of just 2 languages you happen to like, is going to have suboptimal results. A good engineer knows a lot about programming languages in general (what is taught in a university &quot;Programming languages&quot; course), has basic experience with a huge number of languages, and picks the programming language for the project based on this knowledge, based on research and on prototyping, that&#x27;s how I see it.<p>I recommend looking back at Marvin Minsky&#x27;s 1970 Turing Award lecture &quot;Form and Content in Computer Science&quot;. Little has changed since:<p><i>The trouble with computer science today is an obsessive concern with form instead of content.</i><p><a href="http://web.media.mit.edu/~minsky/papers/TuringLecture/TuringLecture.html" rel="nofollow">http:&#x2F;&#x2F;web.media.mit.edu&#x2F;~minsky&#x2F;papers&#x2F;TuringLecture&#x2F;Turing...</a>
评论 #7212132 未加载
评论 #7212266 未加载
评论 #7212422 未加载
评论 #7212209 未加载
评论 #7212179 未加载
spamizbadover 11 years ago
Ultimately these things are a matter of opinion, but as a developer who knows C#, I&#x27;m not sure I&#x27;d bother to learn it again if I had to completely reboot my knowledge. I can understand the perspective of being pragmatic with regards to the job market, but while there are an abundance of C# jobs available, offers tend to be lower unless you&#x27;re specialized in Sharepoint or <i>very</i> senior. Culture can be a challenge in those shops as well.<p>&quot;Professionally&quot; I&#x27;ve worked the most with Python, JavaScript, PHP, and C#. Of those, I&#x27;d only keep JS and Python. I&#x27;d swap out C# and PHP for Clojure and C in a heartbeat. Probably not the best for job prospects but definitely the most fun.
评论 #7211345 未加载
almataover 11 years ago
&quot;Ultimately, we&#x27;re all amateurs.&quot; - Wow, that&#x27;s something I&#x27;ve been thinking a lot lastly. It&#x27;s true that a good developer can learn a new language (or technology, or even paradigm) in a quite short amount of time, but at the same time, when we&#x27;re constantly doing that it&#x27;s true that, as an effect and as the author says, we&#x27;re becoming permanent amateurs. I don&#x27;t have a solution for this though (maybe there is no solution at all, or maybe there is not even supposed to be a solution).
评论 #7211442 未加载
评论 #7211061 未加载
cmdkeenover 11 years ago
I&#x27;d actually recommend a slight variation on the C# javascript combo - Typescript instead. There are all sorts of tools coming out that allow you to generate Typescript interfaces from your C# giving you really nice compile time safety through your entire stack.<p>If you&#x27;re writing C# then Typescript feels more natural, especially in Visual Studio it removes much of the painful context switching between a typed intellisense driven development and a javascript free for all.
评论 #7210640 未加载
评论 #7210984 未加载
TuringTestover 11 years ago
The Functional Reactive Programming paradigm is going to hit hard. It makes parallel programming extremely easy, which is a huge bonus for multithreading (a great way to harness multiprocessors) and for loading web pages asynchronously.<p>Libraries for this programming style are being created for almost any popular platform, and knowledge is spreading quickly. I recommend following some tutorial or online course on the subject.
stcredzeroover 11 years ago
The sweet spot for Bang for the Buck, for a typical programmer, would be Go -- then use it in a functional style. (Except for in strictly delineated circumstances, the entire code base should have zero side-effects outside of the current function scope.)<p>This gives you a safe, easily concurrent language, plus most of the benefits of functional programming, but without as shallow a learning curve. (Meaning not as hard. Learning curve is not an analogy for a steep road! Height = stuff learned!) You also get very good debugging. (gdb and cgdb in particular)<p>I&#x27;m writing my current project in Clojure, however, because it has most of the advantages of the above, but the available GC technology for the platform is far superior. (You&#x27;ll have to learn some new debugging tricks, however.)
vinceguidryover 11 years ago
If you&#x27;re in the US, learn whatever the hell you want. Then move to a biggish city and find a job using it. Bam, you are now equipped to take advantage of the biggest tech boom the country has seen since the 1800s. The 90s wishes they were this good.
rip747over 11 years ago
I&#x27;ve been doing ColdFusion for well over 13 years now. The reason I choose it was because at the time the only other web technology that looked promising was ASP and I _hate_ Visual Basic with a passion. Today I&#x27;m focusing all my attention on C# and Ruby.<p>That all said, if I had to start over today... I wouldn&#x27;t be programming, I go back to networking. As much as I love programming, it just doesn&#x27;t amaze me anymore. I guess its the lack of physical interaction. I&#x27;m starting to dread typing on a keyboard for a living.<p>I look at all my friends in networking and see all the cool toys they get to play with and want to jump in the sandbox.
评论 #7211346 未加载
herghostover 11 years ago
I think Virtualisation, Automation, and Orchestration technologies would be the best place to start again. I&#x27;ve seen some really impressive things done at pretty impressive scale with this stuff.
habosaover 11 years ago
If I could start over and pick one language, it would be Java. If I could pick two or three I&#x27;d add Python or Ruby but let&#x27;s stick with one.<p>Everyone knows Java is great (or at least pretty good) for &quot;building large systems&quot; like the article said. You can learn a lot about software engineering from all of the practices that have built up in the Java community over the years. Note that I&#x27;m not talking about gross JavaEE stuff, but just good, solid OO programming with an incredible about of libraries for whatever you need.<p>The real reason I&#x27;d push for Java is Android. Android programming is an incredible way for a newcomer to get non-trivial code in front of a large audience in a production environment. Writing an Android app has a decently steep learning curve, but once you get the hang of it you can really make progress quickly. Then you can publish to the Google Play Store with no app review, no $99 fee, and no Mac required. You&#x27;ll get some downloads and real feedback on almost any app.<p>The first app I ever made was a total piece of shit and it got 50,000 downloads. It had a ton of bugs that people asked me to fix and it taught me how to make something that people actually want in an environment where I had nothing to lose. Even ended up making a few hundred dollars on ads which 18-year-old me thought was pretty damn cool.<p>There is an intoxicating feeling when you realize that a few hundred or few thousand people out there are running your code in their pocket, and it makes you want to create even more. It&#x27;s the same with iPhone&#x2F;ObjC I&#x27;m sure but I think Java has more other uses and Android is definitely a less intimidating platform for a beginner to just put something out there.
taudeover 11 years ago
1) Any high-level language that runs in the Java VM. Because 1) there&#x27;s tons of open source libraries 2) syntactic sugar for devs 3) operational stability of the VM 4) flexibility of running it on both open source and closed source OSes meeting a variety of business requirements.<p>2) A scripting language for gluing your operations together, for quick and dirty services, prototyping, etc...: Python<p>3) JavaScript.
评论 #7211337 未加载
评论 #7211212 未加载
um304over 11 years ago
I would really like to know other folks opinions on this point mentioned by the author: &quot;The web will persist and the web will win.&quot;
评论 #7210607 未加载
评论 #7210746 未加载
评论 #7210990 未加载
评论 #7210995 未加载
Thizover 11 years ago
Cordova is the future and the future belongs to those who prepare for it today.<p>Learn Cordova.
评论 #7210791 未加载
评论 #7210999 未加载
drdiabloover 11 years ago
My opinion on &quot;the web will persist and the web will win&quot; is that it&#x27;s not a won battle. Native apps have always been smoother, giving users a better experience overall. On the contrary, mobile web apps have been bad, and haven&#x27;t much evolved since we started having mobile devices (laptops don&#x27;t count :p). I&#x27;m pretty sure that the future resides in mobile devices, and they can&#x27;t rub the web, we&#x27;ll have to use the alternative: native. At that point nothing stops Apple or facebook to go entirely native and therefore abandoning the web ideology (and the physical web). So I think that the web is a possible future, but nothing is settled yet, we need more groundbreaking ideas from the web to make it a desirable choice of future.
评论 #7213485 未加载
weavieover 11 years ago
I would have thought that learning two languages at the same time.. especially with one of them being javascript would be a bit of a brain overload.<p>I would just suggest sticking to javascript to start with. You can do front end, node and mobile. With that under your belt you would then be in a much better place to jump to a different server language and would know more about which one would be the best fit for you. But focus on one thing at a time, you&#x27;ll learn much quicker that way.
geogra4over 11 years ago
SAP. It&#x27;s not particularly exotic but it runs the world.
评论 #7211573 未加载
评论 #7212763 未加载
room271over 11 years ago
I would learn (as someone who is interested in backend stuff - scalability, high-performance systems, apis) related to web-work:<p>- HTTP - C (because it teaches you how computers work a bit) - One of the new JVM languages (either Clojure or Scala, preferably the first) - some bash (for scripting)<p>Realistically that is a lot to learn in a year.<p>On top of that I&#x27;d start dabbling with Javascript but not expect to learn it this year (that&#x27;s for next year).
FigBugover 11 years ago
If I could do it all again, I&#x27;d study a lot more math in University and probably end up focusing on something like Audio DSP. I think it&#x27;s a pretty safe career choice since it&#x27;s hard self learn compared to a lot of other fields, meaning competition is less. And if you are good, companies will happily pay you to learn tech of the week.
评论 #7221000 未加载
alkonautover 11 years ago
I&#x27;d learn F# + C + Rust + TypeScript&#x2F;ES6. Anything that lets me avoid learning C++ or JS.
评论 #7211193 未加载
评论 #7210954 未加载
评论 #7212899 未加载
LeicaLatteover 11 years ago
Apple has been around for 30+ years, are a 100 billion dollar company now and are here to stay. Definitely objective-c.<p>Javascript because every device made today or tomorrow will ship with a decent javascript runtime.<p>Then move on to the things you personally like.
bitwizeover 11 years ago
.NET and JAva because that&#x27;s where the money still is.
spitfireover 11 years ago
I&#x27;d learn computer science, again. Languages come and go, the core tools for thinking are solid foundations.<p>Then I&#x27;d learn Lisp, Python&#x2F;Ruby and Mathematica.
piratebroadcastover 11 years ago
Im currently learning Rails and Javascript- Good to know I seem to have made a safe choice.
mrmondoover 11 years ago
Python - I believe it&#x27;s the language of the now and the near future.
评论 #7210926 未加载
评论 #7215228 未加载
nlyover 11 years ago
C++14
ilakshover 11 years ago
My favorite things right now which I am happy to recommend are ToffeeScript <a href="https://github.com/jiangmiao/toffee-script" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jiangmiao&#x2F;toffee-script</a> with Node.js and Nimrod <a href="http://nimrod-lang.org/" rel="nofollow">http:&#x2F;&#x2F;nimrod-lang.org&#x2F;</a>. I also think LiveScript is awesome.<p>AngularJS is great. Web Components are better I think though.<p>Docker has redefined devops in my opinion <a href="http://docker.io" rel="nofollow">http:&#x2F;&#x2F;docker.io</a><p>GLSL is very cool and something you can even experiment with in your browser using Three.js etc. I believe that real time ray tracing is going to be a thing within a few years <a href="http://www.youtube.com/watch?v=abqAanC2NZs" rel="nofollow">http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=abqAanC2NZs</a> <a href="http://www.youtube.com/watch?v=V5Y06xkRWio" rel="nofollow">http:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=V5Y06xkRWio</a><p>CoreOS looks very interesting.<p>WebRTC is a technology that could almost make an industry irrelevant. <a href="http://simplewebrtc.com/" rel="nofollow">http:&#x2F;&#x2F;simplewebrtc.com&#x2F;</a><p>Understanding APIs around bitcoin and cryptocurrency in general seems important.<p>I believe that the internet is eventually going to be switching away from normal named server structures to a content-oriented architecture. <a href="http://en.wikipedia.org/wiki/Named_data_networking" rel="nofollow">http:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Named_data_networking</a> There are a lot of ways this category of architecture is actually currently being deployed behind the scenes, for example CDNs or bittorrent. I believe that we are going to start using that type of system more and more and eventually we will lose things like the HTTP layer. This may be combined with some of the technologies related to cryptocurrency.<p>For an example of why we are moving to named data networking, take a look at well.. just about any web application that wants to scale. For example the npm registry. Also consider the issues around privacy with Facebook and the NSA, and the ability for governments to censor or take down web sites or domains.<p>So any technologies that facilitate things like that, such as more traditional clustered SQL or NoSQL tools, or especially protocols and systems specifically designed for named data networking, will be very powerful. I like the idea of heterogeneous peer nodes that have everything they need built in and can connect to the network on their own.<p>Another area that is really going to be key is artificial general intelligence. Notice I did not say machine learning. I think look at taking advantage of built deep learning systems like the one IBM has with Watson. Or look for deep learning, autoencoders, hierarchical hidden markov models, hierarchical temporal memory. But most practically for the next few years IBM and Google&#x27;s (when Google releases it) cloud AIs are going to be game changing for many industries and harnessing them in software will be very useful.<p>Qualcomm&#x2F;Brain Corporation and some others also have some neuromorphic chip technologies that could be extremely useful.<p>Any system that really takes advantage of next gen VR devices like Oculus Rift is going to be interesting.
评论 #7210972 未加载
pouzyover 11 years ago
I like Python. It took me a while to get out of PHP, so I guess I&#x27;d drop PHP to jump directly in Python.<p>But most of all I&#x27;d learn how to fix a car. They are such a pain when they break.
评论 #7212693 未加载
iamyatinover 11 years ago
my language would be python.. it&#x27;s everywhere.. be it android, raspberry pi, scientific computations, and what not.
interstitialover 11 years ago
I&#x27;m sorry did you ask what technologies, or what over-arching philosophy of self-improvement vs. pragmatic career development we should debate?
moron4hireover 11 years ago
To start over again, I&#x27;d have had a much bigger focus on standards and open-source, standards-compliant software. Having been spoiled by Visual Studio, I now lack the patience necessary to setup a dev environment from scratch with Emacs or Vi or whatever.<p>And no, Eclipse is not an alternative, though <i>maybe</i> NetBeans is, which are two statements I really wouldn&#x27;t have said 10 years ago. I don&#x27;t really feel like it&#x27;s a case of Visual Studio having gotten significantly better. NetBeans has gotten significantly better and Eclipse has gotten significantly worse. MonoDevelop and Xamarin Studio are waaaaay too buggy to be useful. I find myself gravitating to a text editor like Geany or really anything that combines syntax highlighting, tabbed documents, and a file explorer. It&#x27;s amazing how infrequently those three things come together (I&#x27;m looking at you, Notepad++ and Notepad2), or just don&#x27;t work very well (Hi there, LightTable and DrRacket).<p>While I like C#, the promise of quality cross-platform software with it is mostly a boondoggle. The hoops you have to jump through, and the state of the dev tools for Mono, just push me towards Java anytime I need a cross-platform desktop GUI app.<p>And that&#x27;s sad. Because it&#x27;s not like Java does a particularly good job of it, it just does a site-better job of it than most anything else. I don&#x27;t have a good enough handle on the C toolchain to pick up and run with Qt or GTK and cross compile for every platform. And nobody pays enough attention to desktop in basically any other language.<p>Please, correct me if I&#x27;m wrong, because I&#x27;d really, really like to be wrong here. I suppose I could do [Pythong|Ruby|OCaml|Haskell|Racket]+[GTK|Qt], but it feels grating. It doesn&#x27;t match. As far as I can tell, there is no GUI library that works well in functional languages--even a wrapper on top of an OO one. But again, correct me if I&#x27;m wrong. Please.<p>Other than that, I wish I had ditched SQL Server a long time ago. Postgres is just as easy to install and use now, and has been for several years. I wish I had the balls to replace my clients servers with Postgres and just not tell them about it. They probably wouldn&#x27;t notice.<p>I wish I had never wasted time on Python.<p>I wish I had kept gaming to my Playstation and stuck it through with Linux back in 2000.<p>I wish I had not gone to college. Going to college meant I had to get a job that paid well to service my debt afterwards. And for where I lived, that meant I had to buy a car. Even still, being 22 years old and having only $35k in debt was far better off than most of my peers, and even better still than most of the kids graduating today, so I guess I&#x27;m not too badly off. But still, I think about the last 10 years and really wish I had been writing all of that software for myself rather than The Man.<p>What the hell was the point of writing all those projects in college for the command line? 4 years of wasted practice on an interface only other programmers care about. It is such a fundamentally different paradigm, and most of my peers didn&#x27;t transition well. <i>I</i> didn&#x27;t transition well, and I&#x27;ve been either the most successful person or at least in the top 3 of my graduating class.<p>I wish I had never stopped doing screwy shit in JavaScript. There was stuff I wrote in 1997 that people are pushing today as &quot;the power of HTML 5!&quot; If I stuck with it, instead of listening to my &quot;betters&quot; at work or in college, then I think I could have contributed a lot more.<p>So, less about what specifically I would have studied, and more about not listening to what others have to say about what I should have been doing.
chaudrucover 11 years ago
Excel, Powerpoint, SQL<p>Business tools.
buzaga41over 11 years ago
Sports.
this_userover 11 years ago
&quot;Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.&quot;<p>A Microsoft employee talking up C#, what a surprise.
评论 #7211551 未加载