Experts in Computer Science

pauledwardian
pauledwardian used Ask the Experts™
on
Dear CS Experts;

I am a junior in CS and have one more year left for graduation.
I want to know what expertise do I need to learn along with my degree to be a REALLY REALLY good developer. Do I need to minor in a different degree OR do I need to work on more programming languages OR Do I need to get some Microsoft certificates like MCPD, etc?

I DO NOT enjoy working with low level languages such as C, C++, Prolog, VHCL, etc..
But, I am OK with Java and JavaScript. The only low level language I might enjoy would be Objective C because of creating iPhone app.

The programming languages that I REALLY like are C# (Definitely. I LOVE C#) , SQL, VB.net, VBA, PHP(But I still rather ASP over PHP) , html, CSS (I am OK with css its not really a language but I just want to mentioned the languages I know)

So, what would you suggest?

Paul
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
ramromconsultant

Commented:
What is VHCL? A google search did not help!

Have you looked ay Python?


"REALLY REALLY good developer" what do you want to develop? (there are many possibilities)

Author

Commented:
I'm sorry I meant VHDL.
I would like to program any high level language that would have the best job opportunities in future and income level.
I also asked if it would help if I do a minor in a different degree or Do I need to get some Microsoft certificates like MCPD, etc?
kaufmedGlanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015
Commented:
Certifications don't make you a good developer--they are supposed to show what you "know", but I have known people who have crammed the night before and passed the exam the next day.

Being that you have a degree in CS, you should have a solid understanding of programming fundamentals. In my opinion, this is far more important than knowing any particular language. Since you studied CS, you know what the machine is doing whenever you write code. You also know what it takes for any particular language to actually be a programming language (thing Turing-complete and the like). If you know the fundamentals of programming, then you can adapt to any language which you are required to learn.

At the school I attended, CS and Software Engineering were separate disciplines. If you did not have any SE classes, then you might want to glance over some of the topics the program covers. I, unfortunately don't know what those are. In addition, you may want to get a decent understanding of various design patterns.

I believe ultimately a degree (and maybe some certifications) gets you in the door when you don't have any experience. Experience is what will give you better opportunities as you progress through your career path.
11/26 Forrester Webinar: Savings for Enterprise

How can your organization benefit from savings just by replacing your legacy backup solutions with Acronis' #CyberProtection? Join Forrester's Joe Branca and Ryan Davis from Acronis live as they explain how you can too.

kaufmedGlanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015

Commented:
P.S.

WRT "certification don't make you a good developer," I'm sure it depends on the certification and the organization providing the cert. My comment is based on what I witnessed from a coworker.
greetings  pauledwardian, , I have developed in several coding languages, and for different monetary objectives (as in, Database efficiency, Special Graphical Windows GUI, Web Site Coronation (MVC) ). . . And to me your question seems much too general for any kind of answer for a student.  You really should consider narrowing down your development direction, as in specific types of executable,  or some type of database SQL specialization, or web site development or composite functioning, which would then have suggestions for what to study.
I might advise to get a better functional understanding of C - C++ language and usage, this has given me some advantage in switching from one environment to another, since many of the languages are based on C -C++ in there syntax and formations i.e. logical attributes.

Here is the advice I have told some younger developer, go with the current technology's, there is less and less demand for "Old Stuff". So learn Android development or other emerging techs.
Really really good developers are the ones who realize that you haven't finished writing code until you have written unit tests. exception is CSS because you can't write unit tests for CSS.

Learn about design patterns.
Read a book on algorithms.
Know your *nix command line.
Document your code.
Write unit tests.
Write unit tests.

Author

Commented:
Ok here is the question in details:
Among the Web development, Database Development, Phone Application development and Regular windows app development (With C#)

Which one you guys think would be the most demanding field to get in future and how can I improve myself in that area?
anarki_jimbelSenior Developer

Commented:
Unit test are useful but I don't want to exaggerate :)

patterns - good advice.

I'd say understanding of Microsoft Intermediate Language (MSIL) would help.
Also good understanding of memory issues in .Net. read:
http://www.reflector.net/2012/03/grab-free-copy-%E2%80%9Cunder-hood-net-memory-management%E2%80%9D/
kaufmedGlanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015
Commented:
Instead of "Phone" I think you would be safer saying "Mobile." Both that and Web development are hot right now--the former more so than the latter, I think. Database development goes hand-in-hand with all three, depending on what kind of app you are writing.

You have to ask yourself:  "What kind of development do I enjoy?" If you are into writing games, then database development isn't going to be as large a requirement (perhaps not even a requirement) than it would be if you were writing business applications. If you enjoy web design/development, then just about everyone wants some kind of "cyber-presence," so you won't run out of clients any time soon. Mobile development is still rather young, so there is much room to grow. Desktop applications aren't dead, but they aren't really in their hay day either.
anarki_jimbelSenior Developer

Commented:
I have a feeling Win forms will be in no much demand in the future :)

But this does not matter.
Recommendations from kaufmed and others are common. And remember - you won't be working in one field, probably. And languages are changing, and hardware. So  - just try to understand what's going on under the surface, whatever you do.
kaufmedGlanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015

Commented:
The thing to worry about with mobile development is that there are at least 3 popular platforms right now--each with its own distinct programming environment. If you develop for Apple, then you have to be cognizant of Apple's restrictions on what it allows developers to push to the store*. Android is a bit less restrictive on its devs, but who knows what may happen if Oracle wins its suit against Google. Windows Phone might be easier for you to digest since you can write your apps using .NET.

Now what you should be worried about with these different environments is that if you decide to write an application for one, do you plan to port it to the other two? That's three skill sets you'll need to be versatile in. On top of that, with Android there are multiple versions of the OS. Don't quote me on this, but it seems like devs are having to keep up with the changes in the various versions more often than with the others**. I'm certainly not trying to dissuade you from learning all of these, but I just want you to be aware of this "hurdle."

* I haven't developed any Apple software, and I am just going by what I have read.

** Yes, this occurs with any OS, but it seems (to me) to be more frequent with Android.
It's really difficult for me to have-share any opinions about your "most demanding field", not really sure I understand your reference about "demanding", , maybe about what has the best financial rewards? Development is a tricky buisness to be in, at least that my experience.
I learned so much by looking at the code work of others that did difficult jobs in an efficient manner.

As To my view, , most of my development now is what I call "Modular" or using sections of Code that others have developed and tested and I use for their tested functionality, probably anything you do will NOT be a small and simple, so using tested and functioning code from other sources in a modular, many "pieces" design save time and effort. Possibly you have heard of things like Jquery and mootools you include and use with other pre-developed components. So it pays to be able to understand composite functioning between the many components that may be in use.

There is always a demand for excellent business Database developers, but it may get to be repetitive and UN-rewarding (boring), I had to leave Database devel or go crazy.
Dave BaldwinFixer of Problems
Most Valuable Expert 2014

Commented:
As a mid-level independent web developer, I have had to use HTML, CSS, javascript, ASP, PHP, MySQL, MS SQL, and Microsoft Access databases, Adobe Photoshop, Paint Shop Pro, and Corel Draw graphics programs.  I have also had to use and understand IIS and Apache Web servers, email configurations and formatting, and FTP clients and servers.  I usually use at least half of those things on every project though not always the same half.  I haven't really needed or gotten into the .NET technologies or mobile platforms on my projects.

Rarely do I ever see a project that only requires one thing.  It is normal to need to make many things work together even if you aren't directly responsible for some of them.
@basicinstinct

Really really good developers are the ones who realize that you haven't finished writing code until you have written unit tests. exception is CSS because you can't write unit tests for CSS.

Learn about design patterns.
Read a book on algorithms.
Know your *nix command line.
Document your code.
Write unit tests.
Write unit tests.

Unless you do Test Driven Development, in which case you will have lots (if not all) of your unit tests written before you write a single line of code proper! :)

For me, I went into development with the likes of C++ / VB6, and then jumped to C# & SQL as a primary (I have skills in many other languages those are the main!).  

The best advice I can give you is to pick something that you like, that you enjoy doing, because if you go down a path simply because of the money & do something you don't enjoy then you will be very miserable.    I'd rather be happy and well paid, than rich and miserable.

Author

Commented:
Based on the above sugesstions I get that I need to pick an area wheather web development, database development, windows development, etc and try to be best in that area and alwasys have a solid knowledge of differant programming languages syntax and learn more about the algorithm and design.
I say, as good way as any to learn programming is, roll up your sleeves, write some code and, providing the program works well for you, hand it out to 20 idiots and monitor their use. The beauty of this method is that it quickly identifies WHAT can go wrong with your program when you write crap code. Then, fix the bugs and let each fix be a notch in your learning curve.

As a simple example, I still see experienced programmers write code along these lines:
    set age=0
    input age
    if age < 16 then display "You are under age"

Open in new window

While the programmer was mindful to start by initialising the variable 'age', he hasn't accounted for the possibility a user might enter something like '23.5' or 'twenty' or even utter rubbish like '$$%$£'...

You might be excused for thinking some of Microsoft's software engineers learned to program this way - judging the volume of bug fixes so soon after each new release of their systems software.

'Hands-on' is the answer to your question.
Top Expert 2011
Commented:
pauledwardian,

You stated:
I want to know what expertise do I need to learn along with my degree to be a REALLY REALLY good developer.

Every Employer/Client has a different opinion on what is considered good developer and REALLY good developer.

As an employer of programmers  I look for ones that have the skills that I consider make a really good developer.  

What I recommend is that get a job or internship for companies that  do you would want to work for.  This will get you some real world experience and a better understanding of t what you make you more desirable. I would also talk to prospective employers. Tell the you want o be sure you are well trained. Ask them what would help make you more employable when you graduate.

In the end, the only opinion on what makes a REALLY good developer  that matter is that of the people who can say yes to hiring you.  I would seek their advice.
Okay, I'm gonna give this another stab...

What area of programming do you see yourself enjoying? What type of programs or applications would you like to write. And what technologies would you like to target?

Only once you define what it is you want to do, can we advise you on the right tools for the job!

Does that make any sense?...

Author

Commented:
Great Question.
I enjoy writing C# applications (either Asp or windows apps) and also like to learn more about SQL.
I would also see myself wring Android apps (with new way that C# is used for the mono droid) or iPhone apps (by using embedded C)
Those are my favorite areas.

So,  what would you guys advice me to do?

Paul
kaufmedGlanced up at my screen and thought I had coded the Matrix...  Turns out, I just fell asleep on the keyboard.
Most Valuable Expert 2011
Top Expert 2015

Commented:
or iPhone apps (by using embedded C)
I can't say that I've used it myself, but you might be interested in MonoTouch.
You didn't say what type of programs you want to write ie, database related, games, GUI apps (running in a GUI environment), real-time control programs etc

And it would really whittle it down if you could name your audiance too... software for schools/colleges/teaching/learning environements, medical, scientific, general public, retail, military, motor industry, gaming community etc

Examples:

I want to write database programs, managing medical resources or processing medical records for hospitals and healthcare professionals.

I want to write artificial intelligence systems to control robots or guide missiles or pilot aircrafts or control CNC devices.

I want to write games.

I want to write educational packages for tutors / students delivering teaching aids.

I want to write the next hottest word processing and spreadsheet packages - in 3D !!

I'd like to write software to manage outerspace real-estate and satellite tracking.

I'd like to develop a peer-2-peer program for mobile telephones which works at the firmware level and enables existing mobile telephones to 'talk' to each other without needing to insert SIM cards and is able to route calls and text messages themselves. This would enable totally FREE and unregulated mobile communication.

(Oops! I've planted the seed... Let's watch that one grow...)

I want to process global weather and other environmental patterns so that...

I'd like to develop my own computer language that has only 10 commands but can do a million things.

The possibilities are limitless...

Or you could specify your area of interest... medical, space, database, education, construction, bio-chemical, music, film, astrology etc...
Hey, I'll add my two cents,  professional programming these days is much expanded from just a few years ago. There are code required for computers, servers, business data entry-retrieval, video games, smart phones, tablets, factory robotics, and now for televisions (and many others). So just saying you like C# is a starting point, but as a student you may not be able to have much of a view of the roll and tumble, undefined luck, who you know- not what you know aspects of working in development.

As a student, please consider looking into and learning some more about "Apple- Mac" programming (Cocoa) and it's differences from windows programming. Some have told me that the apple dudes are better at human-computer interaction innovation, and their programming styling is better, I can not say this, as I did not ever do much at all in apple land, , But when I recommended android, I should have said Mobil, to include iPhone - iPad, but I rarely deal with anyone doing the apple thing.

Please consider taking a class or learning about connectivity security in development, since most these days have concerns about security and data protection. I have tried to have some beginner programmers to do (or be aware) of security, but they were so empty-bucket stupid about this, that they called a Hash an Encryption.

You may have trouble as a student, narrowing down what to study, just keep lookin around and being curious, and something will grab you and carry you off, maybe you'll start playing the drums. LOL

Author

Commented:
Thank you all!

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial