|
that's just a problem with software development.
contrary to popular belief, we're not engineers, really.
thank the gods we do not build skyscrapers and bridges.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
codewitch honey crisis wrote: we're not engineers, really.
I have not heard this in many years, but it is so true. We are NOT engineers by any stretch of the imagination.
We have the idea of a Software Architect, and that is more fitting to the role, than Engineer, IMHO. 99.9% of us are just plain old boring software developers; programmers if you want to go old school.
|
|
|
|
|
I was a software architect. don't believe the hype. LOL
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I am a software architect, and I don't believe the hype. However, companies like business titles and that is the title I have.
|
|
|
|
|
haha right?
they do love their titles. After Microsoft, I worked for an outfit called Sogeti, and they were basically a software architecture and consulting group.
So there were no "devs" on staff, but a lot of people who used to be devs.
It was a weird environment. I eventually bailed because I didn't like being flown to places to "consult" (read, try to rescue mismanaged projects well after they've deathmarched) and basically being used as a corporate axe because the people that screwed up didn't want to be the ones to do the firing.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I'm a software engineer and I won't ever say I am a "programmer" ever again. There must be structure and some sort of formality to what's built and too many "programmers" lack any of it.
codewitch honey crisis wrote: thank the gods we do not build skyscrapers and bridges.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
You are not an engineer, even if you identify yourself as an engineer.
6 Different Types of Engineering Jobs[^]
also, the definition of engineer does not include "software".
If you design software, than you are a software architect at best, like me. You can have the Software Engineer title, as most companies do that, but don't kid yourself for one second that you are an actual engineer.
Just saying.
|
|
|
|
|
Software does not live in a limbo, it interacts and control physical objects that have safety concerns and timings to be respected; it interacts with other software and software infrastructure. All of that is way beyond the common Software Architect because it needs any knowledge of the problem dominion, may it be mathematical, mechanical, electrical or chemical.
Of course web, UI and desktop applications developers do not need any of it but they are only a small part of the software related industry. ISO 26262 is *not* for programmers, the various aeronautical and aerospatial normatives on software developement are not for for programmers, even the processes that are to be followed are not addressed to programmers. It's engineering plain and simple - having rigorous, predictable and highly testable models way before putting them into instruction sequence is the true core of software engineering.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
If it helps you sleep at night...
|
|
|
|
|
Slacker007 wrote: also, the definition of engineer does not include "software".
There are many, many more types of engineers. I studied computer engineering in college. A 5 year graduation program which is a mix of software, electric and physics.
But there are many more... Environmental, Hydraulics, Materials, Production, etc...
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson
Our heads are round so our thoughts can change direction - Francis Picabia
|
|
|
|
|
Interesting.
So the guy that designs the hardware for a flight simulator is an engineer, but the guy that designs the software that makes it work is not.
1. An Architect focus on aesthetics, including appearance and function.
2. An Engineer oversees the implementation of the architect's plans.
3. A Programmer is someone who can write code. How well depends on experience.
So which of the above are you?
In my experience, most people implementing the code fall into category 3. To ensure quality, they should be overseen by someone who falls into category 2. As for category 1; many people that fall into category 2, also fall into category 1.
You be the judge.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence." - Edsger Dijkstra
"I have never been lost, but I will admit to being confused for several weeks. " - Daniel Boone
|
|
|
|
|
Coding is something of a black art.
And any engineer would scoff at our lack of rigor.
Compared to the hardware guys, our QA is stodgy, at best.
TDD improves this some. And I say that as someone who doesn't do TDD unless forced.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
There are very very few situations in which software must be engineered. Flight control systems, medical monitoring systems, etc.
I laugh whenever someone calls himself a Software Engineer.
|
|
|
|
|
Manifacturing, automotive... I work only on these kinds of software and I don't laugh when I get free ranging coders with no respect for structure.
Besides, software must be maintained. Leave it in the hands of "those who code" and it becomes impossible in the long run, with constant costs for substitution or worse, legacy maintaining.
Coders are slowly dying in the industry, software engineers are much more requested. Being capable of analyzing, detailing and following a process is conductive to realeasing workable software on time and with profit. Software engineering is made of measures, models, previsions, traceability and documentation.
Algorithm developement is not, but it's sadly a niche activity.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
I agree with that, generally, but at least C# gives you the capability to create solid code.
As much as python is great, languages like that, and like BASIC whose grammars are Broken As Designed teach bad habits.
Now, C and C++ are so flexible it's easy to code with bad habits. Very easy.
C# is a nice happy medium. It's flexible enough to be powerful, and to support "real" coding.
It's simple enough to make it easy to have good practices.
I think C# does a better job of fostering good dev habits than C
I think with C you better already have a handle on your habits. And it takes time to get them right.
An example is putting constants before vars in comparisons like
if(0==i) ;// do stuff there
instead of if(i==0)
This kind of thing is important in C to avoid accidental assignment
in C# it's not as big a deal.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
codewitch honey crisis wrote: An example is putting constants before vars in comparisons like
if(0==i) ;// do stuff there
instead of if(i==0)
True, but when you use warning level 4, like I always do, the compiler catches that for you. It didn't always do that though, that's for certain. Not until the concept of lvalues and rvalues came.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
Having to learn pointers in C teaches you how "references" work in C# and Java.
Better and quicker than learning assembly.
Most modern languages run on top of libraries that are coded in C.
I think C is a great learning language to understand memory, variables, call stack, etc.
I would not do any large scale projects in it though.
Knowing C function pointers and the like makes the concept of a class v-table something that you should be able to visualize quite easily. No magic!
|
|
|
|
|
I liked C because it can teach so many fundamentals. When students learn higher-order languages, they should have an appreciation for the magic going on underneath.
Software Zen: delete this;
|
|
|
|
|
The answer entirely depends on whether the purpose of learning is for the academic reasons; or for understanding how computer works, or whether you are looking for a job.
I have a personal choice of going toward C# for professional stuff, this language has really proven to be a game changer in every way. You can use the same language to write simple console programs, web applications, microservices, machine learning, games, mobile apps, cloud-native apps, what not. This was the first language I learnt, and it really gives a lot of power and support for the programmer, while abstracting away the unnecessary stuff—*coughs* InputStreamReader *coughs*.
For academic reasons, I might recommend JavaScript—hold on, hold on—as most of the times, the concepts are recursive. For example, a hello world in C is,
#include <stdio.h>
int main() {
printf("Hello world!\n");
} What does that include do? What does it mean to have an int with main. Now this point leads to a very serious problem with today's educational system, and that is, most of the times teachers would leave the int out and write it with void. Woah, hold on. That causes the students to think that it is okay to ignore the standards and write the code that compiles.
There are several issues with JavaScript, but at least it is better than Python, in terms of familiarity with other languages like C, C++ or JavaScript. If not JavaScript, then go for C++ or C.
But hey, either them C or C++. Do not involve pointer to structure, that uses a reference type based on a macro. Just don't do that!
Feel free to disagree, and enlighten me, please.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
modified 1-Apr-19 1:40am.
|
|
|
|
|
Afzaal Ahmad Zeeshan wrote: The answer entirely depends on whether the purpose of learning is for the academic reasons; or for understanding how computer works, or whether you are looking for a job.
The first thing to determine is whether or not the student has the aptitude for the kind of critical thinking which is required.
That's why you start with an easy language and then work up to the more useful languages.
Just as a pilot will learn on something like a Cessna even if he dreams of flying 747s.
|
|
|
|
|
C is at least a third language. You need to learn an easy (safe) language first.
When I learned, it was: BASIC, Pascal, (COBOL, FORTRAN)*, C...
I think Python is currently the language best suited to be a first language, but even it is too modern. (Then move on to better languages.)
* Didn't really learn these, but I was able to complete the homework unassisted and with no Internet.
|
|
|
|
|
C is the first choice when coding for some embedded hardware or high perfomance computing.
I love the power of C to pick one's nose in memory
Press F1 for help or google it.
Greetings from Germany
|
|
|
|
|
Yes, but not to learn first.
|
|
|
|
|
I started with C and I'm glad that I did, I think that it gives you a real feel of what's going on inside the box.
Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain
|
|
|
|
|