

Ask HN: Should I switch to a new stack professionally? - jfletch1925

Hi all. I've been reading Hacker News obsessively for quite a while now, but this is the first time I've ever submitted a question.<p>I'm a senior software engineer living and working in the northwest suburbs of Chicago. I'm 36 years old. For the last 10 years I've been working on the Microsoft stack (mostly C#, ASP.NET, SQL Server and more recently ASP.NET MVC). I've been doing a lot of tinkering with more open source languages the past few years. So I have two questions:<p>1) Is it worthwhile to considering switching to a different stack like Ruby/Rails or Python/Django at this stage in my career?<p>2) If I were to switch, how do I go about doing that exactly? I mean, I have no professional experience in other stacks so I would guess it would mean a significant reduction in my pay.<p>I'm interested in hearing all your thoughts. Thanks.
======
msluyter
My answer to question 1) would be, "are you happy doing what you're currently
doing?" If the answer is "yes," then it might not be worthwhile unless you
enjoy it for its own sake. I'm older than you and learning rails just for fun.
Perhaps it'll result in a career move, perhaps not. I figure, at a minimum, it
can't hurt.

For question 2), a lot of people suggest creating a side project as a sort of
demo/walking resume. The limiting factor there, esp. if you're older, is
simply the time/effort required to do that outside of work. I'm also curious
about the pay issue. Are there any stats comparing jobs by dev stack?

~~~
jfletch1925
I'm reasonably happy, but I'm currently working for a big corporation and
there's nothing very exciting about what I'm doing for work. I have been doing
projects in Java, Python and Ruby on the side, but my question is more about
making the switch professionally. Most companies want to know how many years
you've been working with a particular language or technology. If I switched
I'd be going from 10 years experience in .NET to 0 experience in another. I'm
guessing that switch in experience would result in less pay on a new stack.

I don't have any trouble learning new languages. It's more about how I'm able
to present myself to new employers.

~~~
nwmcsween
Do you see programming as a means to a paycheck? If you see it as that you may
want to reconsider your career. Most people high in their respective fields
make it as such from a passion for their work.

~~~
jfletch1925
I don't think I agree completely with that philosophy. I've heard a lot of
programmers say that if you program it shouldn't be about the money. It's as
if we should all be devout monks of technology eschewing worldly pleasures in
the pursuit of high and noble technological purity. Meanwhile, the
business/sales people use all our skills and efforts to make themselves rich.
I can't agree with that. I do like programming and I do program for fun in my
spare time. However, money is still important. It's an important consideration
in choosing what you want to do with your future. It isn't the ONLY
consideration, but it's still important.

------
Skywing
I think it's worthwhile, if only to see what all the hype is about. You may
like it or you may not. That's a decision you will benefit from being able to
make, though. If you know enough tools to be able to approach a particular
problem and then assemble your tech stack based on which of those tools solves
it the best, or to your highest liking, then you're better off than you were
when you only had C# to choose from.

You most likely won't find a company that is willing to pay you while you
learn one of these new languages, entirely. I suggest just diving in, and
choosing a language that you think you would enjoy. One of my personal
priorities is to find one that has an active community (with an IRC server on
Freenode preferably). Then, pick a web framework for that language and a
database to use and start hacking away at something simple, like a to-do list
application. Make it a goal to use some cool tech, like a trendy database, a
distributed task queue, full-text search indexing, web sockets, rpc over http,
or anything. The goal here is not to build the to-do list app, but to learn
about the tools out there, so go overboard with it and even though a to-do
list app might not need a distributed task queue, use it anyways. (or not, I'm
just a mega nerd and love seeing all these moving parts working together)
You'll learn a ton during this process. Most importantly, you'll find that you
have been building your tech stack of choice, all along.

------
kls
Back end technologies are becoming less and less critical in modern web
development. The web is no longer chained to the server stack that is chosen.
My suggestion would be to learn a RESTful API on the existing stack that you
know.

Set up RESTful JSON services and build a web front end with just HTML, CSS and
JavaScript. Try out Dojo and jQuery and use them to completely replace
ASP.NET. Write your entire UI independent of the server stack and have it
retrieve data and execute business logic via the RESTful services you stand
up. Try to implement everything in HTML files with no server side scripting.

From there, you can take that knowledge to any back end stack, further once
you know how to write web apps independent of the back end stack, you can
learn to stand up services in other languages. Once you master this
development style, it become very easy to learn a REST API on a new platform
and languages so you can quickly adapt your development to whatever back end a
company uses.

Further, it makes you front ends far more portable among back end
architectures, Mobile becomes just another front end consuming the same REST
services and HTML, CSS and JavaScript provide a far more responsive and usable
application, when you liberate the UI from having to POST back to the server
for every action you can create a lot of workflows that are just not possible
with the old page-POST model.

~~~
jfletch1925
Actually, I have already done something very similar to that and I did it on
the job. At one gig, we used Ext JS to create a front-end web app. This web
app would make calls back to server methods written in C#. All the data was
passed between the frontend and the server in JSON. It is much more modular
and makes the frontend more portable as you say, but I was really more
interested in getting away from doing the server side programming in the
Microsoft stack. Something completely different.

~~~
kls
So take that same front end stack and implement your services in python, or
Ruby or Java or Node.js.

------
raphaelcruzeiro
If you are curious about it then, for all means, try it. I used to work with
the .NET stack at work while on my own time I hacked with Linux and C++. I got
curious about Python and Django and decided to create some small personal
projects to learn it. After a while I found ut that I couldn't stand it doing
web development with ASP.NET MVC after learning Django.

One day at work there was a small project to be done and since it was a quick
project and I was one of the only programmers involved with it I proposed
Django for the task. The project was a success and everybody that got involved
with it loved it.

Then came another project with an insane deadline and I said: "There's no way
we can do this in .NET with this deadline, if it was to be done in Python I
could deliver it on schedule...". The result? Another success case with
Python.

Nowadays, my company has it's own product (developed in Python as the ease to
use was what inspired the product) and we are using more Python than .NET. My
company was a 100% .NET company but everybody fell in love with Python and
Python, combined with Django and other open source modules enabled us to do
some amazing things that were just not feasible with .NET.

------
wglb
My advice to young aspiring programmers is to pick up more than one stack.

And don't plan for a reduction in pay; follow patio11's advice and think of
yourself as a solver of problems, not restricted to any given stack.

~~~
jfletch1925
I agree with your advice to younger aspiring programmers and I do think of
myself that way. I have no trouble putting in the time to learn another stack.
I'm really asking more about how to show a potential employer that it would be
worthwhile to take my on as a programmer in a new stack at a pay not too far
off from what I'm getting now.

~~~
wglb
While recruiters (inside a company and those hired by the company) will try to
fit you into "buzzword jail", the message to bring to potential new employers
is what business problems you can help them solve--the skill that you have in
translating a business need into a delivered project or stream of projects.
Only a part of that is your skill in a particular stack.

I know of at least one company who hires programmers without Ruby skills, yet
everyone at the company programs in Ruby after they join.

Mentally review your career and describe the leverage you have personally been
to the effort and what you have accomplished.

------
jsolano
I am more or less in the same position, I'm 39 old with a very good programmer
job, in this case with a Java stack. My personal opinion is that Java, J2EE,
.Net will continue to be relevant because many business have migrated his
legacy cobol apps to this stack, but sad but true, .Net and Java are the new
cobol... you can retired woking with they, but they are not the future any
more.

The future is in languages as Scala, Python, Ruby, Javascript and ideas as
Node.js, NoSQL.... you want to create a new stack to play... review that are
using the top startup and you will see a clear map.

My strategy is to use this new technologies in my side projects, nobody pay me
for that (yet) but allow me mastering what is comming. Make this transition
with a full time job, family, wife and kids is a big challenge. I want be part
of the new wave in IT and no spend the rest of my life in legacy technologies.

Let me know and I can show you more ideas how start the trip...

J

~~~
jfletch1925
Glad to hear from someone in the same boat as me!

I realize this is the case for Java and .NET which is probably the main reason
I'm thinking about switching. I've done quite a bit of work with OO Javascript
professionally, but I've only done side projects in Python and Ruby. I've done
some reading on Node.js and NoSQL, but that's about it.

I want to be part of the new wave in IT as well. I don't have a wife and kids
so I definitely have more free time.

I'm interested in any more ideas you have on getting started down this path.

------
gtani
Late answer, but a good question (hope you notice the answer). Putting up a
rails or django app would probably not be all that terribly difficult for you,
I would look into the following broad areas (frequently headhunted for, and
probably the path of least resistance would be F#):

1\. Languages classified as FP: F#, clojure, scala, ocaml, haskell (I say
classified as becuase the OO part is important in F# and scala).

2\. Message exchanges/actor model languages: scala/akka, rabbitMQ/erlang,
zeroMQ, F# MailboxProcessors

3\. noSQL/doc store/KV store databases, or whatever you like to call them:
riak, mongoDB, redis. And don't forget mySQL/postgres, they're eveywhere!

4\. intermediate Solaris/linux/BSD admin skills

5\. javascript is its own fast moving universe: coffeescript, Node.js,
clojurescript etc

6\. expertise with configuring Hadoop on amazon EC2

7\. crawling/scraping, info extraction; fulltext indexing/search and "next
steps" like named entity recognition, basically commercial applications of NLP

Oh, and signup for meetups/user groups that are engineering-related, even if
you don't know anything about the topic. You'll get the pulse of emerging
techs, and meet lots of VP Eng types who are hiring.

------
satori99
I was in _exactly_ the same position as you a few years ago (I am 38). However
in the last two years I have embraced OSS technologies and have not looked
back. I feel like I wasted too much time in .NET land, and the best bit is
that programming is actually more _fun_ for me now.

~~~
jfletch1925
That's very good. How exactly did you make the switch? Did you start to
participate in an open source project? Did you just start learning it on your
own and then gt hired somewhere? I'm very interested in hearing aboout how you
made the switch.

------
KevinHou
The best way to find direction is to study the framework of high load sites
such Facebook,EBay... Each of them is a valueable tech stack.

------
rorrr
Most of the concepts you've learned still apply. For web, you will still use
HTML, CSS, JS on the front end.

You will have to learn the language and the particular quirks of the framework
you choose.

Also keep in mind that Ruby and Python are inherently slow (~20x slower than
C#). It's rarely a problem, unless your app does a lot of calculations. Most
web apps I've dealt with were DB or I/O bottlenecked.

Start with creating your own project from scratch. And not some "hello world"
bullshit, but an actual useful app.

