Solved

Code Jockey vs Software Engineer

Posted on 2001-06-04
7
145 Views
Last Modified: 2010-04-06
My question has many parts, but they all tie into a common theme:

What are the distinctions between:

1)  Software Developer
2)  Software Engineer
3)  Systems Analyst
4)  Programmer
etc. etc. etc.

What are the distinct differences between someone who writes code all day vs someone who designs a software system at a high level?

What I'm getting at is the difference between someone who is a "Techie" vs an "Engineer"  -- a "Techie" can mechanically write the source code, but he is only implementing the design that someone else thought up - that someone else being the "Engineer"

I aspire to be the "Engineer" but I fear that I am really only a "Techie" at this point in my career.

I have 6 years of IT experience.  I am working on a degree, but it is 2 years away.

I know how to program in Delphi, but I feel like I am missing that certain something that would distinguish me from someone who writes code to someone who designs code.

Do I need to think a certain way?  Be a better problem solver?  Look at things differently?

Thanks,

Tom
0
Comment
Question by:knowlton
7 Comments
 
LVL 11

Expert Comment

by:robert_marquardt
ID: 6155007
Software design means that you can show that you successfully managed to create a working product.
That is yo were able to define what the program should do and that bears resemblance to usefulness :-)

There is only one way to learn that. Do it.
There are many jobs in it which have nothing to do with programming. GUI design, Telling others what to do, keeping a budget, tell the customer politely what he really wants etc etc.
0
 
LVL 14

Expert Comment

by:DragonSlayer
ID: 6155240
to get a 'feel' of how people design, maintain and manage software, try joining some some opensource projects.

Project JEDI, http://www.delphi-jedi.org/
Delphree, http://delphree.clexpert.com/pages/default.htm
SourceForge, http://www.sourceforge.net/

Join in, be a part of the team of some projects that are going on... or if you want to be there from the beginning, look out for project postings in SourceForge that are in initial stage and are awaiting further input from other developers.



DragonSlayer.
0
 
LVL 11

Expert Comment

by:robert_marquardt
ID: 6155321
Thanks DragonSlayer for mentioning Project JEDI :-)

Robert Marquardt
Director of JEDI
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Expert Comment

by:mike_tipping
ID: 6155337
If you want a reasonable read get Code Coplete, its an MS book but prety good. It goes into who should o what in software dev lifecycle and what a coder should realy be doing.

As I see it the differences are

4)  Programmer
Codes and that's it. Someone tells them to write this in this way using this algoithm and it;s their job to do it.

1)  Software Developer
What the programer actualy ends up doing, ie everything. Conceives plan, implelents plan, tests code...

2)  Software Engineer
More andvanced programmer. Knows lots of languages, does tinkering under the bonnet and gets paid lots

3)  Systems Analyst
The person who does the conceiving for the programmer


0
 
LVL 17

Expert Comment

by:geobul
ID: 6155374
Hi Tom,
The systems analyst, working with the client, understands his needs and transfers them to a project. The analyst creates three basic specifications:
- functional: which describes what the project will do  (very important here is to mention that this part doesn't tell us how it will be done)
- informational: which describes the information flow (what kind of data the project has for input, how this info will be processed - algorithms, and what will be the results of processing - output data). At this stage takes part the database design (if there is a database at all) and all the manipulations to the database based on the information flow.
- program specification: dividing the project into a set of relatively small modules (pieces of code), everyone with its input, processing algorithm and output (result). These modules are further given to the programmers for practical realisation (coding). Combining already prepared and tested modules together creates a working project.

It is good idea to have interface designer involved to the project too, whos responsibilities include designing of the client interface (forms layout, etc) to produce one style looking product.

Basically, when speaking about a huge project, there is no need programmers to know it in deep, because everyone of them has a piece of program specification to code.

The technology, described above may vary (or be completely different) depending on the project, the quantity (and quality) of the project participants, the boss, the terms etc.

Regards, Geo
0
 
LVL 5

Author Comment

by:knowlton
ID: 6156376
geobul:

I like your answer best.  Can you go into "Techie" vs "Engineer" a little more in depth?
0
 
LVL 17

Accepted Solution

by:
geobul earned 100 total points
ID: 6156970
Thanks.

Well, in my opinion, every one task which has to be completed during the realization of a project, requires at first its own theoretical background (basis). And it is normal - if you  have to do something, you better look how other people do similar things first. It is somethimes called methodology. The basic methodoligies are usually parts of the computer science which is taught at the university, like:
- dividing a job into subjobs, these subjobs into functions which are clear and simple (and basically do only one thing);
- relational databases theory - how, from a given detailed text description of a problem, to define objects (tables), their attributes (fields), relations between the objects, etc.;
- levels of user interface (from one single empty box with a blinking cursor without anything around it, to ... (perhaps there is no end here, but extremely large amount of redundant information could be boring too);
- algorithms background - evaluating the number of the steps for completing an algorithm is very important here. Otherwise you can write a good-looking way of doing something which will end next year for a bit larger amount of data than you have tested it.;
- object-oriented programming - what the objects are and when they are applicable, how to design and use them, etc.;
- testing - how to create a complete and small enough set of test examples;
- team working;
- etc.

These and many other things will be improved when you get more experience but don't worry - we all had no experience when we started. These things can be learnt (or read from books). When you are ordered a task and you know the right way of doing it - success is yours.

And finally, excuse my English, I'm not sure if I expressed myself clear enough.

Regards, Geo
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now