It seems like every other month someone’s out there touting the new best thing in software development or must-have software developer skills. Flutter.io, MongoDB Atlas, Apache Mesos… What are all these techs? And are they really necessary to learn in 2019?
The answer is… it depends. But while experience with these techs like these may be crucial in a handful of roles, there are some other more essential skills you should learn first.
Today’s article covers the biggies for technical languages, front-end and back-end (plus full-stack), app dev, machine learning, methodologies, and more. It’s packed with all the best technologies to brush up on to get ahead in 2019.
To get a better perspective, we also chatted to three experts about what essential skills a software developer needs in today’s fast-paced environment: Peter Hanselmann, Solutions Architect at online payment provider Bambora, Cheng Lou, Frontend Engineer at real estate agent finder platform OpenAgent, Daniel Deng, Senior Data Engineer at on-demand odd jobs platform Airtasker and Bharadwaj Sampath, Senior Sofware Engineer at global currency exchange platform OFX, Roneel Muhammad, Head of Engineering at hotel deals platformHotelsCombined.com.
Finding the best technical programming languages in 2019 is as simple as seeing where the majority of jobs lie for software developers. You’ll note Lou’s suggestions — “C#, Java, Node, C++ and Ruby” — coming up time and again. These mature programming languages are a solid base to build on.
Muhammad also points out it “really depends on the area you are gravitating towards and on whether you are keen on start-ups, small to medium-sized businesses or enterprises.”
Another good all-around language is Python. Says Hanselmann, “A language like Python is also a good language for all developers to have in their toolkit because as well as gaining in popularity it is a very useful general utility language. Even if you are not writing production code in Python it is likely to be useful to you in writing scripts, or for testing code.”
Front-end development vs back-end? Well, front-end development is about presenting the software clearly, from a UX perspective, helped by design, art, and finesse. With plenty of software being web-based, the need for front-end development skills isn’t going anywhere soon. So, what skills do you need for front-end dev in 2019?
Says Hanselmann, “Migration to cloud environments is expected to continue, so gaining experience in at least one such ecosystem, such asAWS or Azure, is becoming a must-have. Similarly, knowing how to do infrastructure as code, with a tool like Terraform, is a useful skill to have.”
Do real full-stack developers actually exist? For those striving to add the words “full-stack” to their resume, this assumes that you know enough of both front-end and back-end development to be able to divide up logic across the full system, implement the plan, and build the whole thing.
Yes, you need the skills mentioned in both front-end development and back-end development!
Deng also highlights the need to know the right framework to pair with each web programming language: “For web dev, you’ve got plenty of choices, and normally people tend to choose a language and framework based on team capability, candidates in the market etc. Ruby/Rails, Python/Django, Java/Springboot, Go/Gin, Elixir/Phoenix would be great choices because it’s relatively easy to find people with relevant skills on the market.”
A full-stack developer salary can often reflect the depth of knowledge required to call yourself a real full-stack dev (i.e. big $$$) — but a prospective employer is likely to have high expectations of you.
Solid advice on the mobile dev front comes from Hanselmann: “Someone interested in mobile development should become proficient in Swift for iOS, and for Android, Java is still dominant but Kotlin is increasing in its popularity.” Deng agrees: “For android devs, obviously Java/Kotlin would be their first choice and Swift for iOS devs.”
Hybrid app development is also popular, with frameworks like Xamarin and Ionic being utilised to go cross-platform. And then there are progressive web apps, based on browser technologies, which could be the new wave of cross-platform apps soon.
Machine learning has its basis in data science and statistics. If you want to do machine learning programming, then some background knowledge in these fields is a great start.
As for technologies use? “Being familiar with the R programming language is a must for data scientists whereas for machine learning Python is the most used language,” says Hanselmann.
Workopolis also highlights the machine learning framework TensorFlowas an excellent tech to learn for those interested in ML.
It’s not just languages and frameworks that are required skills for devs. Moreover, it’s a full view of what goes into the software engineering process. Lou explains that this involves “Development strategies and methodologies, build processes, build tools, package managers, deployment, continuous integration, release management, unit testing, version control, design software.”
Hanselmann also highlights continuous integration and continuous delivery as a key learning area in software engineering: “All developers today should become familiar with CI/CD for continuous delivery. Becoming competent with tools such as Bamboo or Jenkins, and Octopus is valuable for continuous integration and deployment.”
**Software developers are known for being problem solvers at heart.**Do you enjoy seeing a tricky situation and trying to find the best outcome through a number of steps, through dissection of the problem space?
Sampath thinks problem-solving skills are essential for any developer: “Presently anyone could learn to program easily but only a few are successful. This is because they lack the skills to solve problems in a pragmatic way. Problem-solving is something which cannot be taught but it is something which can be learnt through experience and application”
It’s these qualities that Lou touches on too: “Strong problem-solving skills and analytical thinking will benefit you a lot. It’s common that you’ll run into a new scenario which you’ve never encountered before. The only way to succeed is to problem solve.”
Of course, this is just scratching the surface. It’s important to hone your soft skills, particularly “adaptability, communication skills, and teamwork skills,” says Hanselmann. Agile is now common in many workplaces. Deng highlights that you should have a firm understanding of_“the discipline of test-driven development, the understanding of the value of throw-away-code, the concept of domain driven design.”_ And if you want to pursue a specialist career in cybersecurity, there are certain skills that you’ll want to investigate, such as Solidity if you want to work blockchain.
There’s a lot of scope for learning as a software dev, but the more strings you add to your bow, and the further you grow your knowledge in each area, the more you’ll become the headhunted instead of the job seeker — maybe even among Australia’s 50 hottest tech companies to work for.
Original article posted on The Martec: https://www.themartec.com/insidelook/essential-software-developer-skills