Calling all developers/engineers. Which disciplines should I study?

Apr 20, 2008
10,067
990
126
Hello fellow ATers.

I'm attending Epicodus in a couple months and it's a three level program. The first is level one, which is the intro class. The second level is picking two disciplines and the third level is the class that your first two qualify as a prereq.

Level two courses

Ruby
PHP
Java
C#
Javascript
CSS
Design

Level three Courses

Rails
Drupal
Android
.NET
CSS
Design

Here is the link to the class list and descriptions.

What is really in demand and will be in the future? Which of these are most coder-friendly?
 
Last edited:

purbeast0

No Lifer
Sep 13, 2001
53,767
6,646
126
(first i'll start of saying i'm assuming you don't have experience in this area since you are asking)

that said, my personal opinion is that webapp and mobile are where a lot of the future will be, as well as software as a service.

with that said, on that list, i'd personally steer clear of php, ruby/rails, drupal (for sure this), Android, css, and .NET

i'd stick to java, c#, javascript, and design. the first 2 will teach you the basics of OOP. then js will teach you how you can start getting into web app stuff. and you want to know how to design things structurally before you can even write code, so design is a necessity. imo, design meetings are of more importance than actual implementation sometime, and a good design can make implementation much easier.

css is pretty easy to pick up on your own once you start getting into web app stuff. android is too specific and is just java anyways, rails/ruby is also too specific, and drupal is way too specific imo.
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,842
4,820
75
- Ruby: Ruby/Rails seems to be fading, but I could be wrong.
- PHP: Old, but very widely used.
- Java: Old, but widely used as well. Plus used on Android.
- C#: No idea - ask Microsoft where this is going.
- JavaScript: This language seems to be taking over (with Node.JS)
- CSS: Well, very common, but not a language per se.
- Design: Are you an artist? Do you think it's at least as important to get the look of something right as the functionality? If so take this and CSS. And maybe JavaScript.

Did you notice the suggested tracks? Basically:
Rails goes with Ruby.
Drupal goes with PHP. It's a tangled mess of a CMS, but some companies like it. I should know - this is what I primarily work with these days.
Android goes with Java.
.NET goes with C#. (Or Java or a few other languages.)
JavaScript goes with everything. :p (Are you getting the hint that you should learn JavaScript yet? ;))

Things I'm surprised aren't listed:
- Python/Django
- Wordpress (goes with PHP. Wikipedia says, "WordPress was used by more than 23.3% of the top 10 million websites as of January 2015.")
- Jquery (looks like that might be covered in JavaScript.)
- Node.JS (that's strangely not covered in JavaScript.)
- Edit: Security. All these things need to be built securely. Hopefully they'll include secure design as a part of every class.

Which of these are most coder-friendly?
I'm not quite sure what you mean by this. Have you done programming before? I guess if I had to pick one it would be Ruby. Followed by C#.
 
Last edited:

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
I'd stick to java, c#, javascript, and design.

Good advice.

We use server-side Java at work for our Amazon EC2 servers (tomcat, etc.), and JavaScript to render the results on clients.

My guess is that learning server-side Java has better long-term value than Java for apps, since JavaScript based web pages will replace many "native" phone apps over time. In the short term both are useful.
 

beginner99

Diamond Member
Jun 2, 2009
5,320
1,768
136
i'd stick to java, c#, javascript, and design. the first 2 will teach you the basics of OOP. then js will teach you how you can start getting into web app stuff. and you want to know how to design things structurally before you can even write code, so design is a necessity. imo, design meetings are of more importance than actual implementation sometime, and a good design can make implementation much easier.

I think with Design they mean UI Design, eg. "Art" and not as in software architecture / design patterns.

CSS is a pain in the ass on the other hand doing a course on it seems superfluous as you won't cover whatever specific issue you will face in the real world. This means you will need to google anyway and learn new tricks. Depends in which direction OP wants to go.

Therefore java, c#, javascript, .Net. As far as I can tell with .Net the Mean ASP.Net MVC eg. server side web development.

I find these courses not so great and rather confusing. Not sure worth it to pay money instead of just learning it by yourself. Also for server side web Java is IMHO much more common. There is also no course on databases...
 
Last edited:

Cogman

Lifer
Sep 19, 2000
10,286
147
106
IMO, these aren't great courses. The benefit of "learn to program x" is somewhat dubious.

For the second level, I would say pick Javascript for sure, that ain't going anywhere and will be useful to learn.

For the second language, I would say C# or Java would be your best bet. It is pretty easy to transition between either language so learning one or the other won't matter mutch.

For the level 3 courses... they all look not great IMO. They are trying to teach you how to use a framework or platform and that just isn't the most useful thing when it comes to programming. Frameworks are really pretty easy to pick up, so why waste the time learning some "probably going away" fad framework?

If I had to pick which ones to look at, I would go for "what will be around for a while and will teach the most new concepts.

For that, I would say look at Android, and .Net.

Now, If you want to actually learn how to program well, I would suggest looking into books and presentations that have wide applicability outside of some language. For example, I'm really liking a bunch of the presentations done by Robert "uncle bob" Martin. Particularly his stuff on clean architecture is really fascinating and good IMO.

Bob also has a couple of books to check out, Clean code and Cleaner code. Both get pretty high marks.

Other things that would be helpful to learning to be a good programmer.

Learn a functional language. For example, erlang, haskell, lisp, ocaml, scala, F#, clojure, etc. Functional language principles will make you a better X programmer IMO. The more you focus on pure functions, immutability, and the data, the cleaner your code will be.

Contribute to an open source project. Really nothing makes you a better programmer than programming with multiple people commenting about the quality of your code. Find a decently active OS project and see what you can do. Even perusing the code and seeing how they are doing it is decently helpful.
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
IMO, these aren't great courses. The benefit of "learn to program x" is somewhat dubious.

I agree. It's popular these days to poop on the traditional CS degree, but this is its strength - generalized knowledge. An average graduate from an average or better school should be able to pick up just about any language/stack with a reasonable amount of ramp up time, and the fundamental CS concepts (algorithms, Big O, design patterns, etc.) apply basically everywhere.

OP, assuming you are doing this with the intention of getting a job, you should start researching the areas where you're interested in working and see what companies in those areas are hiring for. If you don't have a strong desire to do one particular area, do what makes you the most marketable.

Of the options listed:

Ruby/Rails - Has been pretty popular for the last 5 years or so, in part thanks to coding bootcamps and so on. Its star seems to be fading a bit, I think its popularity may drop in the near future but it isn't dying anytime soon.

PHP/Drupal - Not very familiar with Drupal, but I think it's pretty solidly entrenched. Wouldn't be my choice (PHP, ugh).

Java/Android - Android is the most popular smartphone OS by far, so there should be plenty of prospects for it. Java (sans Android) is very popular in the business world, so that's an added bonus. Strong choice.

C#/.NET - The other very popular choice for businesses. C# is very similar to Java (but better, in my biased opinion), and it has a good future because MS is in the middle of a large push to make it cross platform and open source. Another strong choice.

Design - By far the worst choice, IMO, unless you really love that kind of stuff. IME "design" people tend to get paid quite a bit less than "real" programmers, HTML/CSS is very tedious for most people.

The main thing to bear in mind is that change is the only constant in most of the software world. Even if you get a great job with whatever technology you learn, it's almost certain that that job either won't exist or will have changed drastically 10 years from now. The learning never stops, if you want a successful career.
 

sao123

Lifer
May 27, 2002
12,656
207
106
Your choice really depends on whtether you want to be a front end developer, back end developer, or end to end. My team does end to end and here is the complete skillset we need:

Front End:
HTML
CSS / Bootstrap
Javascript/Jquery
C# / ASP.net

Back End
C# / ADO.net
LINQ+EF
TSQL (SQL Server)

But of course there are many competing technologies which can accomplish the same thing. However i feel once you know a complete stack of technologies, its fairly easy to adapt to another stack.

Whether you want to go Webforms or MVC, C# and .Net would be a pretty good set of skills.
 

purbeast0

No Lifer
Sep 13, 2001
53,767
6,646
126
on sao123's note, while i personally prefer front end, having full stack knowledge and how to is a huge benefit in the real world.
 

slugg

Diamond Member
Feb 17, 2002
4,723
80
91
IMO, these aren't great courses. The benefit of "learn to program x" is somewhat dubious.

For the second level, I would say pick Javascript for sure, that ain't going anywhere and will be useful to learn.

For the second language, I would say C# or Java would be your best bet. It is pretty easy to transition between either language so learning one or the other won't matter mutch.

For the level 3 courses... they all look not great IMO. They are trying to teach you how to use a framework or platform and that just isn't the most useful thing when it comes to programming. Frameworks are really pretty easy to pick up, so why waste the time learning some "probably going away" fad framework?

If I had to pick which ones to look at, I would go for "what will be around for a while and will teach the most new concepts.

For that, I would say look at Android, and .Net.

Now, If you want to actually learn how to program well, I would suggest looking into books and presentations that have wide applicability outside of some language. For example, I'm really liking a bunch of the presentations done by Robert "uncle bob" Martin. Particularly his stuff on clean architecture is really fascinating and good IMO.

Bob also has a couple of books to check out, Clean code and Cleaner code. Both get pretty high marks.

Other things that would be helpful to learning to be a good programmer.

Learn a functional language. For example, erlang, haskell, lisp, ocaml, scala, F#, clojure, etc. Functional language principles will make you a better X programmer IMO. The more you focus on pure functions, immutability, and the data, the cleaner your code will be.

Contribute to an open source project. Really nothing makes you a better programmer than programming with multiple people commenting about the quality of your code. Find a decently active OS project and see what you can do. Even perusing the code and seeing how they are doing it is decently helpful.

As usual, I completely agree with Cogman. Why does this happen so much?
 

owensdj

Golden Member
Jul 14, 2000
1,711
6
81
C# is great to learn because it's on the rise with Microsoft actively improving it, and it can be used for both application and web development. HTML5 & CSS3 - C# & ASP.NET - SQL Server is a "full stack" for web development, so I'd say take C#, CSS, and .NET for that plus JavaScript.
 
Last edited:
Sep 29, 2004
18,656
68
91
I customize CAD tools for a living (right now). Learning any one language is pointless. I ire people that know design patterns and understand how hashmaps work.

Anyone can code. Then again, some places need coders. We hir engineers and computer science people.