
It frustrates me to have people ask me what I perceive as the most basic of questions when they have a problem. Take for example compiling a C program. I have had countless encounters with engineers who have come out of college who seemingly have forgotten their C/C++ training in school (it's a required language to learn in all engineering colleges). They will compile some C code and get an error like:
error: undeclared variable: count
Now for those who don't know C, you have to declare any variable you use in C and tell it what type it is. Is it an integer, a floating-point-number, or even a string of characters. This is the MOST basic of error messages and it practically tells you what is wrong. Yet I get countless calls from engineers (I now like to call Jetson-eers), who need help understanding these basic problems. (note: I have NEVER taken a C class in my life and have become proficient in it by learning it on my own)
Another example just happened as I was writing this blog. A Jetson-eer instant-messaged (IM) me to help with a problem. A program was aborting (exiting from an error) and giving a error message
#0 0x00002aaaab4ddd90 in strlen () from /lib64/libc.so.6
#1 0x00002aaaab4afdb0 in vfprintf () from /lib64/libc.so.6
#2 0x00002aaaab4b5458 in fprintf () from /lib64/libc.so.6
#3 0x00000000006dbd6e in dpi_IdiPcuRegisterAccess (rxwb=1 '\001',
address=0x7ffffffdd4a0, beb=0x7ffffffdd490, wdata=0x7ffffffdd480,
rdata=0x153f008, rdecode=0x7ffffffdd470)
at /nfs/fm/disks/fm_cnlgt_00431/sle.gen10/pipegt.DISK6/src/units/pcu_bfm/pcu_bfm.cpp:3112
#4 0x000000000095d09e in bhv__CheckCallerFunctions ()
at tbx.dir/c_files/tbxbindings_cview.cxx:68557
this is the path to the
model
Looking at the file it references (it even tells you what line to look at. line# 3112)
if (fp != NULL) {
fprintf(fp,"TIME=%12llu ns: %s addr=0x%08x rdecode=%d, beb=%x wdata=%08x rdata=%08x_%08x\n",
GetTime(), address[0], rdecode[0], beb[0], wdata[0], rdata[1], rdata[0]);
fflush(fp);
}
The problem area I have highlighted and put in bold font. The fprintf function wants a "string" argument printed, but none of the arguments given is a string variable (granted the C compiler should have thrown a flag but it didn't). This problem took me under 20 seconds to figure out and yet it seems I am the only one who can do this.
I think we are training engineers to just do repetitive tasks and not to think anymore. When I first started at this company I was:
- building models
- synthesizing designs
- fixing design problems
- writing programs and scripts
- designing test boards (designed 3 in 1 year)
- developing bus functional models
- finding ways to run hardware at slow speeds (I do hardware emulation)
- finding ways to interface TTL logic to non-TTL logic devices
- modifying BIOS assembly language code
- helping debug problems
- plan new projects
But today, most engineers I see would only have 1 or 2 things to list for their years accomplishments and that seems fine to many managers. They are happy I guess that all they have are well trained monkeys to press their computer buttons (hopefully in the right order) to get their jobs done rather than forward thinking engineers developing new innovations to advance the field.
It is this reason that I agree with most educators that our current system of computerized testing is negatively influencing our next generation of thinkers. We need our schools to get back to teaching our kids HOW to think and not WHAT to think. Common-Core only takes our current system and puts it on steroids with even more testing and even less thinking involved which if it does unchecked will only result in more ....
Jetson-eers