Archived

This topic is now archived and is closed to further replies.

What do programmers today need to know

This topic is 5577 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

What are the three biggest ''areas'' programmers today need to know. C++ and some API for developing on their platform seems like the biggest requirement. But what about other things, such as Java and scripting languages and what not. And yes I know it depends on the programmer''s job, I am talking about in general.

Share this post


Link to post
Share on other sites
Well, in general - to qualify as a programmer - you should definitly have:

* Knowledge and experience in at least two, better three, langauges of different origins. I WOULD qualify C++ and C#/Java here as two - because they are so different in their core paradigms (garbage collection, mainly). With just one language, it is truly a bad programmer.
* SQL - not a lot, but I would expect every developer to have worked with databases during his educational phase. Not necessarily a pro, but he has to know how to make basic stuff.
* Standard Algorithms and Patterns. Any developer not knowing what a quicksort is or what a facade or factory pattern are - is not worth the money.

Thats basically it for junior developers. Needs to be smart and grasp API''s fast, sure. He should also know his limits - and be willing to fall back onto other people when hitting them. Not necessarily because he is bad, but show me one developer who is a graphics guru :-)


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
I''d disagree with the first 2 of those, thona.

I know several languages, but I don''t think that makes me a better programmer than someone who knows one. If anything it clouds my judgement about what is the best solution when solving a problem in a specific language.

I''d also say knowing SQL (which I do) is completely irrelevant. Why would this make you a better programmer? I''d say it''s one of those things that you can learn when you need to. Games don''t use SQL very often.

Knowledge of standard algorithms and design patterns, as you say, is an absolute must.


Helpful links:
How To Ask Questions The Smart Way | Google can help with your question | Search MSDN for help with standard C or Windows functions

Share this post


Link to post
Share on other sites
quote:
Original post by siaspete
I know several languages, but I don''t think that makes me a better programmer than someone who knows one.

It gives you a wider perspective on how to approach problem solving.
quote:

I''d also say knowing SQL (which I do) is completely irrelevant. Why would this make you a better programmer?

Personally, I think this could be folded into thona''s first point: to know languages which do things differently. A declarative language such as SQL gives a different perspective to a procedural or OO language. Knowledge of several different paradigms can be very handy.
quote:

Knowledge of standard algorithms and design patterns, as you say, is an absolute must.

Oh yes.

Share this post


Link to post
Share on other sites
Thanks for the defense.

In particular, I would say that C++ and Java stand pretty much on different sides - weak runtie against strong runtime, in terms of function size, but also in term of features (like garbage collection). (Java being replacable with C#, btw.) Knowing diversity helps you - otherwise the "programmer" becomes a "C++ programmer" - or a "VB Programmer". In the extrreme unable and slow to get used to another language and to learn. Diversity rules.

For SQL, that is as far off procedural/oo languages as you can get. Declarative, handling data (and not primarily functionality), with concepts such as thread serialisation built into it''s core (through locks). And show me one programmer that never has to use a database in his whole career? It is definitly an exerience - and experiecne and common sense are what programmers needs primarily.

I know most people argue this - on the other hand, 75% of the programemrs available out there are not wirth their money :-)


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
I think diversity is a good thing. As far as I know C++ and Java are two things that most programmers should know. I think databasing is something that programmers should know. I mean databases are used for everything, including games, right? I don''t know if something like Visual Basic is a must-know. Can the .NET languages be used on other platforms? Visual Basic 6.0 doesn''t seem as important to know as C++ because VB is only for Windows, but C++ is a language and of course can be used on any platform. That is why I always say Visual Basic is barely a language.

Share this post


Link to post
Share on other sites
Regarding algorithms and design patterns: what books/resources would you recommend as a good reference for those algorithms that every programmer should know? I think most people have heard of Knuth''s classic, ''The Art of Computer Programming'', but does anyone have other suggestions that they feel are more relevant/modern/concise/cheap/whatever?

Share this post


Link to post
Share on other sites
quote:

How about showing dedication and raw determination? That about covers it all.



Showing dedication and raw determination gets you fired if it is coupled with incompetence.

See, if I hire you as a programmer, I assume you can program. Means: you learn languages fast etc. etc. etc. You get paid for this.

If you dont know your basics, and are dedicated and determined, that gets you out of the door.

Why?

Because you still have a contract as programmer. And cant fill out the job.



Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
Well, still it is not something to "kno" - thats a habit, and as such it is off topic.

Surely I seek out developers with dedication. Well, you can hire whoever you want. When group dynamics are in place (good onces), the non-dedicated or incompetent people are rejected by the team within days :-)


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
Nope, sorry, not good enough.

While definitly above developer average, this is not a graphics guru - while you can argue that the screen looks good, the graphics on the screen are partially "work in progrss" - to a terrific degree.

Better than most things shown here, but not graphics guru quality. Compare this with for example DungenoSiege or Imperium Galactica 3 - then you see what I mean.


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
Well, I severely doubt - sorry.

I am in development for around 14 years now, and never haveseen a good graphics guy being a good programmer at the same time.

I would love to be prooven different, I just doubt.


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
quote:
Original post by thona
In particular, I would say that C++ and Java stand pretty much on different sides - weak runtie against strong runtime, in terms of function size, but also in term of features (like garbage collection). (Java being replacable with C#, btw.) Knowing diversity helps you - otherwise the "programmer" becomes a "C++ programmer" - or a "VB Programmer". In the extrreme unable and slow to get used to another language and to learn. Diversity rules.




Yes, diversity is good. But Java and C++ are not that different based on "runtime facilities" only. You can use a gc in C++ (the Boehm-Demers-Weiser conservative gc comes to mind), and even more "runtime" facilities provided by Java can be added. The biggest differences are in the "paradigms" supported: Java is OO only, C++ is multi-paradigm, and this brings a great difference, specially if you take a look at generic & template metaprogramming.

To be exposed to really different languages you have to look elsewhere. Functional programming languages, pure or otherwise (LISP/Scheme, the ML family, Haskell) and logical languages (Prolog, Mercury) are very far from Java and C++, and they provide a good opportunity to think about programming in different ways. It is common to see experienced imperative programmers not knowing how to do the most basic things in a functional language.

And while we're at it, I consider to be useful to every programmer to know at least basic notions about formal languages, automatons, and compiling/code generation techniques. After all, programming is all about automating tasks and creating simpler languages for users to program.


[edited by - ktulu on September 2, 2002 11:41:38 AM]

Share this post


Link to post
Share on other sites
quote:

Surely I seek out developers with dedication. Well, you can hire whoever you want. When group dynamics are in place (good onces), the non-dedicated or incompetent people are rejected by the team within days :-)



How difficult is it to get experience? I mean you cannot really know how to do your job unless you get experience doing it for a certain company. So until then you are technically incompetent until you can learn. But if you are rejected for always being incompetent, how will you ever gain experience? I want to someday work for a development team, but I still need to go through college for a bazillion years, and even then I know I will still need to get on the job training because college doesn''t really seem to help with anything.

Share this post


Link to post
Share on other sites
quote:
Original post by Shadow1234567890
How difficult is it to get experience? I mean you cannot really know how to do your job unless you get experience doing it for a certain company. So until then you are technically incompetent until you can learn.

I fail to see how not having a job prevents you from learning about programming.

Share this post


Link to post
Share on other sites
well I guess I meant experience peculiar to that type of job, or working in a group. If you have bad communication skills or something, you may seem incompetent and get fired, but you cannot build your communication skills if you get fired, and may always seem incompetent. What I am saying is there still needs to be some on-the-job training instead of just knowing a language.

uhh...derr...uff...

Share this post


Link to post
Share on other sites
quote:
Original post by Shadow1234567890
If you have bad communication skills or something, you may seem incompetent and get fired

Actually, this is a good point. When you asked what are the biggest three areas, communication should definitely be one of them. Large software projects often take shape according to the structure and interactions of the team that develop it (this is a well-known organisational pattern). Anyone who has bad communication skills *is* incompetent, and *should* get fired.
quote:

but you cannot build your communication skills if you get fired, and may always seem incompetent.

You can build communication skills outside the context of a paying job. Any social scenario requires communication ability. If you have zip communcation skill, then chances are that you are not cut out for a job as a software developer.

Share this post


Link to post
Share on other sites
quote:
Original post by thona

Showing dedication and raw determination gets you fired if it is coupled with incompetence.

See, if I hire you as a programmer, I assume you can program. Means: you learn languages fast etc. etc. etc. You get paid for this.

If you dont know your basics, and are dedicated and determined, that gets you out of the door.

Why?

Because you still have a contract as programmer. And cant fill out the job.



Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)


Incompetence is usually coupled with complacency. If you feel you have achieved your goals then you are likely to not try so hard.

I beginning to feel like the Dalai Lama, or Yoda! :D




Peace out,
Mathematix.

[edited by - mathematix on September 2, 2002 4:03:29 PM]

[edited by - mathematix on September 2, 2002 4:04:34 PM]

Share this post


Link to post
Share on other sites
- Programmers must need to know how to gain administrator rights and how long it takes to do a (full re-)build on his own workstation.

- Programmers that ''know'' how to just use COM/OLE but don''t know how to create a dynamic two-dimentional array aren''t basically that good.

- Experienced programmers could roughly tell out your monitor refresh rate whether is 60Hz or not.

... I could go on the list forever...

ahem... the main things are: foundation, algorithms, communications, and some personal experiences.

Share this post


Link to post
Share on other sites