…Is it for the glory? 😊
About 20 years ago it must have been mainly for the brains. These days the pay weights significantly towards the choice of becoming a software developer. A software developer in his/ her 30s could earn annually as much as a mid-50s established CEO – or more.
However, even for that pay, we, the people ‘from the other side’ – e.g. business consultants, lawyers, entrepreneurs, financiers, auditors etc. – can sometimes hardly understand the choice. Why would someone sit for hours in front of the computer and… write some numbers and formulas?
… eventually, we got to get it: it is a means of creation. It IS creation.
TO CREATE SOMETHING.
When you create something with your hands using a palpable material – such as clay or the painting brush or the spray container that gets you the graffiti on the walls -, creation is visible by others as you mean it and others can see it grow step by step in an understandable way.
However, when you create something with the keyboard, it is not understandable by the general public until it works. The magic is seen at the end and generally in a given context.
So, there! This must be the attractiveness of becoming a software developer: the magic of creating something. Intrinsic to all humans is to create and the smartest brains of the planet create via writing code.
Software developers use programming and design knowledge to build software that helps people or institutions achieve certain objectives. They also test and deploy that software based on the specifications they have received.
Today, software developers are some of the most vital people in the many aspects of the economy. Software isn’t just codes, video games and apps, it’s the driving force of every computerized device on the planet.
Specifically, What Does a Software Developer Do?
Software developers design, program, build, test, debug, deploy and maintain software using many different skills and tools. They also help build software systems that power networks and devices and ensure that those systems remain functional.
Their job may also involve meeting with clients to determine the needs for a software solution, which will help them design the final product.
While software developers work in a wide variety of industries, these days many are freelancers. Depending on the setting, a software developer may work alone or on a team with other developers and programmers. In general, larger companies tend to have teams of developers due to the complexity of the software they are designing. Outsourcing teams of software developers is quite frequent these days, as well, as one can find multiple skills and availabilities when you outsource or lease software developers.
Who would be the winner of a ‘happy with my work even after 20 years’ contest if implemented globally within the software engineers?
… We would place our bets on several baskets, yet for sure a significant part would weight on the embedded software developer basket. While the rest of the professionals – say, business managers, artists, lawyers, doctors etc. – might believe that the only thing software engineers need to know is how to code and to stay updated to the latest technological developments, there is a huge part of their work that is kept in shadow – intentionally, dare we joke? J So that the competition does not become too tight? J – and that is the source of immense work satisfaction: diversity of tasks throughout one’s career.
The keywords that describe best what an embedded software engineer does are plenty – all conveying towards something that most of the employees of the world aim for. Novelty. Exercise vocation. Create. Connect.
Our 20-year experience in the field made us believe that embedded software engineer is a vocation. It is known for being a niche discipline within electronic engineering, more so than, say, desktop development. Yet it remains highly competitive at all levels. This is, with high degree of certainty, what makes an embedded software developer have a genuine passion and interest for technology and troubleshooting technical problems.
Why do most talented IT engineers become embedded software developers?
IoT devices are now part of our everyday lives and the general pace of technological change and innovation continues to gather unthought-of speed. There has never been a more exciting time to be a part of the embedded software community and become a professional in the field than the days we live in.
The demand for advanced and intelligent technology is largely consumer-driven and, as such, companies adapt their products and create new ones continuously. The need for qualified, experienced embedded software developers becomes implicit… and strong.
So what does an embedded software developer do?
He or she is responsible for designing, developing, optimising and implementing the software that is programmed into devices built around a microprocessor. They write code to solve problems and implement systems that make a physical hardware device work through software. From the concept right through to delivery; from the briefing, writing, testing and fixing stages to final release: these all fall into an embedded software developer’s ‘to do’ list.
To become an embedded software developer one needs a degree in computer engineering or a related field, as well as expertise in C/C++ programming, software configuration management (using tools such as Perforce, Git or SVN) and knowledge of specialised techniques for embedded programming.
Additionally, we, at VON Consulting, recommend for such positions that the future embedded software engineer in a client company’s team has a proven ability to read electronics schematics and troubleshoot problems and, ideally, experience with project management and software development life cycle.
Certainly, the basics presented below are a requirement, and we list them for the sake of accuracy that an embedded developer would always fancy:
- Communication protocols
- Design patterns
- Basic electronics
- Build environments
- Concurrent/parallel programming
- Real Time Operating Sytems
- Microprocessor and microcontroller fundamentals
Similar to business intelligence analyst and DevOps engineer, an embedded software engineer would preferably feel comfortable collaborating with other teams and third parties – e.g. clients. Ideally, they participate in briefing meetings with the latter, following that they will be proposing solutions and keeping them informed as the project progresses.
Individualistic embedded developers are also good assets to companies, working on specific topics, yet the preference goes towards team-players. Like almost anywhere else in our interconnected world.
… And it is, actually.
It is not us alone saying that, but the large number of young and brilliant engineers looking for a career that combines a passion for data with the ability to positively influence and support an organization.
Of the ‘young’ jobs that have been opened in the past decade for the talented engineers, business intelligence analyst is one. A very trendy one.
What does a business intelligence analyst (BIA) do?
He or she analyzes complex sets of data within a company to determine recommendations for business growth and improvement. Knowing how to properly collect and interpret data can have a significant impact on the future success of a business.
The practitioner who finds this job suited for the talent and knowledge accumulated is generally an engineer by education and a businessperson by formation and experience. Not only does such a person review data to produce finance and market intelligence reports, but also detects patterns and trends in a given market that may influence a company’s operations.
While the business intelligence analyst position is just one of many roles related to BI and analytics in large organizations, the number of such positions and their titles and responsibilities vary based mainly on the maturity level of the company’s data management programs and, mostly, on the essential need of BI that the respective industry requires.
Some multinational companies acting in tech might have BI architects, BI developers, BI analysts and other internally-derived titles.
Generally, a BIA works between IT and business operations; sometimes with finance division, as well. It comes without saying that a BIA works with a variety of people – both within the company and outside it – and with key stakeholders. Such an analyst monitors permanently the essential sources of information, the strategic technological conferences and international events, to remain aware of the business trends and industry at large. A BIA professional might need socializing skills, good communication skills and could have a large network that he or she can access and interact with.
When we recruit for BIA positions, we look for practitioners and consultants who have proficiency in understanding data and doing data modeling, profiling and validation and who gained significant expertise in using data mining, query, analysis, visualization and reporting tools.
Familiarity with database management systems and data warehouse technologies is also required, as well as critical thinking and problem-solving abilities.
The beauty of such a position lay with the fact that the person becomes a key provider of strategic information that the entire business relies. An engineer as well as a business professional; a statistician as well as an analyst.
To the always-frequent question whether a BIA needs to know how to code, our experience in recruiting for such positions showed us that a BI analyst’s familiarity with coding languages like Python, Java or R is often required.
Imagine a team of the smartest people you could find – software engineers. They work on various project sprints – say, a new product development – and you are sure the results will be amazing, as you have selected the best ones there were.
Yet how do you make sure that the operations are developed within the best time frame (e.g. could they work faster?… ) and how do you integrate their work with the deployment team?
… here is where the magic brain and hands of a DevOps engineer come in the game. An interface between development and operations, as the name gets self-explanatory: making sure that everything is geared towards releasing updates as efficiently as possible.
Basically, DevOps is the project manager’s, the facilitator’s or the event manager’s counterpart within the software division.
Ultimately, his or her work is about collaboration and removing barriers to it.
On the technical side and more concretely, DevOps engineers build, test and maintain the infrastructure and tools to allow for the speedy development and release of software.
In a nutshell, DevOps practices aim to simplify the development process of software.
When you invest in a strong DevOps engineer – or DevOps teams depending on the size of your organization and the scope of your project – you will find that:
- The various strands of your development and IT functions work better together
- You can release updates to your product more quickly
- You can automate a chunk of internal processes and free up hours of time that could be spent on other tasks
Even if organizations do not deploy frequently new products, a DevOps is still needed to create and release regular updates to the existing products much quicker than using the more traditional ‘waterfall’ development model.
How do you know that the DevOps engineer is doing his/ her work perfectly? It is when you do not notice that anything has changed . In today’s fast-paced environment, this type of function (read: ‘development’) is quickly becoming a necessity rather than a luxury.
Should a DevOps engineer know how to code? Or better, should he/ she have good communication skills?
… well, a DevOps practitioner needs not necessarily know how to code and needs not be an engineer in the traditional sense. Ideally, however, a DevOps engineer is an IT professional who works with software developers, system operators and admins, IT operations staff and others to oversee and/or facilitate code releases or deployments.
So he/ she needs to understand the IT infrastructure, as they have to improve it (sometimes, even to design it) and they also have to do performance testing and benchmarking – that is, evaluating how well and reliably systems run. These can be considered day-to-day responsibilities of a DevOps practitioner. Engineer, that is.
What else does a DevOps do? While optimizing release cycles, they also monitor and report further, aiming to reduce ‘time to detect’ (TTD) errors and ‘time to minimize’ (TTM) them. Last but not least, they do automation of key processes and keep a sharp eye on security issues.
… kind of cool, right?
Think further when selecting your DevOps engineer: he/ she will be running meetings, setting the schedule for releases and leading the review process, as well as getting hands-on with automation, complex software tools and infrastructure design. All these tasks indicate that one should look for impeccable organizer with strong communication and interpersonal skills. They should be approachable and empathetic. Sometimes, this trait might weight more than their technical skills.
So, find your ideal DevOps engineer and keep him/her close to your company. They are rare and they are precious, especially if they have about 12-15-year experience in the field and are uber-disciplined and charming.
As we said, they are worth their weight in gold.
… one last point: they should understand what an ‘agile’ business means these days.