Calling All Coders: What was your roadmap?

I am not saying you cannot make a good living from being a developer. I am saying you cannot make it a long term career.

This is actually true for most things these days, outside of the "professions" (medicine, law, accounting).

Most people leaving college today will have to re-invent themselves career-wise at least 2 or 3 times during their lives, if they want to stay relevant.

I've found programming to be an immensely valuable skill over the years. But it's never a skill I've tried to use by itself, I've always been building things for either myself or others. It's a spade, not a hole in the ground.

I'd recommend starting from basics. I did a Real-time Systems degree where we covered stuff like C (anyone remember good ol' K+R book?), C++, VHDL, and Assembler as well as higher level languages like Java and Perl. We wrote filesystems, created networking stacks and programmed microcontrollers.

Although I'll probably never need ASM again, the experience of using it was invaluable. HLLs like Ruby and PHP are far too forgiving to be useful beginners' learning tools imo.

Programming is just like any other engineering skill really - potentially very useful if you apply it and evolve it, but not a life-long meal ticket in and of itself.

EDIT: If you wanted a long term skillset and don't want to go into business / management, I'd get into real-time systems development, get an internship with aerospace company or arms manufacturer, and get security cleared. Control system languages don't move fast (many still use 68000 assembler or ADA), and nobody is going to outsource their new missile guidance system software to China/India. There's a MUCH bigger world of development out there than just desktops and web apps.
 


EDIT: If you wanted a long term skillset and don't want to go into business / management, I'd get into real-time systems development, get an internship with aerospace company or arms manufacturer, and get security cleared. Control system languages don't move fast (many still use 68000 assembler or ADA), and nobody is going to outsource their new missile guidance system software to China/India. There's a MUCH bigger world of development out there than just desktops and web apps.

That's some food for thought, thanks for the perspective.

I do currently have a Secret clearance (coming out of the military) that is good for another 4 years and some change.

blureach hit something on the head when he talked about management positions becoming more versed in technology and of the younger era: I've become a huge critic of people management because of my background in the military. To me, "leadership" isn't just a bullet point on a resume. It actually holds weight and severely impacts the working environment and ultimately the level of short term success accomplished as well as the whether or not a company has long-term potential. One poor leader can literally screw the pooch and I whole-heartily believe this applies universally.

I'll give myself a round of applause. I've demonstrated a fantastic ability to get shit done with a handful of people while mitigating the unrealistic and often suffocating requirements of a higher authority. I'm inclined to manage people. That said, I've heard a lot of chatter in the development communities that taking on a project management position is not ideal. And I ask, why not?

Isn't it a fair goal to aspire to become a project manager? I understand you lose your ability as a developer to "create" in the trenches - and as developers, I think you have to have a passion to create things, otherwise what are you doing here - and as a team lead you lose a lot of that ability...

But is it safe to say that aspiring to become a developer in Ruby and onto the Rails framework, and then working to become an incredible project manager is a "safer" or "more rewarding" goal than simply a developer? I'm speaking through naivity, so if I'm striking chords, don't forget that I'm just a green horn.

All feedback is seriously appreciated. Keep it coming guys.
 
There is a lot right, and a lot wrong here with general assumptions.

As someone that has been doing this for 16 years now, I would like to share some experience I have.


Next, being a developer is not really a good career choice because the constant rate of change on this field which makes your skills obsolete after a certain years. How many BASIC developers are in demand nowadays? Compare that with lawyers and accountants. The longer they are in the career line, the more valuable they are.


I have to disagree. I have been doing this for 16 years. I started out with html and moved into perl and php back when php was fi. php and perl are still in demand to this day. as a matter of fact, there are more php jobs online then any other language almost. granted, if i wanted to jump on the new shit i would jump into ruby and python and go, etc.. but as a developer you grow and every new language you learn only HELP you code better. i learned php as a hack, but yet i have coded some nice complex shit in my life and earned some good coin off it. learning python or ruby will only help me. a developer doesn't have a shelf life limited to their language of choice, a loser does.



And i also suggest to look for more as being a developer. As pure developer you are limited - you are limited in a company because
the higher positions are normally not filled with developers. You are the worker not the designer or the boss.

I vote this as well, learn some social and management skills, you will be higher then most of the drones. Better yet, build your own shit.

Make something that is useful to you. That's the best motivation.

^^ this, plus you can earn coin from it.

Personally, I wouldn't start learning how to program by using a framework like rails. I'd first learn ruby (if that's the language you want to start with) and all the programming concepts rails uses before using rails. When you start using rails you should be write rails. By doing it that way you'll really understand the core concepts of programming and common design patterns.

After that when you start learning a second or third language I'd say it's okay to dive into a framework, because you already understand the concepts involved. You'd just be learning the syntax and nuances of the new language. For example using something like django would be fine, because once you learn the syntax you could write django if you had to.

Personally, I'd suggest learning python first. You might be leery of the white spaces matter issue, but with a proper IDE it's really a non-issue. It's also an extremely simple language to learn and there are online courses you can take for free to help get you started. I'm not knocking ruby I just think python is a better language for beginners. I have no real facts to back that up it's just how I feel and I'm sure other people would disagree with me.

That is 100% incorrect. You can make a great living as a programmer. Personally, I've made a little over 100k a year just as a developer when I was doing it full time. I can still to this day go back to being a developer and pull that kind of salary, because I'm good at what I do. If you're a shitty developer with no social skills then yes you're correct. If you're a good developer with decent social skills you can make a good living. I pretty much maxed out my earning potential by the time I was 23, but that's not a bad thing in the grand scheme of things. Most people would give their left nut to make that kind of money. Personally, I wasn't happy with it so I went on to do other things. However, those other things did involve programming even if it wasn't the core part of my business.

^^ i agree with this, but what you earn is also relational to where you live if you get a "normal job". In the midwest/southeast, a .Net or PHP developer would be "lucky: if they got $40k a year, whereas the same person doing the same job in Toronto makes close to $85-$90k a year. Learn to work remote or learn to move to a big city.


I've been all over the place, but I would recommend something a bit more versatile like Python over Ruby.

3 months isn't enough to master Rails, or Ruby, especially not both.

I think you are asking the wrong question; what do you want to do? That will give you a direction to figure out which language to code in.

I can't say learn X over Y, I want to learn to be a better coder, not a XYZ coder. However, I agree 3 months is not enough time to master anything at all. Even doing this 40 hours a week, it is going to take you more then 12 months to really master any language, if not more. I don't care who you are.


Have you looked around at what companies pay junior developers? They'll start you at probably $30k/year, which is only $2500/month pre-tax. You'd make just as much if not more running forklift at a warehouse, without having the 6 - 12 month learning curve, the constant overtime / homework, and a boss who doesn't understand your workload but still rides you.

Freelance is a possibility, but lacks stability. I wouldn't bother with sites like oDesk or eLance, as they're a joke, and just a race to the bottom. Browse forums like WF and thousands of others, and you'll always see people needing some development work done. Also maybe contact a bunch of web design companies and freelancers, as alot of times they're looking for good developers to partner with. They're good with the design stuff, but need to pass off the development aspects of projects.

Start with a low wage, around $20 - $30/hour. Globalization has taken effect, so you're competing with people from all over the world now. If you're good, people will come back with return work. As your work load increases, so does your hourly rate. If you're a really good and efficient developer, there's people out there who'll pay $100 - $150/hour for your time.

Other option is packaged software, whether that's an SaaS solution like WordAi, or a distributable like xMarkPro. I've been doing development for 12 years, and I can quite safely say that's where the money is. If you have a good product, and get the word out, you can be making money off it for years. It's nice waking up all refreshed, check your e-mail and see a bunch of new PayPal e-mails. Just keep your eyes and ears open, find a hole you think you can fill, develop a product / service, and push it out.

Good luck!

^^ good god I agree with this. Jr Developers ( and even heavily experienced ) get the fucking low ball pay depending where you are and who you work for. The jobs are just not there in certain places and the remote jobs get picked up fast. Building your own shit is a for shit bet though if you can hang in while doing a normal job.

I am not saying you cannot make a good living from being a developer. I am saying you cannot make it a long term career.

^^ I don't know about that, I've been doing it for quite some time myself ( along with Internet marketing ). Good developers adapt and solve problems ( like learning how to adapt themselves to change ). I know a lot of guys that have been developing for 20+ years.

I love to create. I specifically have an interest in web applications. I have a feeling as my learning advances, I'll find myself in the middle as a designer/developer and I'll have to specialize (from personal experience, I like to take on both aspects). Chances are I'll choose dev > design.

I did some research into the Python vs. Ruby (or more specifically, Django vs. Rails). Ultimately, I like the Ruby route (not just for Rails). Saying I continued a path towards a professional Ruby developer, what kind of career opportunities are common beginning at the intern level, and how quickly can a new Ruby developer find himself over the $60k/yr mark?

Very black and white question, just use it as a frame of reference. I'm making some long-term decisions based on your quality input, so thanks again.


You sound an awful lot like me. I love to create. I was going to be an architect before I was online. A $60k a year job? you can find that tomorrow almost if you hustle. If you only want to rely on your skills, I would say at least 1 full year plus a couple gigs under your belt.

Hmm... I have been all over the place and am now head of IT.

Being a dev long-term is for some people, but those are rare. The excitement about every detail of new technologies wanes with age, so be prepared for that.

Do I love building things? Hell yeah, and I still code in private.
However, leading a team of developers gives me much more power to build new stuff than I'd have working as a dev.

BUT...

The years spent as a dev give me the solid background I need to get things happening.

If you love building web stuff, build your empire-building software.

::emp::


^^ this, so much like me too
 
I actually have to agree with Wicked Ice here. Hell, at my high point I was making alot more than $100k/year, but quite obviously, I wasn't able to sustain that. Even after I dropped the first time, then resurged, I was making over that.

I'll stick with what I've always said, ever since I started in software. The shelf life of an average developer is 35. Once they've hit 35 years old, they've lost the creativity, innovation, and ambition needed to compete and produce great results. You can just be banging out code when you're 48, for example. Of course there are exceptions, but I'm talking about the majority.

So if you're going into software as a career, make sure your end goal is to be in a management position of some kind by the time you're 35. Whether that's your own company, IT lead for another company, or whatever.

^^ this. I am 34 and I come up with great ideas all the time to code, but lost the "drive" and will power to do it. I've been trying to learn python and ruby for a couple years and have put it off ultimate because of the same reason. I'd rather make money now, then learn code or create shit for fun.


This is a completely untrue generalization.

My father, fluent in AS400 which is an archaic DOS type language not far from cobalt is able to land $80/hr long-term contracts across the country. He can settle in at 80k/yr fairly easy in a decent size city.

I have 4 friends all .NET pro's making truck loads. Two of them work for local corporate offices as in-house IT making 90k+ and the other two developed their own application development system sitting on 1m in state contracts over the next year. All 4 learned .NET out of college 7-9 years ago and will be in just as much demand in another 20+ based on the companies they work for.

Yes, if you jump on the language band-wagon of something like Ruby, you are gambling, but the pro developers know multiple languages in and out of the corporate world.

Now I will agree, that you need to learn other skills aside from developing to prolong your career into/past retirement.

^^ this, but a lot depends on where you live and who you work for. Especially for normal jobs.

I do agree with the shelf-life on most developers. However, once you have that developing knowledge at age 40+, it will be easy to take leading positions at medium size companies. I'm already seeing the trend of CIO's & CTO's becoming younger and younger in Baton Rouge of all places.

Also agree with the SaaS option mentioned by Matt once you get your shit figured out.

^^ this
 
  • Like
Reactions: boatBurner
eliquid,

+1 for some thorough insight. And really, I would give more rep to all of you for giving me feedback.

You mentioned a couple of times that location plays a role in available career pathways. I've been aware of this to some degree. God I wish I was moving to Austin, TX.

But I'm not, at least not immediately. I'll be settling down 30 minutes outside of Phoenix, AZ. I know it's not the worst case scenario for a Ruby developer, but how close is it to the best case?
 
That's some food for thought, thanks for the perspective.

I do currently have a Secret clearance (coming out of the military) that is good for another 4 years and some change.

blureach hit something on the head when he talked about management positions becoming more versed in technology and of the younger era: I've become a huge critic of people management because of my background in the military. To me, "leadership" isn't just a bullet point on a resume. It actually holds weight and severely impacts the working environment and ultimately the level of short term success accomplished as well as the whether or not a company has long-term potential. One poor leader can literally screw the pooch and I whole-heartily believe this applies universally.

I'll give myself a round of applause. I've demonstrated a fantastic ability to get shit done with a handful of people while mitigating the unrealistic and often suffocating requirements of a higher authority. I'm inclined to manage people. That said, I've heard a lot of chatter in the development communities that taking on a project management position is not ideal. And I ask, why not?

Isn't it a fair goal to aspire to become a project manager? I understand you lose your ability as a developer to "create" in the trenches - and as developers, I think you have to have a passion to create things, otherwise what are you doing here - and as a team lead you lose a lot of that ability...

But is it safe to say that aspiring to become a developer in Ruby and onto the Rails framework, and then working to become an incredible project manager is a "safer" or "more rewarding" goal than simply a developer? I'm speaking through naivity, so if I'm striking chords, don't forget that I'm just a green horn.

All feedback is seriously appreciated. Keep it coming guys.

No, unless you have a burning desire to run your own SaaS business. There is far too much competition in things like Ruby/Python/PHP, because they are so easy to learn.

If you start by learning a framework like Rails, you'll just know how to work with that framework. When that falls out of fashion, you'll be stuck.

Frameworks are wonderful for building stuff quickly, because they insulate you from the mundane, repetitive code work. But that makes them terrible for learning to code, because you need to understand all that shit.

Also, if you want to be a project manager, learn to manage projects, don't learn to code. The reason developers don't like PM is the same reason salepeople don't like working as sales managers. They are fundamentally different roles, and the idea that one should progress into the other is flawed (and a major reason why a lot of projects fail and sale teams suck).
 
^ There is only competition (in terms of struggling to find work) if you stay at the low point of the market where it is a buyer's market; lots of cheap supply. There is a huge range of quality in php & python & ruby programmers.
 
Also, the concepts that rails or any well written framework uses aren't going anywhere, they might evolve, but if you actually enjoy programming, it won't be a problem keeping up.
 
No, unless you have a burning desire to run your own SaaS business. There is far too much competition in things like Ruby/Python/PHP, because they are so easy to learn.

If you start by learning a framework like Rails, you'll just know how to work with that framework. When that falls out of fashion, you'll be stuck.

Frameworks are wonderful for building stuff quickly, because they insulate you from the mundane, repetitive code work. But that makes them terrible for learning to code, because you need to understand all that shit.

please stop saying things like this, they're absolutely false and will give aspiring programmers the wrong roadmap to follow. There's absolutely nothing wrong with learning by using frameworks as they make you more productive.

I learned the bulk of my web development skills by learning rails, then slowly peeling back the layers and discovering how it all worked. While learning Rails, I learned about:

Ruby
MVC
Database Modeling
Caching
Database Query Optimization

It also made it easy for me to learn how the fuck AJAX worked way back in the day and it gave me a lot of really good fundamentals to base my development and design choices on as I moved forward. I've built PHP projects from scratch for clients (per their request) and still built it out using MVC and routing and with an ORM, ALL because I had learned Rails when getting started.

Think of it this way: If you want to learn how to ride a bike, do you want to just be dropped off alone in a parking lot with a box full of bike parts, or do you want to learn on a nice new, safe bike that a whole bunch of really smart people helped design and build?
 
  • Like
Reactions: boatBurner
eliquid,
But I'm not, at least not immediately. I'll be settling down 30 minutes outside of Phoenix, AZ. I know it's not the worst case scenario for a Ruby developer, but how close is it to the best case?

I think PH is a good town for this... maybe not for housing or economy, but for developer jobs I think it was OK last time I checked.

No, unless you have a burning desire to run your own SaaS business. There is far too much competition in things like Ruby/Python/PHP, because they are so easy to learn.

If you start by learning a framework like Rails, you'll just know how to work with that framework. When that falls out of fashion, you'll be stuck.

Frameworks are wonderful for building stuff quickly, because they insulate you from the mundane, repetitive code work. But that makes them terrible for learning to code, because you need to understand all that shit.

Also, if you want to be a project manager, learn to manage projects, don't learn to code. The reason developers don't like PM is the same reason salepeople don't like working as sales managers. They are fundamentally different roles, and the idea that one should progress into the other is flawed (and a major reason why a lot of projects fail and sale teams suck).

There is a lot of competition, but almost every single company I have been hired for, requested jobs with descriptions like "ruby ON RAILS" or PHP Codeignitor" or "Java Swing". I have hardly ever found a job where they only asked for Ruby only or Python only without a framework mentioned. Granted though, I work mostly shit thats web based. however, your gonna have to know it for a lot of jobs so I see no harm in it really.

Also, just because there is a lot of competition doesn't mean much. Sure, the odds will be slightly stacked against you the more you compete with, but if you can learn to stand out and network ( because the great jobs are not available via Human Resources ) you can get hired anywhere with great pay while bypassing 300 people looking for the same job.

Also, the concepts that rails or any well written framework uses aren't going anywhere, they might evolve, but if you actually enjoy programming, it won't be a problem keeping up.

^^ this.
 
please stop saying things like this, they're absolutely false and will give aspiring programmers the wrong roadmap to follow. There's absolutely nothing wrong with learning by using frameworks as they make you more productive.

I learned the bulk of my web development skills by learning rails, then slowly peeling back the layers and discovering how it all worked. While learning Rails, I learned about:

Ruby
MVC
Database Modeling
Caching
Database Query Optimization

It also made it easy for me to learn how the fuck AJAX worked way back in the day and it gave me a lot of really good fundamentals to base my development and design choices on as I moved forward. I've built PHP projects from scratch for clients (per their request) and still built it out using MVC and routing and with an ORM, ALL because I had learned Rails when getting started.

Think of it this way: If you want to learn how to ride a bike, do you want to just be dropped off alone in a parking lot with a box full of bike parts, or do you want to learn on a nice new, safe bike that a whole bunch of really smart people helped design and build?

I've got nothing against frameworks, rails or anything like that - I agree with you, they save a lot of time, and I use them myself.

BUT.... I stick to my position that they are a bad choice to learn on, at least initially. A major problem with them is that by their very nature, a lot of design decisions have already been made for you. If working with MVC, ActiveRecord etc is how you've learned, it's too easy to assume that it's the correct approach in all situations, rather than questioning as to whether it's the right approach or not.

You should always approach any framework, methodology or language critically, and appreciate its limitations as well at its advantages.

So no, I'm not against learning Rails (or whatever) at all... I just wouldn't start off with it.

OP's question (if I've understood it properly) was about building a career in development. Given the nature of this board, he's likely to receive answers which are very biased towards web development, but why limit himself to that area?
 
OP's question (if I've understood it properly) was about building a career in development. Given the nature of this board, he's likely to receive answers which are very biased towards web development, but why limit himself to that area?


amateursurgeon, thanks a lot for providing your perspective in here.

To clarify, I'm not a stranger to the question "Which language should I invest my time into?" I've been asking myself that question for years (far too long, really).

Before I even understood what SEO was, I was inclined to develop. Sadly, I sucked at being resourceful during the younger years, and I settled for basic web development (HTML/CSS and minor PHP) and then considered myself a "developer" at a very low level. Today, I know how silly that sounds.

I'm not going to say a lot of critical thinking has gone into my decision to choose web application development. What I can tell you is that I'm highly encouraged by the amount of exposure web applications have received over the years and I've become emotionally invested in the idea of creating and then marketing a web application product/service and already have a few ideas that I tried to get off the ground using incredibly modded Wordpress designs. The concept reached a level of validation that introduced me to the idea of expanding my web development knowledge.

I'm long-winded sometimes, but I hope this at least shows I didn't roll out of bed this morning and say "I want to become a developer!" (though it oftentimes feels like it)
 
I've become emotionally invested in the idea of creating and then marketing a web application product/service

You sound like you're in a similar boat to me - I've gotten back into doing development for that very reason. Not because I want to spend my entire life coding (although I hugely enjoy it), but to give me the toolset to build my own apps and build a business off of them.

In which case, your goal isn't to become the best programmer possible so you can build an entire career around it, it's to learn enough to launch a product, then hire people who are better coders than you. Learning rails, django or whatever will do just fine. ;)
 
No, unless you have a burning desire to run your own SaaS business. There is far too much competition in things like Ruby/Python/PHP, because they are so easy to learn.

If you start by learning a framework like Rails, you'll just know how to work with that framework. When that falls out of fashion, you'll be stuck.

Frameworks are wonderful for building stuff quickly, because they insulate you from the mundane, repetitive code work. But that makes them terrible for learning to code, because you need to understand all that shit.

Also, if you want to be a project manager, learn to manage projects, don't learn to code. The reason developers don't like PM is the same reason salepeople don't like working as sales managers. They are fundamentally different roles, and the idea that one should progress into the other is flawed (and a major reason why a lot of projects fail and sale teams suck).
I know we are all making generalities here, but I think yours are a bit too broad.

The best sales managers I know were top tier salesman (not the best)...

They are not fundamentally different roles, they just take different skill sets that require a unique personality to cross borders. The better salesman and the best managers I've encountered in life are the ones with the most product knowledge and work great their others.

For example, my step-dad was a mechanic and moved into upper management at the heavy equipment company he worked at. When I say upper management, I mean Sr. Vice president of a massive corp. He got these because when he moved into management, he kicked the absolute shit out of all other managers that were business-men with his product knowledge and his ability to relate to all of his workers. I know this because I worked their and saw him in action.

The guys that learn agile development and best practices in development without knowing code will get stomped on by those that do. Not saying you have to become a pro architect developer, but you need to learn more then the basics if you want top tier developers to respect you.
 
Think of it this way: If you want to learn how to ride a bike, do you want to just be dropped off alone in a parking lot with a box full of bike parts, or do you want to learn on a nice new, safe bike that a whole bunch of really smart people helped design and build?
I don't disagree with your post, but I see where amateursurgeon is coming from.

I think learning from a box full of parts has just as much value as rising the nice new bike. As to which one is better? I think it depends on the person. I don't know how to code but knowing myself, I would do better with the new bike (framework) as opposed to the parts box. I do have friends that would do much better with the parts box though
 
I've got nothing against frameworks, rails or anything like that - I agree with you, they save a lot of time, and I use them myself.

BUT.... I stick to my position that they are a bad choice to learn on, at least initially. A major problem with them is that by their very nature, a lot of design decisions have already been made for you. If working with MVC, ActiveRecord etc is how you've learned, it's too easy to assume that it's the correct approach in all situations, rather than questioning as to whether it's the right approach or not.

You should always approach any framework, methodology or language critically, and appreciate its limitations as well at its advantages.

So no, I'm not against learning Rails (or whatever) at all... I just wouldn't start off with it.

OP's question (if I've understood it properly) was about building a career in development. Given the nature of this board, he's likely to receive answers which are very biased towards web development, but why limit himself to that area?

see for me, I get a half-chub reading code like the Rails core, because it's so well written and I'm thinking the whole time "hundreds of guys infinitely better at coding than me have produced this, so this is what I need to strive to become"
 
Think of it this way: If you want to learn how to ride a bike, do you want to just be dropped off alone in a parking lot with a box full of bike parts, or do you want to learn on a nice new, safe bike that a whole bunch of really smart people helped design and build?

All depends on what he wants to do, and how far he wants to take it. Be a coder, or a developer? Be someone who just bangs out code, or someone who develops truly unique and profitable applications?

If the latter, he should get down to fundamentals without the aid of frameworks. He should have the skills to be able to take an idea, open up Notepad, and turn it into a reality. Once he's got that down, he can start worrying about frameworks to make his life easier. If you want to be a developer who builds profitable applications from scratch, you should have the skills to write your own framework, before relying on others.

Or to use your analogy, if you want to manufacture bicycles, you need to know all of the parts inside and out. You can't just take an existing bicycle, make a few tweaks, then sell it as a new product. Well, you can, but...
 
All depends on what he wants to do, and how far he wants to take it. Be a coder, or a developer? Be someone who just bangs out code, or someone who develops truly unique and profitable applications?

If the latter, he should get down to fundamentals without the aid of frameworks. He should have the skills to be able to take an idea, open up Notepad, and turn it into a reality. Once he's got that down, he can start worrying about frameworks to make his life easier. If you want to be a developer who builds profitable applications from scratch, you should have the skills to write your own framework, before relying on others.

Or to use your analogy, if you want to manufacture bicycles, you need to know all of the parts inside and out. You can't just take an existing bicycle, make a few tweaks, then sell it as a new product. Well, you can, but...

I get the feeling that everyone thinks that Ruby On Rails is like those shitty little model car kits that came fully assembled and all you had to do was paint them rather than glue all the pieces together. It's not. Neither is Django, or CakePHP, or any other popular web development framework. They're all just sets of very well written code that eliminate the necessity to write boilerplate shit for each new project.

Whether I write my own database abstraction layer or use a very well built one created by other people has abso-fucking-lutely NOTHING to do with whether I can build a profitable product.

You don't need to understand every single line of code in the Rails core to build profitable, unique products. I am living testament to that, I've built many profitable products and client projects with Rails and I could not sit down and rewrite Rails from scratch because it is the product of 100's of thousands of brilliant-man hours.