Skip to main content

Software Engineering Grads Lack the Skills Startups Need

https://spectrum.ieee.org/the-institute/ieee-member-news/software-engineering-grads-lack-the-skills-startups-need

Today’s software engineering programs teach students traditional skills tailored to large employers—subjects like software processes, software analysis, project management, and software management. But startups and next-gen technology companies expect a dynamic and in-depth understanding of the software ecosystem and its tools from new graduates. They want grads who can build scalable systems and program for large-scale, distributed, data-intensive systems that leverage cloud computing.
Unfortunately, the standard software engineering curriculum—even at top-tier schools—places little emphasis on these skills, according to IEEE Senior Member Nitish M. Devadiga.
Devadiga is the author of “Software Engineering Education: Converging with the Startup Industry.” The study, published in the IEEE Xplore Digital Library, compares the current state of software engineering education at various universities with the needs of technology-based software startup companies. Between 2015 and 2017 he conducted interviews with Boston-area startups about their development cycles, deployment processes, engineering practices, engineering roles, code management, documentation processes, hiring requirements, and infrastructure.
Devadiga also reviewed the core courses offered in software engineering programs as well as the 15 knowledge areas covered in the Guide to the Software Engineering Body of Knowledge (SWEBOK Guide), maintained by the IEEE Computer Society. Software engineering curricula are often based on SWEBOK. He presented his findings at this year’s IEEE Conference on Software Engineering Education & Training.
 “SWEBOK illuminates the development of software from its initial phase to product deployment, with a lot of emphasis on software processing and analysis,” Devadiga says. “While this knowledge is useful, it’s slowly being phased out from technology-oriented, fast-paced, Internet-scale companies. The technology used by these companies is data intensive and much different than what has been taught in universities over the last 20 years.”
Devadiga experienced this in 2016 when he joined Datarista, a seed-stage software company based in Providence, R.I., for sales and marketing data providers. He was its first engineering hire and helped lead the development of its innovative Data-as-a-Service platform. As principal engineer, Devadiga leads several critical projects and is also part of the hiring committee. Before joining the startup, he worked for MathWorks, where he led, managed, and designed projects from their inception. MathWorks employs thousands of engineers.
 “At MathWorks, I understood a lot of their engineering processes and patterns,” Devadiga says. “I worked on teams of different sizes. Then I joined a startup; it’s different because there’s a lot more responsibility. There isn’t a foundation you can build on because you are the person laying the groundwork for the company.”
“In my transition from working for a major organization to an extremely young startup, I saw the requirements to grow the business, which inspired me to help improve the engineering curriculum to better cater to students and startups,” he says.

DIFFERENT ENVIRONMENTS

Engineers at startups can wear many hats. They may do market research and contribute to new product ideas, define and design system architecture, and handle development operations. Engineers at established companies mostly work within their specialty areas. And if new hires need training on the company’s system, employers provide it.
“At startups, you’ll get your hands dirty and be the one to fix the program when there are bugs,” Devadiga says. “The company has limited cash, so you can’t take an entire year to learn what to do.”
Developing software in a startup environment poses unique engineering challenges. Because startups need to bring their products to market quickly, applications are built iteratively, with rapid prototyping. The timing of the product release is crucial because it has a direct impact on acquiring customers and affects the bottom line. Significant delays can put a company out of business. While time to market is also vital for large companies, their software releases are typically for established products, and if they run late, such companies usually have the money to survive.
Software architecture is important to both large and small companies. But engineers for startups are more likely to play a significant role in defining the system architecture. At large organizations, most software engineers don’t have much say in project architectures, Devadiga says.
When it comes to building, deploying, and running applications, companies today rely heavily on cloud computing resources such as Amazon Web Services and Google Cloud. This is especially true for startups, as maintaining an in-house server infrastructure is not feasible or scalable, Devadiga says. Startups tend to rely heavily on external software-as-a-service and infrastructure platforms to reduce the amount of infrastructure they need.

FILLING THE VOID

Devadiga outlines several gaps in today’s software engineering curriculum. For example, a significant amount of time is spent studying and practicing strict adherence to software engineering processes. But organizations, especially technology-focused ones, use simplified, agile software processes. On the topic of software architecture, he says, the curriculum focuses more on documentation than application design, and its low-level interfaces and code structure to write clean, reusable and scalable code to build the architectural components.
Students are taught formal testing methods such as static analysis, which checks code without actually running it. This helps them understand how to test software programs, but it doesn’t address the testing of distributed systems, web services, and infrastructure resiliency. Examination of these types of user interfaces and back-end systems is essential, Devadiga says.
While students are taught in broad strokes about how these architectures work, Devadiga says, there’s not much focus on the skills needed to write clean, usable, scalable code to build the components they require.
“When you join a startup, there’s a lot of emphasis on the design of the application, reusability and clean code, and the ability to conduct and undergo code reviews, as well as the ability to think of and build systems that can scale based on users and geography,” he says.
Because startups are heavy users of cloud computing platforms, it’s assumed that most software engineering students understand how these systems work—but that’s often not the case, Devadiga says. Students need a practical understanding of infrastructure architecture design patterns, DevOps, and cloud platform services like compute instances, object storage, and queueing services. The ability to create applications that can execute in services like Amazon Elastic Compute Cloud is important.
 “Students need to know these infrastructure components to design scalable solutions to today’s big data problems,” Devadiga says. “This is especially important for startups, as their entire software stack is deployed in cloud platforms.”
There are a number of online resources on these subjects that students can use to supplement their university coursework. Many are free or discounted for student members.

A SLOW PROCESS

Devadiga acknowledges changing the curriculum will be slow. “It’s not as if the current curriculum isn’t good or doesn’t work,” he says. He suggests small modifications be made to see how those help the industry. He says the Carnegie Mellon program he received his master’s from has already developed a new curriculum that fills in some of the gaps, and Devadiga expects those changes to be adopted by other schools.
“The good thing in academia is that students learn a lot of things, which gives them a better perspective on decision making,” Devadiga says. “Even if they aren’t using what they learn directly, the education they get helps them make the right decisions.”

Comments

Popular posts from this blog

The Difference Between LEGO MINDSTORMS EV3 Home Edition (#31313) and LEGO MINDSTORMS Education EV3 (#45544)

http://robotsquare.com/2013/11/25/difference-between-ev3-home-edition-and-education-ev3/ This article covers the difference between the LEGO MINDSTORMS EV3 Home Edition and LEGO MINDSTORMS Education EV3 products. Other articles in the ‘difference between’ series: * The difference and compatibility between EV3 and NXT ( link ) * The difference between NXT Home Edition and NXT Education products ( link ) One robotics platform, two targets The LEGO MINDSTORMS EV3 robotics platform has been developed for two different target audiences. We have home users (children and hobbyists) and educational users (students and teachers). LEGO has designed a base set for each group, as well as several add on sets. There isn’t a clear line between home users and educational users, though. It’s fine to use the Education set at home, and it’s fine to use the Home Edition set at school. This article aims to clarify the differences between the two product lines so you can decide which

Let’s ban PowerPoint in lectures – it makes students more stupid and professors more boring

https://theconversation.com/lets-ban-powerpoint-in-lectures-it-makes-students-more-stupid-and-professors-more-boring-36183 Reading bullet points off a screen doesn't teach anyone anything. Author Bent Meier Sørensen Professor in Philosophy and Business at Copenhagen Business School Disclosure Statement Bent Meier Sørensen does not work for, consult to, own shares in or receive funding from any company or organisation that would benefit from this article, and has no relevant affiliations. The Conversation is funded by CSIRO, Melbourne, Monash, RMIT, UTS, UWA, ACU, ANU, ASB, Baker IDI, Canberra, CDU, Curtin, Deakin, ECU, Flinders, Griffith, the Harry Perkins Institute, JCU, La Trobe, Massey, Murdoch, Newcastle, UQ, QUT, SAHMRI, Swinburne, Sydney, UNDA, UNE, UniSA, UNSW, USC, USQ, UTAS, UWS, VU and Wollongong.

Logic Analyzer with STM32 Boards

https://sysprogs.com/w/how-we-turned-8-popular-stm32-boards-into-powerful-logic-analyzers/ How We Turned 8 Popular STM32 Boards into Powerful Logic Analyzers March 23, 2017 Ivan Shcherbakov The idea of making a “soft logic analyzer” that will run on top of popular prototyping boards has been crossing my mind since we first got acquainted with the STM32 Discovery and Nucleo boards. The STM32 GPIO is blazingly fast and the built-in DMA controller looks powerful enough to handle high bandwidths. So having that in mind, we spent several months perfecting both software and firmware side and here is what we got in the end. Capturing the signals The main challenge when using a microcontroller like STM32 as a core of a logic analyzer is dealing with sampling irregularities. Unlike FPGA-based analyzers, the microcontroller has to share the same resources to load instructions from memory, read/write the program state and capture the external inputs from the G