[sf-lug] [new-sfwow] (jobs) This is interesting....
thomas.dizoglio at eride.com
Wed Apr 12 11:54:59 PDT 2006
> A typical job listing these days wants someone who is an expert
> systems programmer in Windows, Linux, Java, C++ along with other
> stuff. They don't understand that no self-respecting Java developer
> would be caught dead coding in C++ (and vice-versa). Ditto for Windows
> and Linux. If you are porting an app from Windows to Linux, it is
> way better to just write it from scratch.
Today you need to know C++ and Java as a Software Engineer. Both have strengths in various parts of software development. For example, coding a server-side application that needs to handle a lot of user requests or integrated into a application server is best done in Java. This is because of all the great classes it provides for memory management, threading, ability to run on multiple platforms and network protocol handling (UDP/TCP up to HTTP). It takes very little Java code to write a robust server-side application where as for C++ the same would take 4 times as much code and a lot more knowledge of low level network protocols (assuming not using Microsoft system DLL's). Now C++ has Java beat for writing client side GUI Windows or Linux applications. Using Java and SWING for a client application on either platform will build a application that is 4 times the size of a C++ executable, runs a lot slower and you can't take advantage of the host OS's full GUI and system routine capabilities. Also, if you code on Windows using C++ and Microsoft's libraries (MFC, ATL, STL, etc.) it is pretty close to Java's runtime classes in capabilites. So knowing Java can be helpful and decrease you coding time writing a Windows C++ application. For example, you understand Serializing an object to write to file or send over the network. This was first done in Java and the feature is very useful so was added to MFC. So knowing both languages can make you a better object oriented programmer and write better code. This is why from a Software Engineering job perspective it is very important to know about both languages and being able to know when to use the correct one for the problem you are trying to solve.
As for Windows/Linux coding, knowing both is important, but not as much as knowing Java/C++. For example if I wanted to run a server for email, website hosting, etc. I would use Linux. If I wanted to code a 3D multi-player game I would code on Windows using DirectX or OpenGL (for portablity). Knowing both these systems as a Software Engineer is good and will give you a much broader appeal for companies to hire you. I find this more true at the embedded level of programming where Windows (CE, XP) and Linux compete more because at this level both provide the same abilities and tools. So if you provide embedded hardware to OEM's it usually needs to run both systems. When coding GUI executables the systems are different enough, but you should still share most code (> 80%) if you are writing a cross-platform application and coding in C++ using true object oriented design(Java should require no code changes using SWING or AWT). If you need to write code from scratch when porting an application then the application was initially designed wrong (original coder told not to design for multiple platforms to save $$ on coding bill) or the Software Engineer doesn't know how to code or do his job properly. This is also why know multiple systems (Windows/Linux/Solaris/MacOS) helps you out as a Software Engineer because when designing an object oriented application you will create your class hierarchy properly to separate core code from platform specific code. this is always important because porting an application can happen even on Windows. Going from Windows XP to Vista will be a port.
This is just my 2 cents from a Senior Software Engineer's perspective.
vincent polite wrote:
> I thought this was an interesting little article from monster.com.
> What do you guys think?
> sf-lug mailing list
> sf-lug at linuxmafia.com
> __________ NOD32 1.1485 (20060412) Information __________
> This message was checked by NOD32 antivirus system.
CONFIDENTIALITY NOTICE: Proprietary/Confidential Information belonging to eRide, Inc. may be contained in this message. If you are not a recipient indicated or intended in this message (or responsible for delivery of this message to such person), or you think for any reason that this message may have been addressed to you in error, you may not use or copy or deliver this message (and all attachments) to anyone else. In such case, you should destroy this message (and all attached documents) and are asked to notify the sender by reply email.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the sf-lug