5 ms·
Ask HN: How often have you reinvented yourself (new tech stack)?
For example, you were a Rails person and are now going as a Scala expert. Or trying to. I think I've done it every 5 years or so.
The interesting thing is that companies use years of experience as a proxy for quality, and a 'reinvented' dev doesn't score on that metric. Any tricks or workarounds you use?
- phpdevster 10y agoWent from PHP to UI engineer using primarily Angular. Had 10 years of PHP, but 0.5 years of Angular and only a few years in very scripty/hacky jQuery / JS. Didn't stop me from getting a $23,500 raise though. It really depends on the company. My company looks for people who have programming experience in general and care about code craftsmanship. Sure, some languages and paradigms are VERY different (e.g. Java vs Haskell) that many skills won't translate well to, but in my case, PHP -> JavaScript, many skills transfer over. And at the end of the day, the programming is the easy part. It's the problem solving and reasoning skills that make a dev valuable, so if the company is hiring based on those, your (lack of) experience in your reinvented stack shouldn't necessarily prohibit you from getting a job in that new stack.
- cloudjacker 10y ago"Had 10 years of PHP, but 0.5 years of Angular and only a few years in very scripty/hacky jQuery / JS. Didn't stop me from getting a $23,500 raise though." Thats a little depressing, trying to extrapolate upwards mobility as my career progresses
- ozten 10y ago> Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getter struck in a rut. [1] [1] http://www.informit.com/store/pragmatic-programmer-from-journeyman-to-master-portable-9780132100670 http://www.informit.com/store/pragmatic-programmer-from-jour... I've taken that advise and learned a new language every 18 months for most of my career. I mostly used the language on side-projects, but occasionally on work projects for internal tools. Occasionally, a language I had learned 3 years prior became "the next mainstream thing" and it was easy for me to "reinvent" myself based on these past investments. So it can be a more organic evolution.
- erichocean 10y agoI spend a portion of each project swapping out parts of the tech stack for better options. Fortunately, I work in a short-project part of the industry so I can do so 3-4x a year. On the current project I'm on (since May), the codebase was moved from TypeScript to C++14, serialization from MsgPack to Cap'n Proto, messaging from WebSockets to Aeron, and we're also using a more sophisticated encryption approach (but still based on NaCl).
- arisAlexis 10y agoTypescript to c++? Thats a rare change and seems a bit backwards
- erichocean 10y agoI was worried about that as well, but the change has been very positive. I've found modern C++ to be very productive to code in ('auto' and lambdas are huge) and the libraries I have direct access to now (vs. working through a compiled Node extension) have significantly improved my productivity relative to Node.js/TypeScript. I'm currently evaluating moving a few other codebases I've built from TypeScript to C++. The main thing that's made C++ work for us, though, has been embracing Bazel[0] as our build/package management system. I had no idea how big a difference that would make, but it's been huge and I would go so far as to say that without Bazel, we would have probably abandoned C++ (at least for our use cases). We do still have a few services that are still written in Node.js, but these are micro-services that use a vendor's Node.js library to call some API—typically < 100 LOC each. They connect to our C++ server over a WebSocket and we message them with JSON (currently) as needed. So we're not 100% C++ right now, but all of the primary logic is in C++ today. [0] http://bazel.io http://bazel.io
- lj3 10y ago> I work in a short-project part of the industry I remember at one point you were talking about becoming a CTO for hire. Is that what you're doing now?
- erichocean 10y ago
- dynofuz 10y agoLooks like im average new stack every 2-3 years 2008-2010: ios 2010-2013: python / machine learning 2014-2016: nodejs 2016 - present: iot devices (c++) These are more additive as i still use prior stacks with current work.
- NetStrikeForce 10y agoFor someone that's not a developer, using the words "reinvented yourself" because you've changed your programming language sounds a bit exaggerated :) of course I'm not the bearer of the universal truth, so please just take this as one more opinion. Reinventing yourself IMHO could be to go from dev to manager, to product then to architect... Tackling different challenges, having different goals, dealing with unrelated technology, not just another way of doing the same. If you are a very senior developer you don't suddenly become a junior developer because you've changed language. However if I'm a senior architect and I want to become a developer I'd hardly land a senior developer gig.
- cableshaft 10y agoBoiled down, over the course of 20 years: HTML -> PHP -> Flash -> C# -> Java -> Obj-C -> Python -> C# -> Angular. Across these platforms: Web, Mobile, and Games So about once every 2-3 years I change, although I have to go back to previous tech stacks for some jobs too (like I used PHP at a job only a few years ago). I realize these are languages and not tech stacks, but I thought it got overly messy when I was being more specific, so the stacks are implied by these languages. Usually I've learned the tech at least somewhat on my own before encountering it in my profession. For example, I made a simple personal site in Angular a few years before I started a job that didn't mention Angular in the interview, but involved a lot of Angular development, so I wasn't completely lost when I needed to start using it professionally.
- doozy 10y agoI am, as they says about Unix: Always changing, yet never changing. I'm still using much of my original stack. The trick is not to chase fads and focus instead on core skills and technologies. I've been using a Unix-like operating system since my first contact with SunOS, I've been developing in Python since version 1.x, C since Borland ruled the DOS world, JavaScript since it first appeared in Netscape 2.0 and Java since I saw the first applet (Java 1.2, perhaps?), PostgreSQL since, I dunno, whatever version shipped with Red Hat 5.0. Of course I reserve the right not to mention my previous experience with Delphi, TCL, Symbian, J2ME, or (increasingly) Perl, if it suits me. Selectively forgetting no longer relevant technologies is a very useful workaround.
- wikiwatchme 10y agoI've enjoyed building side projects with unfamiliar technology. Use MySQL at work - build a side project with MongoDB. Use Apache at work - build another side project with Nginx. Those side projects add to your portfolio and often make great interview topics. This has enabled me to upgrade positions/companies every 4 years or so and change up my day stack.
- robodale 10y agoI'm doing that right now. Former stack: .NET (14 years) New stack: node-react-flux-mongo-postgres
- wingerlang 10y ago2005-2007: Like JAVA and C++ (School etc) 2008-2011: C# (University + 1st job) 2012-Now: Objective-C, iOS, Unix/OS X (lots of scripting), Python every now and then If I do some web stuff, I use plain PHP since 2005. But those are mostly one off scripts etc so..
- DyslexicAtheist 10y agonot much. The underlying skills (linux, C/C++, scripting languages, shells, gnu toolchain, ...) have been portable across IT, Telecommunications, Automotive, Energy. I prefer evaluating what actually constitutes a skill vs learning some tool or method based on closed/proprietary standards. Reinvention took mostly place in terms of learning the new organizational languages, terms acronyms (which mean the same thing) in these different industries (IOT in Telecoms means Interoperability Testing and existed way loner than IoT). Also I found that many organization make us believe we learn new "skills" that are of no use outside that organization.
- Spooky23 10y agoI'm on the IT side of the house. I went from a UNIX DBA / system programmer to running configuration management, exchange and ad on the Microsoft side of the house. Since I have been in both individual contributor and director level roles with security and other domains. You need to present yourself as someone who solves problems. At the end of the day, any engineer who is applying technology (vs inventing) is studying problems and breaking them up into smaller, solvable scopes and finally delivering solutions to those problems. Scala, C++, databases, etc are just tools in the toolbox. It doesn't work for everything. If you want to be a world class practitioner of a tool or technique, whether that's C, Oracle or a guitar, you need to focus. There are entire companies on earth whose sole purpose is to build gas station signs -- they own that market because of that focus.