Ask Slashdot: How To Teach Generic Engineers Coding, Networking, and Computing?
davegravy writes: I work at a small but quickly growing acoustic consulting engineering firm, consisting of a mix of mechanical, electrical, civil, and other engineering backgrounds. When I joined almost 10 years ago I was in good company with peers who were very computer literate -- able to develop their own complex excel macros, be their own IT tech support, diagnose issues communicating with or operating instrumentation, and generally dive into any technology-related problem to help themselves. In 2017, these skills and tendencies are more essential than they were 10 years ago; our instruments run on modern OS's and are network/internet-capable, the heavy data processing and analysis we need to do is python-based (SciPy, NumPy) and runs on AWS EC2 instances, and some projects require engineers to interface various data-acquisition hardware and software together in unique ways. The younger generation, while bright in their respective engineering disciplines, seems to rely on senior staff to a concerning degree when it comes to tech challenges, and we're stuck in a situation where we've provided procedures to get results but inevitably the procedures don't cover the vast array of scenarios faced day-to-day. Being a small company we don't have dedicated IT specialists. I believe I gathered my skills and knowledge through insatiable curiosity of all things technology as a child, self-teaching things like Pascal, building and experimenting with my own home LAN, and assembling computers from discrete components. Technology was a fringe thing back then, which I think drew me in. I doubt I'd be nearly as curious about it growing up today given its ubiquity, so I sort of understand why interest might be less common in today's youth.
How do we instill a desire to learn the fundamentals of networking, computing, and coding, so that the younger generation can be self-sufficient and confident working with the modern technology and tools they need to perform -- and be innovative in -- their jobs? I believe that the most effective learning occurs when there's a clearly useful purpose or application, so I'm hesitant to build a training program that consists solely of throwing some online courses at staff. That said, online courses may be a good place to get some background that can be built upon, however most that I've come across are intended for people pursuing careers in computer science, web development, software engineering, etc. Are there any good resources that approach these topics from a more general purpose angle?
How do we instill a desire to learn the fundamentals of networking, computing, and coding, so that the younger generation can be self-sufficient and confident working with the modern technology and tools they need to perform -- and be innovative in -- their jobs? I believe that the most effective learning occurs when there's a clearly useful purpose or application, so I'm hesitant to build a training program that consists solely of throwing some online courses at staff. That said, online courses may be a good place to get some background that can be built upon, however most that I've come across are intended for people pursuing careers in computer science, web development, software engineering, etc. Are there any good resources that approach these topics from a more general purpose angle?
You couldn't come up with a better term than that?
I stopped reading right there...just that turn of phrase takes away the validity of any questions to follow.
But make sure the ones who actually learn to do it on their own get promoted over the ones who come crying to your senior engineers to reset they whatchamathingy every ten minutes.
1. Send them back to uni to take the required courses for a CS degree.
2. Wait.
3. Rehire them at an entry level position.
Pay more so you can get a better class of employee. Low ball offers get you low ball employees or worse H1Bs.
It is unreasonable to expect mechanical engineer to be able to diagnose network issues, just like it would be unreasonable to expect network engineer to know how to calculate shear forces going through a support beam.
Hire multiple people to do multiple jobs or keep looking for a unicorn that knows it all and be prepared to pay appropriately high salary.
In C++, you could end up with bloat.
OTOH with Java they are erased at runtime.
Those types of people expect the business world to be tripping over each other in the race to shower them with cash. It's much cheaper and ultimately more effective to bring in H1-B talent.
I've found that most applicants suck. If they aren't motivated to learn, and they don't show ability to learn quickly or grasp concepts well - they should seek different type of work. Your solution, sadly, is to find such motivated individuals with eagerness to learn. It's difficult to find. I'm a pretty lazy individual, I'm no genius, but I've never had a problem picking up anything thrown at me. In fact, I throw things at myself to learn. In my late 30's now.
Maybe you need a part time IT specialist?
You are trying to change something intrinsic to the people in question. Young or not, they are too old already; their personality/approach is already set. Interview for the skills you need when hiring, and clear out those who don't fit the job description you've posted here.
On the one hand you take life too seriously, and on the other, you do not take playful existence seriously enough. Seth
That's easy. Just have them spend a semester or two in a IT university in India. They are cranking out huge amounts of student graduates that are finding fast employment in all the multi-national, government and even domestic firms around the world. I think this is because universities elsewhere on the planet cannot teach the skills that are so in demand.
How about hire better candidates? If these are essential skills you expect out of a recent grad, why not hire people with those skills?
This is the case of unreasonable expectations. Just look at the list : "fundamentals of networking, computing, and coding" from "acoustic consulting engineering firm, consisting of a mix of mechanical, electrical, civil ".
Does he also expect them to write thier own compiler, all while willing to accept $50K starting salary?
You got a puzzling bunch of engineers on your hands. An engineer is a person paid to solve technical problems. The technology used to solve the problems is almost irrelevant to the engineer thinking. I mean, whether I try to solve a cooking issue, an electronic issue, an electrical issue, a coding issue, a furniture issue, my brains just works the same way.
If these people are not engineering-minded, you cannot do much to change that. You can suggest them to have a look at some cool pieces of engineering, but you cannot force people to change.
Stupidity is the root of all evil.
How do you teach someone coding and concepts that take years to learn? Send them to school and wait a few years at least.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
You couldn't come up with a better term than that?
The OP is too insecure to call them Real Engineers.
"Being a small company we don't have dedicated IT specialists."
Translation: We are too fucking cheap hire an IT staff to service our IT needs.
Seriously ass-hole, go fuck yourself. Hire the staff that you need and stop complaining. This has nothing to do with the lack of curiosity of anyone. This has everything to do with how your company is fucking cheap. The problem lies with you.
Subject says it all.
Don't teach - test & score
We already have cooks, but we need accountants. How do we teach our cooks to do our accounting?
Hire somebody. As the unfortunate inheritor of an engineer who built a network Ill just go ahead and bet your "network" is nowhere near as good as you think it is.
Id also point out a lot of the issues you discuss are related to the fact that you think because you are curious, and you made it work, that you did it correctly.
Most likely you did it incorrectly and no one that isn't you can figure it out.
Beats the crap out of me! I have (MEP) engineers that when they start, make a spreadsheet, and use their calculators for totals. People generally freak out with a command prompt. There is no inherent understanding of IP addressing, or even a curiousity about how their tools work. We even had to resort to an external IT consultant for desktop support, because the 10% that were saavy enough at IT were becoming over burdened with helping others out.
So, I end up shoulder-surfing people working, and yelling at them (figuratively) for using stupid techniques in Excel, AutoCAD, Word, etc. I am the only non-Windows user though, so when it comes to bash scripting, grep, or other basic unix tools it becomes harder. I had to dig up an old perl script a few weeks ago for processing a large file that would be too painful to work with in Excel, and it failed to be an inspiration for anyone.
What I find odd is that all these people had padded their resume with programming experience, but they seem to take a path of least resistance on it, but don't want to simplify the tasks.
I can do it all for you. I'm an expert in networking, coding, electrical, mechanical, and civil engineering. I have degrees in all four engineering disciplines and a cisco networking certification. I have 10 years of experience developing industrial process control hardware and software, and 10 more years developing analog and digital instrumentation and measurement devices and their firmware.
I would be happy to come work for you were it not completely obvious that working for you would be an exercise in complete and utter misery.
Re "rely on senior staff to a concerning degree when it comes to tech challenges"
Interview people and see if they have the skills needed.
"Rely on senior staff" could be the only skill they are good at and it got them a job.
The background story, did their past education show any of the same "rely on others" issues?
Its a skill thats worked on over years.
Domestic spying is now "Benign Information Gathering"
Your engineers already have a job, doing electrical design or mechanical engineering. To me, your question sounds a lot like, "We have a team of highly talented airline pilots. What can I do to make them all brain surgeons?"
Software design is its own discipline. And doing it well is a full-time commitment. If you push your engineers through some software classes or workshops, all you're going to get from them is - at best - half-assed stuff you'll need an actual software engineer to fix later on.
Do it the right way. Hire a professional, spec out the software you need, and have your professional write it for you. It will save you time and it will save you money. Consider how much your engineers are making. Now think about how many hours they'll lose in productivity trying to be software engineers and writing lousy code. Now think about how much time the software engineer you'll eventually have to hire anyways will take fixing it all. Budget that against what it would cost to simply hire the software guy in the first place and do it correctly the first time. You'll see why your idea is the wrong one.
Weaselmancer
rediculous.
Engineers already have to learn math, physics, chemistry, organic chemistry, operations research, statics, dynamics, and on and on. They learn whatever they have to in order to manipulate the world to a new shape. It could be anything. You think metallurgy is easier than Java? Hah.
You likely have one of two problems and you need to decide if you have one or both.
If the problem is that you need to maintain an internal network, make sure backups happen, etc. Get IT person(s) as required. I have tried to work in this situation and all that happens is that backups are lost, the one guy that kinda knows IT doesn't quite know enough about blah and needs to get busy putting food on the company table at his REAL job so something is always broken... We still haven't solved this problem here.
If the problem is that you have a tool set that underpins the instrumentation and framework of the position that requires a little scripting to customize you need to make sure that the tool set is sufficiently developed that someone with rudimentary skills can use it. Most any kid can put legos together, we don't expect them to run a factory and make the blocks. In your case you might have to make it so that a senior person can also effectively create a fair amount of a block. This can be challenging.
I work in almost exactly the same kind of environment as a developer so solving the second problem is my job. I can tell how effective I have been by the trajectory of support I need to provide (more or less over time) and whether specific tasks tend to be done by one person on the team or its a shared duty. Sounds like you have a lot of tasks that require too much knowledge to use your tooling.
I'll commend you and the few old-hats around you on being a self-starters, learning and adopting tech/hardware/development/engineering on your own and trying to share and communicate that in-house. I think ability to learn, fully understand and properly implement anything and do more than just nod your head and gasp a topic for 5 minutes goes a long way.
But I think it's starts where it stops right now. What you have is a bunch of self-taught experts trying to carry on a vision-less and foundation-less IT department with a 'Fight Club' ruleset of "The First Rule of our Company is you do not talk about IT assembly or the lack there of". You need IT, not for the knowledge and expertise (because it seems like you have some idea what you need to do and how to be productive with technology) but you need it for two reasons:
1) Get the damn day-to-day IT burden off your shoulders, so someone who's managed, worked and operated in an IT environment can come in and set up a foundation, standards, expectations, operations, training and management of this shit, not you guys who are hardcode dabblers.
2) So you can focus on the jobs you are PAID TO DO.
This isn't a new problem, it just means your company doesn't value that because you are all doing it yourself and don't see the pain points because you've been 'making it happen'. But that only can go on so far. If it's a company cheap-skate problem where the idea has been brought up before but got shot down because 'talent is expensive', then I guess find all the /. posts that give you ideas on how to solve it, because that's why you posted, right?
This shit happens A LOT. And being, having and making a career in IT myself, there's nothing worse than seeing and empathizing with the other side of the coin where engineers, scientists, other staff, etc. doing IT in the capacity they can handle, failing at it, and not really focusing on their true job, which wasn't IT to begin with.
The same way you teach a generic engineer to build a skyscraper, bridge, ship, rocket, spacecraft, DRAM chip, MRI machine, etc. It's all the same really. Years and years of specialized training gets the job done. And then they can be a software engineer.
the growth in cynicism and rebellion has not been without cause
I know a lot of engineers. I've never met a generic one. Unless you mean the kind that rides in front of the train.
the growth in cynicism and rebellion has not been without cause
I've met more Genetic Engineers than Generic Engineers in my professional life. I'm not even sure where a "Generic" Engineer would come from. Every engineer I've encountered lately has some sort of descriptor before their title.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Both are Engineers, a Genetic Engineer and a Software Engineer, teach based on what they already know and bring it home with new ideas... Maybe the groundwork for a Bio-Chemical API?
Unfortunately, a lot of today's education is focused on passing standardized tests by regurgitation of information with no emphasis on critical thinking, which results in students and future employees that can't do anything without being shown how to do it.
Had a computer science student from Berkeley, that wouldn't use a database cursor to pull a million rows from a database. His optimal solution required executing the query a million times and skipping the rows he had already seen. He couldn't figure out why my version ran for 15 seconds and his ran for 90 minutes
Put together sessions with internal experts on different technology that you want to teach the younger engineers. Then have weekly (or how ever often seems right) lunch learning sessions where the expert demonstrates the material. Have more than one expert, and each may know something the other doesn't know so you will end up with everyone having greater knowledge.
You can also pick books on the subject and create a group class where each person presents a chapter of the material to the group.
I once worked with an H1-B visa holder who I thought was a great guy and a hard worker. I consider him a good friend from that time of my life. He had never used silverware or a plate before he came to America, so it's not hard to imagine that he'd also not had any deep exposure to tech as a youthful tinkerer, which I understood the original poster to consider favorable, maybe even essential, to his particular workplace's needs. There is a particular stereotype most H1-B workers fit into. They tend to be very intelligent, hard-working people who lack the confidence to take decisive action without frequent oversight or feedback. They are generally great at well-defined tasks that can be converted from specifications into product with rote processes. Coaching them out of that rut often forces both you and them to grow extensively. I mean this an objective look at the challenges involved, as I have developed a fondness for several people in this situation. The same things that tend to make them a bit hesitant in the workforce tend to also make them great people: they generally legitimately care about what others think and are looking for friends in a strange place!
Beyond that, does anyone log into Slashdot anymore? AC's used to be branded as shameless trolls to be ignored, and now it seems like every other post is from one. Maybe it's my fault for not ignoring you, but your comment seemed like it might be intended to be serious.
I don't think they are much lazyer that we were at their age. I think that technology has changed completely. I mean I;m on the IT market as an IT specialist and even I have sometimes a hard time doing it all. I mean what I learned in collegue is outdated, except for "how to work" what I learned as technology in college is completely useless since it's completely outdated. What I did 10y ago has nothing to do with what Im doing right now. Technology is much more complex than it used to be. I used to be THE IT guy in a 300 employee business and I was doing everything IT. I had a tech with me he was doing everything materia (new laptop, new desktop, installing softwares and such) I was doing everything server, services and networking. I now work I used to do network... I can't anymore, it's not simple as it used to be. I mean back 10 years we had 1 network and everything was on it. Now we have VLAN, perimeter firewall, IDS, internal firewall, segmentation... It's just too complex for anyone to know it all. I don't think that they are less curious... I'd say... choose your battles and those are not worth it for most of them. If you enjoy mecanical engineering I doubt that network engineering will please you that much.
I agree with the original poster. Here, we have someone complaining that a mechanical engineer, electrical engineer, etc. can't write their own simple excel macro, or figure out why they have no internet connection. This is akin to your car not starting and not being able to figure out that it is the battery and being able to jump it or having a flat tire and calling AAA to change it.
When I first dropped out of college, I took a job working for a hardware engineer (Seth) at a very small company. If there was a problem, he'd toss me the chip puller and tell me where the scope was. Years later, at one company, they had moved offices and needed to change the IP addresses of a couple of the Linux based workstations. They were waiting for a consultant to show up the following week. I took 5 minutes to do it.
This is not an issue of every non-software engineer being able to write good quality code. It is an issue of having basic understanding of the tools and being able to simple tasks, like write a macro, or and simple diagnostics? How many of you laugh at people who don't know how to change a tire or jump a dead battery?
Fight Spammers!
Don't. In 3 months, 2 weeks and 9.5 hours, 150% of today's jobs will be done by AI/Bots.
Citation: Slashdot neckbeards.
Do you require a degree?
* if yes, you have no idea what you are doing. A degree does not weed out non-performers. Just the opposite. It tends to invite people who feel entitled.
Do you provide useful OJT?
* Your description of yourself makes you sound like a superman. I doubt that. Rather, I suspect you have overlooked a small army of mentors that enabled your success. Are you doing as well for your employees?
Do you reward for performance?
* Getting a token payment for a patent doesn't go very far. Get the politics out of the system and reward for real performance.
Here is a big secret. Engineers only learn by teaching.
* Everyone needs to understand that they MUST become expert in an area. They will be called upon to teach others - informally and formally - on a regular schedule. They need to develop a lucid presentation and accompanying training material. This becomes a key portion of their evaluation. Second class engineers will fall by the wayside, but the good ones will shine. Don't let them get away.
Stop looking for a magic training class on the internet. It does not exist.
It doesn't take years to learn how to be productive with code. Why do you think there are things like pluralsight and boot camps? They aren't trying to become developers they just need enough to be able to get the job done. If the company need developers later down the line then they have to hire some. If the company doesn't then they aren't keeping up with the times and the way the company is ran is the problem.
Just look at the list : "fundamentals of networking, computing, and coding" from "acoustic consulting engineering firm, consisting of a mix of mechanical, electrical, civil ".
They need someone who has an A+/Network+ certifications and went through a coding boot camp or two.
Does he also expect them to write thier own compiler, all while willing to accept $50K starting salary?
Level-entry A+/Network+ techs typically start off at $30K per year in Silicon Valley.
Hi, I'm an HR specialist and I want to hire some off-the-shelf tech-guys to do some very specific things, but my company doesn't want to, you know, P-A-Y for it. How do I motivate these nerds to learns stuff I need them to know without giving them a higher salary or giving them permanent jobs or stuff like that?
Suck it, A-hole. Pay for their training. After they are trained tell them the truth: your company is so cheap you won't keep them on after their project is finished. Your alternatives are to lie, lie, lie.
You made your bed, now LIE in it.
All of your engineers will need healthcare at some point. You could probably save a mint if your engineers could diagnose and treat some simple medical problems on their own.
A prosperous society allows individuals to specialize in their chosen profession. This allows each of us to focus our talents and achieve things not possible if we were all simply "Jacks of all Trades".
With all the automation coming, we should have no problem finding enough humans to narrowly specialize in their respective skill sets.
If you have spent years trying to build your reputation here, the first time you mention something that goes against the norm, you can get 10 AC shouting you down telling you how ignorant and stupid you are and you need to go read a book, and don't come back till you learn something
Moderators that don't know what they are reading moderate based on other comments and you karma goes to zero and your points go to -1 fast.
Why risk that any more?
This isn't their job or their problem. Hire someone to do it or outsource the work.
Anons need not reply. Questions end with a question mark.
I'm the parent poster, and I want my brain surgeon to be self-taught, probably because I'm an ignorant moron myself with a huge chip on my shoulder.
I completely reject the idea of a "Generic Engineer".
An Engineer is someone with extensive specialized knowledge in a specific field so that they can "engineer" solutions to problems.
Either these "laborers" have specialized knowledge in one or more fields, or they don't.
By Generic Engineer, the author seems to be implying that "they're smart people with some math skill, and therefore can do anything I throw at at them", which is simply not in line with reality.
Company funded hardware and free workshops to build something using rPi and Arduino. The project should include controlling hardware and sensing remote nodes(wireless). You'll soon learn which Engineers have the interest in technology and learning and which Engineers went to school because someone told them too or it was picked for the income potential.
Using rPi keeps it inexpensive but provides wealth of choices for development tools(python,jscript,node red, C or C++,etc) and provides I/O to other hardware. Arduino provides even less expensive hardware and plethora of libraries and available hardware. The two provide means of basic communications learning and adding wireless nodes takes that communications skill to concepts they live with daily(phone, texting,etc). Later, MQTT could be added for a bit of networking.
Tell them to RTFM. They must be used to it.
Open Source Network Inventory for the masses! Kuwaiba
Computers aren't interesting much like cars are not interesting. Not to most people. Now they're tools that should "just work".
Add in that the basics of computing: cpu, memory, disk; plus the basics of networking: IPs, routing are no longer enough to get the job done.
It's not a single CPU, it's several. It's not one memory, but layers of caches. Not one disk, but a virtual array. Heck, it's not even "disk" any more. Networking is awash is in complicated firewalls, proxies, vpns, and encryption. All of the fundamentals of computing are buried in the details of bureaucracy that we surround them with.
Add in that we barely even use computers any more. It's all Virtual Machines on top of hardware, or containers on top of OSs , or synthetic virtual machines ala the JVM. We're so far detached from what reality of what a computer is (or at least was), it's no wonder people don't care any more.
We're to the point now where it's difficult to be a renaissance man in this world. I've been doing this for 30+ years, since the beginning of 8-Bit chips and busses. But I throw my hands at networking with its DHCP, NAT, Bridging, etc. etc. I'm comfortable with /etc/hosts, ping, and tracert. Beyond that, "contact your network administrator for assistance".
Do you actually appreciate what it takes today to get a rectangle drawn on a screen today? It's not just filling up bytes of memory that just-so-happen to be associated with a screen buffer, that's for sure. Not any more. Graphic languages, shaders, pipelines, caches. The head spins. I just want a box!
Heck, developers aren't even allowed to compile and deploy code anymore without going through the DevOps "team" and their bevy of tools and servers and workflows to copy up a ruby script. No wonder nobody knows how anything works any more.
All of these layers of complexity take the fundamental joy of having stuff work so that you can concentrate on your real problems, instead of fighting infrastructure. It's no wonder there's a rise in the Maker world of just getting a motor running or a light blinking -- where you understand "turn this bit on, that light goes on". "Shift to bit 2 and light 2 goes on -- because of this wire...Whoa!" Heady stuff.
But diagnosing gate router protocols, graphic drivers issues, slice failures in the volume manager, server configurations. Yea, no thanks.
The mechanics of computing today are not interesting. They're bureaucracy, and lawyer talk.
Make figuring out the tech part of the overall project. This is most easily accomplished by providing absolutely no tech support, or very little, so that employees have to figure it out for themselves because they have no other choice if they want to complete their work. The other option is to have a useless IT person onstaff, or one that is very useful, but shares nothing about what s/he knows so that people are constantly re-inventing the wheel. That is how the smart and talented engineers where I work operate, at least how they did before I came onboard to handle their technical needs. Who would have thought that the generic "use Google's DNS servers when our ISP's is lacking" workaround would create such excitement. In addition, these folks learn that many tech problems are easily fixed or at least bypassed temporarily, google is your friend in more than 'searchy' ways and, in this case, how to use nslookup.
There really is no other good way. With things they already have credits from, they should at least be a year faster as well.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
"I believe I gathered my skills and knowledge through insatiable curiosity of all things technology as a child." The road to modern technology was paved by people who saw a problem and hacked together a solution. It relied on a combination of curiosity, innovation and collaboration that had been present for generations. Whether you are talking Ely Cotton, Henry Ford, Vinton Cerf or Tim Berners-Lee, the ability to take knowledge and then apply in a different and practical way is something gained through a combination of education, experience and fearlessness. The last two of those three, however, we have pushed from modern education. Not only are kids judged by standardized tests, entire school districts and states are. The risk of a wrong oval is far too great! Similarly, academics have turned toward recitation of knowledge rather than experiencing it. With limited exception, auto shop, wood shop, and the like have been replaced, and athletics have been marginalized to the point where the peak age of participation the US (at least) is age 12. How can we expect adults to engage in the bargain of innovation - to risk failure, multiple times even, in order to succeed - if we never give them those chances as youth? For the modern company, if you are looking for those skill sets, you have to broaden your search when hiring. Look for the engineer that welds on the side (and doesn't just do everything in CAD). Seek out older employees who may have started in very different professions - those are your problem solvers.
If they are being paid in a way that reflects their being competent-or-better actual engineers; expecting them to play IT isn't necessarily unreasonable; but it seems pretty dumb.
You don't want to deal with lousy IT, no matter how much money you 'save'; because that's just miserable; but if you are paying an electrical engineer to spin up EC2 instances or a civil engineer to be poking at a recalcitrant data logger rather than thinking guru-level thoughts about concrete loading, you are arguably squandering relatively expensive and rare talent on problems that a reasonably competent small-shop IT generalist is exactly the sort of person to make go away so that your subject matter experts can do their thing.
Engineers who can't handle writing(or at least prototyping) simulation code are potentially more of an issue(expecting them to whip out their l33t optimization skills to save you a modest amount of CPU time by rendering the code unmaintanable is often folly; but it's been a while since most engineering disciplines were amenable to calculations entirely on slide rules and legal pads); but even there the value of an engineer who can go from Debian_netinst_x86-64 to 'fully configured numPy environment' is something that is a trifle hard to stress over as long as they know what to do with a development environment once set up.
I have a personal fondness for generalist tinkering, so I sympathize; but I also recognize that much of my generalist tinkering is purely recreational because it involves either fiddling with stuff that I'm not very good at; or doing things that someone cheaper could easily do because I'm interested in how they work. In this case, I'd be severely doubtful of the wisdom of trying to impose IT stuff on a bunch of actual, went-to-engineer-school-and-are-priced-to-reflect-that, engineers rather than investigate the possibility of finding a reasonably flexible IT/lightweight 'CS' with strong tinkering background person who appreciates the variety of an office too small for rigid specialization and the chance to poke at a wide variety of problems; and making that person available to your engineers for fiddling with peripherals, basic network and systems administration, any EC2 jockeying, etc.
No, Nathan, you in particular are just really ignorant and unaware of it. I read some of your posts and the consistent theme is you know things that other people don't because like uhhh... magic and brain powerz.
Perhaps you should just shut the fuck up for a decade and learn something for a change. Because let tell you, your high school education ain't cutting it. Anyone who has called you smart must be incomprehensibly stupid and know only other people of the same.
In conclusion, go fuck yourself.
Seriously, fire the guy who asked this question and use his budget to hire some competent people to replace the guy.
Just because you want to do a dozen jobs for one paycheck doesn't mean everyone else does. Stop being a cheap bastard and hire people that meet the requirements for what you need instead of trying to make someone else do another job that isn't their job
I can't even believe this shit was allowed to make it to the front page. Pathetic story and like everyone else has said "generic engineer" is beyond stupid. Davegravy or whatever the loser's name is who wrote the title should be banned or fired. They have zero knowledge of anything to do with science or nerd shit outside of masturbating in their mother's basement
Engineers writing code is a bad idea, cf any hardware driver, ever.
Yeah, sure, it will work, as long as you use it exactly the way the guy who wrote it uses it. But whoo boy, forget about any testing or defensive programming.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
Why do you think there are things like pluralsight and boot camps?
To make money off of gullible stay-at-home moms who think after a two-week boot camp they're now l33t haxors.
Surely there's an app for that.
There are a number of items that can be unpacked from your question. You are saying that you have smart people who are Engineers but have little technical knowledge. You want to figure out how to get them to learn networking, etc. Not only that, but you want them to get to a level where they can operate autonomously.
To begin with, you can't instill curiosity or an interest in technical skills in people, all you can do is encourage them or hire people who already have that drive and tinker at home. One way to encourage them would be to offer technical training and perhaps a bonus for getting specific certifications related to the skills you need.
That being said, it sounds like you need to hire someone with technical experience who can be used to support the engineers. Why would you waste the time of Engineers to learn technical stuff when they could be working on other things that makes your company money?
Wasting time.
You could have directed your efforts toward streamlining a training process for your company, instead you're whining about younger people.
I think any psychology student could call this for what it is, but re-read what I wrote about the objective of your efforts.
I'm a Mechanical Engineer that codes heavily and I'm a complete oddity in my field. I switched at last minute from CS to ME because I wanted to use the tool not make it. There are a very few 'jack of all trades' out there
Most of my co-workers know at most one language. Asking them to diagnose something written outside of that language is a non starter. If they know VBA, their tools are written in VBA. Matlab is so entrenched in most of the engineering fields that just adding a Python script to the process got a lot of pushback because if I left they would have no one on staff to take care of it.
These are guys with masters and PhDs in specific Niches in mechanical or electrical engineering but don't, can't and won't do anything outside of what they spent 5+ years in college learning. It's not in their job description to do so and unless you pay for them to take a week off and go to a coding course they aren't going to learn it.
The only reason I know anything about networking is because It's a 'hobby'. I have a managed switch at home. I ended up writing a .bat script to toggle between local and DHCP networking on our development machines because it took them too long and incurred too many questions on how to do it manually.
In the same vein my aunt has an MD. She's constantly asking us about how to do stuff on her iPhone. She's at an age where she's trying to be a grandma and keep up with all of the advances in her own field.
If you want a Mechanical engineer that knows 3+ languages and can do their own IT work find us on LinkedIn and pay us appropriately.
If they don't care to learn then you cannot make them learn.
If you force them to take classes that they don't want to take they may remember enough to accidentally destroy things instead of fixing them.
If they are interested enough to start but want hand holding then you will need to translate IT concepts into generic engineering concepts long enough for them to get going on their own as you probably cannot make hand holding your full time position. But still be ready for them to break things due to over-confidence and ignorance.
I had wondered about this, too. What is a 'generic engineer' anyway? I can trace a simple electric circuit, but I'm no EE -- I've got a graduate degree in computer science. Somehow I don't think that 'writing an excel macro' is coding, in particular, nor is it 'computer science' - it's an application of logic. But to get into python, perl, etc. ? Presumably if someone wishes to, that's fine, but honestly, when my car dies I take it to a garage. When my roof develops a leak I call a roofer. And so on.
I remember going through university with a lot of people who didn't see the value of learning outside a very defined scope of their discipline.
We had engineers who said "we are not programmers I shouldn't be forced to use Matlab" or "in the real world software does that for us".
Likewise I see electrical engineers who have no idea what ethernet is, IP address, RS-232, baud rate, stop bits etc.
If I hire an electrical engineer to design and commission a piece of electrical equipment, questions about networking, computers, etc will be on their employment interview because we shouldn't need to hold the hands of these people who think "in the real world software does that" when their software refuses to work because they can't figure out how to configure a damn com port or change their IP address.
You are asking how to train a specialized engineer in how to do x, y, and z. What you should be asking is how should I hire engineers capable of doing x, y, and z. You should be checking to make sure the people have the requisite skills or at least aptitude when you are trying to hire a civil, mechanical, or other engineer. It should be part of the job requirements you list.
I have known software engineers that have been in the industry for decades that had no idea what they were doing when they needed to deal with the network. I could lecture them on wireshark for weeks and they aren't ever going to get it. But I don't need my coders to all know that sort of thing.
Expecting a civil engineer to be able to just pick that up is a bit unreasonable. You will certainly get some success by trying to train them, but you are better off hiring people that have a bit of the knowledge/experience to begin with.
"How do we instill a desire to learn the fundamentals of networking, computing, and coding, so that the younger generation can be self-sufficient and confident working with the modern technology and tools they need to perform -- and be innovative in -- their jobs?"
The "older generation" started learning these fundamentals before there were degrees and courses in CS. They did it because they were curious and self-driven to figure it out. You can't "teach", "motivate" or "instill" this: It has to be part of the person's character.
Hire for character, integrity and intelligence. Then the problem will sort itself out.
You are an outlier. Your personal interests and professional skills are tightly aligned in a way that very few other people ever develop themselves. To expect to find a large pool of candidates who are similar to yourself is completely unrealistic.
It takes a certain type of exceptional individual to make a small company work. There are only so many of those people in the world. As companies grow, expectations need to change. Primary among those is the expectation that a new employee will be able to perform a number of different roles. The reason that the prior generation of the company was able to pick up many roles is because it happened organically. As tasks needed to be completed and as new challenges arose, people stepped up to the plate and tackled them because they had to.
The challenge that you are currently facing is that there are too many IT related tasks to do, and not enough people with the skills to do them. The solution to that challenge is not to expect engineers to become IT people. The solution is that management needs to create an IT department, or an IT position and staff it with IT people. Just as you would not expect an accountant to perform engineering work, even though both involve math and numbers, you cannot expect someone whose focus is on engineering to perform IT work.
But make sure the ones who actually learn to do it on their own get promoted over the ones who come crying to your senior engineers to reset they whatchamathingy every ten minutes.
Let's see how absurd that statement is when applied to other areas of business.
Being a small company we don't have dedicated Finance specialists.
Being a small company we don't have dedicated Accounting specialists.
Being a small company we don't have dedicated HR specialists.
Being a small company we don't have dedicated Engineering specialists.
Being a small company we don't have dedicated Sales specialists.
The reality is you better buck up and get one. IT isn't something you can do on the side like some Shade Tree Mechanic anymore.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
Vanilla engineers?
Run-of-the-mill engineers?
Conventional engineers. Garden variety engineers. "Cash me outside" engineers. Store brand engineers. Ersatz engineers.Hufflepuff engineers. Prequel engineers.
I fully agree. And if you do not have enough IT work for full-time jobs, get tech-consultants as part-time experts. Do not get them from any of the large consultancies, they will just rip you off. Get them form a small high-quality shop and pay what they ask.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Well, I am in my 50's and can relate to the OP. I have degrees in EE and I started working in electronics production line as a test engineer and got involved in computer aided testing, because I took a couple of Fortran IV classes in college. Nobody told me how this is done. They handed me an half-assed HP instrumentation manual and a HP Rocky Mountain Basic users manual and said, go figure it out. Took me a while but I did it and liked it so much, 7 years later I was leaving electronics and converting into a full time IT role. But, while I was a kid, or I was in school, I mean from elementary to college, I was taught to never give up, until you find the solution to your problem. Nowadays, I am noticing, fresh grads don't come with that mind set. For instance, we were interviewing for a sysadmin position and I asked, "All of a sudden you noticed that your connection to the network has dropped. What would you do ?" Answer was very disconcerting: "I call help desk and log a ticket to get it fixed. You have a help desk for this. Right ?". I would have expected an answer like, I would check my network settings and see if anything has changed, then ask people near me, if they are experiencing similar issues. I mean basic steps of troubleshooting, but no, heeeeelllll no. Why bother while you can offload that to someone else ? Then they have the audacity to cry then do not get paid as their friends in this and that company. Maybe, just may be if they could be a little more into what the position entails, they might get ahead faster. But with that "it is not my job" attitude, it is very hard to respect these people. And when OP says generic engineers, I see past the derogatory meaning that most people seem to be stuck on. He means, engineers who are stuck in their line of specialization and don't want to look outside for other, relevant things. In my opinion, teaching this type of person, something new, is damn near impossible. The only way is to hire engineers with open minds. They will end up learning these tools on their own.
__________
The more I know people, the more I love animals
Would not these people have already made their choice NOT to be in another specialty of engineering? For example, in the 1980s there was a surge in development of so-called silicon compilers, software to quickly create physical integrated circuits from logic diagrams only. One so-called selling point that I heard (I was part of a team to evaluate a few of these) was that it would enable systems engineers to create large scale integrated circuits. The problem was (and still is) is that systems engineers did not want to create integrated circuits!
I think this is a symptom of a larger problem of technology literacy. I recently read an article (sorry, can't remember where) which stated that we've currently raised a generation of kids that have never had to figure out the technology. Whenever a new piece of technology was acquired (new game system, phone, tablet, etc), many grew up in a house where "dad would handle it". While many in the work force grew up in an age where the kids were the ones who figured out the technology, we've now have the flip side where the adults are the ones who handle it. While they can use all of the new flashy technology, they're completely clueless as to what happens when the technology doesn't work. I recently was talking to a friend who was telling me about his struggle of reinstalling the operating system on his son's laptop. His son is a high school junior. I couldn't help but think that when I was in high school, I would not have asked my dad (or anyone else for that matter) to reinstall the OS on my laptop. I would have done it myself. And my friend was ultimately just as clueless as his son as to how to do it, but he got online, did the research, and was able to do it himself. And honestly, it's all stuff his son is just as capable of doing, but he's grown up in a world where you let the adults handle the technology.
This is the case of unreasonable expectations. Just look at the list : "fundamentals of networking, computing, and coding" from "acoustic consulting engineering firm, consisting of a mix of mechanical, electrical, civil ". Does he also expect them to write thier own compiler, all while willing to accept $50K starting salary?
I am a mechanical engineer by trade and training. These are not unreasonable expectations. Today, all engineers are taught the basics of computing and coding in school. Right now I think most schools teach Python, I was taught MATLAB, and the generation before me Fortran. It sounds like some of these new hires blew off those classes since they weren't in their "core discipline".
Networking is a bit of a stretch though. Most new engineering grads only know enough to communicate with other disciplines, and networking is a bit beyond that.
One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
This.
I used to work with a 60+ year old analog electronics engineer. He neither knew nor cared anything networks or modern ways of working but with pen, paper and a lab he would build up a SMPS for whatever the current product was and then refine the shit out of it until it was quiet, reliable, efficient and small. He had a side business selling interesting audio electronics products.
You don't dismiss that wealth of experience and talent because they don't care about netmasks and gateways. You hire it and retain it. If anyone had a problem, we helped each other out.
I should use this sig to advertise my book ISBN-13 : 978-1501515132.
I understand you are small and need to get a little more growth out of your workers so you can invest in your core. This is double edged, but I will no try to disuade you.
There is an excellent online learning site called Lynda.com $300/year per employee and you can create custom learning playlists for them to build their skills from nearly all of the Microsoft Certification Exams/Linux/Opensource. In fact, if you want to give them a bonus for getting A+ certified, they have a learning path for that as well. It covers nearly every topic from systems administration to advanced excel to could computing.
I used it all the time to train myself and train up developments teams. I mean, do you know how to write python app so that you move it to a Heroku container in Amazon Web Services and horizontally scale it as big as you need to? Well Lynda has a class for that. :)
Here is the trick. PICK A CORE PLATFORM AND TOOL SET, or you will have eventually have a mess beyond belief as people cycle-in and out. If you don't limit the tools and just tell people to learn stuff, they will, and eventually you will have experts in an unsupportable disaster. You don't want this. Chose your platforms and tools, then give people a learning path and incentivize them. Use Lynda.com.
THat is all.
Damn, that's low! Worth more out this way where the living is cheaper. These are completely entry-level certs, though. Reference the DOD 8570 chart for certs that are more advanced. Keep in mind these are all vendor-neutral security certs so encourage your staff to get the vendor certs corresponding to the hardware / software used in the shop. These aren't programmers certs, either, although your best programmers might have them. Programming certs are a completely mixed bag IMO.
I suspect that this a symptom of the iThing generation. Having kids grow up so familiar with technology that "just works" and that you can't really modify in any meaningful way, results in kids who don't know how to fix things. The previous generation remembers slogging through windows registry, rooting phones, even building computers but this generation are simply tech consumers.
I'm not an engineer but I have worked with engineers and I do have a strong CS background as that's my education. I think something that you'll need to realize is that while it's possible to maybe train or teach someone a field that they never had any background in, it doesn't mean they'll ever be able to come close to someone who's worked on IT their entire lives. There's too many things that experience teaches you that you would never hope to know. So in reality, hire a specialist to help everyone or just accept the fact that your IT infrastructure is never going to be as good as it should be.
I wish the engineering world worked as you described. And yes, I am an engineer (Master's in geological engineering, and my PE/P.Eng thank you very much).
The sad truth is that there is a hell of lot of engineering time spent on mundane work that can and should be automated away --most of my life was spent pushing around columns in excel, hunting down typos, and debugging god awful analyses written in excel. I jokingly refer to heavy infrastructure engineering (I did landslides, soils, mines, tunnels, rail, etc.) as the place where technology goes to die.
Most of the clients demand cost-reimbursable billed hour contracts, so it's also where efficiency goes to die. Better to have a junior engineer spend 4 weeks pushing data around and billing it out than optimizing that task so the engineer can spend their 'guru time' thinking about concrete loadings, failure modes, gaps in the design. I picked up a lot of fortran, R, python, and even lisp on the job working on automating the garbage tasks that took up 75% of my time so I could spend more time/budget on actual important design implementation issues (so I could sleep easy at night when I stamped designs). Saving 5-10% budget was appreciated (we can win more contracts!) but figuring out how to do something 2x, 3x, 4x as fast was not ("We won't make any money because we aren't billing enough hours!").
This is why I'm back at school doing a Master's in statistics/machine learning --couldn't handle the amount of BS tasks that should have been automated away keeping me away from the interesting and challenging parts of my job, with no improvements in sight. I do not miss nightmares analyses (for an earthquake soils design of an LNG plant) spread across _3,000_ excel sheets and 60+ directories, combining the output of multiple different versions of garbage software run by different teams in different countries. Oh god. Doing the quality control on that? Nope. Nope. Nope. That was two months of my life I'm not getting back. And this was with a well known, highly reputable design firm!
I think the best way to accomplish what you are trying to do has 2 parts.
1) scheduled in house work groups where select leaders show off and teach skills to employees who might be able to use them in their job.
the working group should focus on nuts and bolts type of stuff that can help people get the job done , more work in less time.
2) allocate a specific number of clock hours/ project time to training weekly to ensure people learn or practice the skills taught in the working group.
âoeTolerance applies only to persons, but never to truth. Intolerance applies only to truth, but never to persons.
Seriously?
It's not the 90s anymore, buddy.
We all use Perl, C, C++, and that kind of thing now.
Wake up and smell the 21st Century.
-- Tigger warning: This post may contain tiggers! --
If they have no interest and are not curious enough to self-motivate they'll never be anything but office drones.
Sounds like you have a fine crop of technicians there.
Without a systems administrator, you'll get 3rd rate sysadmin work out of 1st rate engineers at 1st rate engineer pay, and it will take longer to boot (pun intended).
OP implies that any of the fellows he hired in with 10 years ago could have, at that time, trouble-shot a modern commercial network issue. I. don't. think. so. Borland dropped Turbo Pascal *over 20 years ago*. So, what the OP wants is "new graduates" willing to work for 45k - 55k who have 20-30 years of experience. Here is a hint, seriously: if your employees don't have a tool they need to get their job done, give it to them. In this case, it seems you're confusing what you think they need for what they need. Wild and Crazy idea. Sit them down, explain to them that you perceive a problem (be specific) and ask them how the company should remedy it. Of course if they're all know nothing slackers, they'll just shrug their shoulders and keep texting away. But then the question arises, how is it that all of your "new graduates" are of such low quality? Another (last, I promise) hint: the days of the high school kid getting hired to do a small start-ups IT are long over. The systems are too complicated, the knowledge required too large and diverse, the time-frames too short for young Billy to slap together some code and after a couple of months of debugging, have a serviceable solution for the customer.
Part of how lawyers make their money, is they have stock forms and letters that they write once, and then customise for each client. They charge each client the cost of writing the whole letter from scratch.
So, if it takes 4 hours to do some routine certification work, and you implement processes so a junior engineer can complete the work in 1 hour, the way you stay profitable is by charging the client for 4 hours billable time.
Generic is the _exact opposite_ of an engineering discipline.
Anybody want a peanut?
That "Level-entry" salary of 30k in SV is quite unbelievable. I live in the midwest where 120k can get you a 2000 sq.ft. house with an acre and the entry level salary for techs that can do desktop and network support is 45k.
The secret is not to care what other people think, because mostly they don't
I got an Idea how about we teach them programming instead.
That "Level-entry" salary of 30k in SV is quite unbelievable.
That's $30k for certified techs. Uncertified techs make minimum wage ($20K per year). You may find it unbelievable but I worked those wages at the beginning of my technical career.
I live in the midwest where 120k can get you a 2000 sq.ft. house with an acre and the entry level salary for techs that can do desktop and network support is 45k.
No employer has ever offered to move me out to the Midwest.
Working IT in Aerospace the very last thing I want is my engineers thinking they know something about networking or IT. Just about every IT issue we have is some engineer thinking they know more than IT about our network. Many hands have been slapped, many a GPO crafted.
-- I have a private email server in my basement.
This is not a training problem or a trait of the younger generation, it is a flaw in the applicant screening process. If you want self-motivated, self-instructive engineers, then screen your applicants accordingly.
" In 2017, these skills and tendencies are more essential than they were 10 years ago; our instruments run on modern OS's and are network/internet-capable, the heavy data processing and analysis we need to do is python-based (SciPy, NumPy) and runs on AWS EC2 instances, and some projects require engineers to interface various data-acquisition hardware and software together in unique ways. "
There's your problem. That is an awfully specific IT requirement, you need to break it down into less asinine requirements, eg:
- OS specifics (eg Linux, FreeBSD, Windows)
- Language specifics (eg C, Python)
- Interface specifics (eg are you wrapping an API needlessly? Why not just use the C API to begin with?)
I'm not sure why you're using EC2 for anything unless you have really spikey loads that are inconsistent on a daily basis. EC2 is only fiscally responsible if you need processing loads that would require more than one server for less than a few days in a month. If you have any base-load at all, you are better off owning that entire network fabric unless you're a startup. It's easy to spin up 100 instances to do X&Y, and then spin them down again when they're done. It's not cheap however to keep an instance running idle more than one day. However the way AWS works is that you are penalized for all outside data and all wasted cpu time, so you better make it count.
If you are trying to find IT engineers that know all of this stuff, you are sadly going to be paying through the nose. There are many people who have experience with all of this stuff, but you're not the only one who wants them. You are better off splitting your IT needs in half and putting EC2, OS people in a smaller group, while putting the Python, and data interface into another, because that makes the most sense.
You are not going to find people who are competent at Python and want to work for peanuts. Everyone needs to know C, and if you hire someone who knows Python who doesn't know C, they are useless because they won't understand how C bindings work and will rely on third party libraries that they can't fix.
The same thing can be said about "jQuery" people and Javascript. If you hire people who only know jQuery, they will not know how javascript actually works, and thus write very inefficient code trying to duplicate functionality that already exists in the language itself.
This happens in all scripting languages that use C binding libraries. Unless you actually know C, you're not going to be able to use these libraries, and the reason everything uses "C" bindings is because that is the only way software libraries can talk to each other.
So again, just divide your IT requirements into people who manage the server resources, and those who actually handle the data. Otherwise you're going to not have people are competent in both, and may even end up with too many people who are weak in one area who all have to ask google instead of use their experience to troubleshoot something.
There are a lot of people who think the poster is being unreasonable, but I don't believe he is. Neuroscience researchers pretty much have to learn to code. At the very least, MATLAB, but often times lower level languages. But programming doesn't have anything to do with neuroscience directly. But it's hard to do much in neurscience without programming chops.
I would think it would apply to most areas of science and engineering. Especially in research. Computers are a tool and programming is the skill that makes them most useful. I don't think anyone would suggest that engineers should have mathematicians do the math for them. Why have programmers do the prrogramming for them (unless you're talking about big systems, but frequently, what's needed is small scale tools or custom data processing). Until you can tell a computer what you want in English and it can produce it, many people in these fields will probably need custom tools and data processing that simply don't exist.
I don't think it's unrealistic to expect engineers and scientists to have basic programming skills. I think it's kind of sad we're not teaching those basic skills in high school, actually.
If young people can't do "everything" the way older people can - then don't hire young. Hire the oldies you like.
Send them to school.. Buy a teacher. Send them to professional training..
Not this stoopid uneducated bullshit!!!!!!!!
foolish
How to instill a desire to become self-sufficient: make reliance on others less than desirable, and reward for self-sufficiency. Good resources that approach these topics from a more general purpose angle: how about one of the various coding schools established over the last four years or so? Graduates are high-quality, having some of the traits described. Not so much on the networking side, and maybe more than general purpose, but perhaps a solution.
Today, all engineers are taught the basics of computing and coding in school.
The moment I decided to major in Comp Sci was in college in an "Introduction to Pascal" class where I was the only one in a room full of engineering students who really understood it (to be fair, the electrical engineering students who could already read schematics had a better grasp than the rest).
There's only so much training its cost efficient for someone to get - both in terms of cash amounts and their capacity to remember stuff.
A large part of computing over the past few decades has been abstracting the interaction from the underlying hardware - programs replacing programming, programming languages becoming more complex but requiring less input to deliver a given result - with the objective of making more efficient use of the persons time, moving the effort away from implementing the solution and towards fixing the problem.
Learning about sorting algorithms isn't going to help in working out which content distribution network will give you the biggest benefits and cost savings.
Meanwhile, in highly-skilled areas, there is a growing trend of specialization - this inevitably leads to gaps in the skills coverage.
The trick is to then exploit these gaps which have emerged as a result of over-evolution as has happened with the Dev-Ops movement, the Raspberry Pi, and the software industry in the far east.
Lets go back to the unpaid apprenticeship days.
Leslie Satenstein Montreal Quebec Canada
LOL. Well a consulting environment is one of the worst for actually learning new things unless you get the right people who are always wanting to learn in the first place, so it's a challenge. The worst thing you can do is make all the leadership signals saying you value them learning and telling them they need to learn but the not actually allow them access to the training or the time to learn. It takes 10,000 hours to master something and when it comes to consultants it's utterly critical that they be masters to "sell" the their value and justify their fees. That's 5 years at 40 hours a week to achieve. This is where management usually fails in this situation - "do what I say but make your numbers and don't let the training interfere with your revenue stream!" is how it usually works and it always ends badly.
Of course, perhaps the goal is flawed?
I used to work for Hewlett-Packard as a consultant/applications engineer and this was a constant problem.
The problem is that the older generation had to learn these things because there was no one else around who knew them.
The new generation, on the other hand, can just go and ask the old generation. It's an issue of dependency.
You want to fix this, then tell the older generation to stop doing the work for the younger generation -- make them learn how to take care of things on their own.
...just Red Bull and HotPockets!