What are some skills required to be an engineer that typically aren't thought of?
I'm asking because I want to have an edge against other future engineers. #engineering #mechanical-engineering #software-engineering #civil-engineering #personal-development
6 answers
Mohamed’s Answer
Technical Skills
Software Engineer
Basic Computer Science Skills: Hopefully, any software engineer will have these skills and more. Research skills, reading comprehension, the ability to know how to use library functions, and understanding computing problems, design patterns, and frameworks are other skills that are valuable to have. A great class involves students and helps them to develop skills in logical thinking, creative problem-solving and communication. Classes that incorporate a team approach, requiring clear communication among members as they solve a problem and explain their solution to others, enables graduates to work this way at their jobs.
Passion for Code: Programming isn’t for the uninterested. You must have a passion for code, developing it from a purely scientific skill into a craft or an art. Building code is much like developing a painting, a sculpture, or a symphony. With the popularity of Open Source, you don’t have to be alone in code creation — the ability to work with software engineers and developers from around the world is possibly through the Internet.
Fearless Refactoring: Refactoring is the ability to improve code without changing what it does. The ability to realize that no one should be a slave to original code is key here — that old code can become unstable and incompatible over time. Refactoring enables the developer to own the code, instead of the code owning you.
Develops Quality: In a former era, engineers thought testing was beneath them. Today, experienced engineers know and understand the value of tests, because their goal is to create a working system. Exposing bugs and eliminating them is the best way to develop stellar code. But a good engineer also knows not to waste time writing trivial or redundant tests, instead focusing on testing the essential parts of each component.
Willing to Leverage Existing Code: Why invent the wheel when it’s already working? Life is too short to continuously invent new codes and libraries. Reuse of internal infrastructure, use of third-party libraries, and leveraging web-scale services such as the ones offered by Amazon, are marks of a software genius.
Focus on Usable and Maintainable Code: Software always works better then it is well designed and user-centric. Good engineers work hard to make the system simple and usable. They think about customers all the time and do not try to invent convoluted stuff that can only be understood and appreciated by geeks. A disciplined engineer thinks about the maintainability and evolution of the code from its first line, as well. Expressive names for methods and variables can make the code self-explanatory.
Can Code in Multiple Languages: Writing FORTRAN in any language is just the tip of the iceberg. Just like a person who can speak several languages, an engineer who isn’t tied to one code language can think outside the box and is a more desirable hire. A willingness to learn new languages, new libraries and new ways of building systems goes a long way to creating a great software engineer.
Personal Traits
Software Engineer
Vision: What is the use in developing code, when it won’t be applicable a year or two down the road? Visionaries create code and libraries that are open to refactoring, and easy to use in all code languages. Being able to see the impacts of present-day decisions is paramount to building great software.
Attention to Detail: If you get angry about misspelled database columns, “uncommented” code, projects that aren’t checked into source control, software that’s not unit tested, unimplemented features, and so on, then you probably try to avoid those issues yourself. Bad installation packages, sloppy deployments, or a misspelled column name can bring down entire systems. Be obsessive about details, and you’ll be on your way to becoming a software star.
Business Acumen: If you don’t understand why your software development is so important to your clients’ livelihoods, consider this NASA story. “This software never crashes. It never needs to be re-booted. This software is bug-free. It is perfect, as perfect as human beings have achieved. Consider these stats : the last three versions of the program — each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors. Commercial programs of equivalent complexity would have 5,000 errors.” The ability to understand why all the coding is done, as it the fruit for any customer or client.
Curiosity: The best software engineers are curious about why something is done one way or another, yet with the added ability of being objective about the solutions. Many engineers we know got in trouble as kids for taking things apart to see how they worked. Putting together software is just a creative, and many software engineers also have artistic hobbies. This creativity and curiosity is required to think outside the box when designing programs. The thrill you get from making something work is what keeps you going.
Experience: If you’ve been tinkering with software programs since you were a kid, your abilities as an adult will be quadrupled. Beyond hands-on experience, you might also be addicted to math and science, and the ability to stay organized. At the same time, great software engineers also realize that they don’t know it all…the ability to continue to learn is essential in a field where change is a constant.
Discipline: Although you may have passion for your job, this love for your work and for the next project doesn’t mean that you can be sloppy. Attention to detail is important, but so is an ability to stay organized. So much bad code belongs to developers who don’t do what they know should be done.
Patience: Bugs are natural. Design glitches are normal. Sloppy coding by other engineers occurs often. Patience is a key quality for software engineers who want to work in this field.
Teamwork: Few projects are small enough or require so few skills that one person can do them well. Learning how to work as a team in college is one way to get over that “hermit” image…and working as a team online or in the office can only produce stellar projects. Successful engineers also become good communicators. They know how to write clear and concise reports and instructions, and know how to convey ideas to clients and customers.
Jermaine Quinton’s Answer
Strengthen your ability to transfer or share technical knowledge with non-technical people. Examples includes: 1) utilizing common conversational words / phrases to convey your points or 2) dumb down technical aspects to common life experience or applications (sports, local attraction, etc.)
One additional strong trait is to work on public social skills and have that like-ability factor. This soft social skill helps others to be comfortable with you no matter the subject at hand.
Mahmoud’s Answer
Aijaz’s Answer
Good technical skills are of course also essential. In preparation for an engineering career you should focus on developing a variety of skills, including:
Technical Competence: The focus is on having the necessary technical skills and ability to carry out your job. While an engineering education will provide the foundation of this knowledge, as technology is constantly advancing you will be expected continue to learn throughout your career.
Communications Skills: To be in effective engineer you must have the ability to communicate, both in writing and orally. Focus on your writing skills, consider developing a competency in a second language and also develop your public speaking skills. A good communicator has influence and most importantly, gets noticed.
Leadership Skills: Leadership is more than just the position you’re in, it’s about action. An example where you will need leadership skills is during project management where you will need to plan, set priorities, delegate, make decisions and to influence people. To help you develop these skills get involved in a civic, school, professional or church group as a volunteer.
Teamwork: To be an effective engineer you will need the ability to work in a team environment. Volunteer activities will also allow you to gain experience of team working. Problem solving: As an engineer your job will be to come up with the answers and to do that you need the ability to think, to look at the issues and come up with a solution. Good engineers are therefore to be able to think critically, analyze options and to create great solutions to problems that they have not encountered before.
Summary: To be an effective engineer you don’t need to master each of these qualities and skills. The successful engineer is well-rounded, with knowledge of the key skills and an ability to apply them when needed. It will take effort on your part, but the fun is in the learning and the reward is accomplishing your tasks and seeing the impact your work will have on society.
Ron Goloubow, P.G.
Ron’s Answer
The ability to write clear concise reports conveying solutions or problems that need to be fixed. Also the ability to communicate verbally will serve you well. Whether we like it or not people are judged by the words that are used.
Peter’s Answer
Taylor:
During my 40 year career working for engineering consulting firms, many of the new engineers often lacked one very important skill: technical writing. This skill is not often emphasized in engineering colleges. As a result a lot of students graduate with good engineering and analytical skills but are unable to effectively translate their good results into a coherent report. This can be a drag on their subsequent careers.
During my Freshman and Sophomore years in college, I was required to take one humanities course each quarter. Each course required three, 10-page essays/reports; 6 courses x 3 essays = 18 essays. At the time it was a lot of work and seemed a real hassle. But I acquired good writing skills that have served me well throughout my career. My advice is to take a number of English/and technical writing courses and gain the good writing skills.
Good Luck, Pete Sturtevant, PE