Jump starting a career in software development and design

, a 5-minute piece by Dev Mukherjee Dev Mukherjee

While pursuing formal education in disciplines of software development and design, it's daunting to think of what might be expected of you in your first job. Curriculum requires you to work on smaller isolated problems (writing programs, designing isolated interfaces), mostly on your own and you might often wonder what is it that you need to know so you can become part of a team.

We've been on the hunt for software engineers and user interface designers for the past year and I thought it would be worthwhile to share our point of view.

For anyone joining a team it's all about understanding the rhythm at which group works. You are most likely going to join an existing project and be asked to work on simpler portions (while you get used to the tools and processes) before taking on heavier tasks.

Understand the tools you use

Software systems are complex organisms. When you venture out you are extremely focused on building your own application. It's very easy to take for granted the tools and infrastructure you depend on to deliver your product. It's thus very important to take time and understand the tools you use.

These are exercises that will allow you to explore what's under the hood and assist your critical thinking.

Engineering work flow

Software engineering teams use version control (I am particularly referring to Git in this instance) to collaborate and keep an audit trail of what's being pushed into the product. A product manager will rely heavily on using work flow such as pull requests, tagging to manage releases of the product.

Familiarising yourself with these concepts will allow you hit the ground running and fit right into the work flow. A good way to do get started is by using source control while working on university assignments.

In a world where infrastructure can be commanded by code, software engineering teams employ methods like Continuous Integration and Continuous Delivery to rapidly test and deliver product. A key habit that drives is Unit testing and all popular languages provide frameworks to test your code and is one of the best software engineering habits you can develop.

Leaving traces

Larger problems are broken down into smaller pieces. Systems are built over time and are worked on by multiple people. Whilst the most exciting part about problem solving is expressing your solution in code to see if it works, it's rather important to document your thought process in line.

Languages like Python have very formal definitions of documentation which not only helps your work with others but can feed into automatic documentation generation with tools like Sphinx.

Approach

It's important to get into the habit of solving problems properly rather than quickly. Spend the time upfront in thinking about a problem, research, discuss with your colleagues and come to an optimal solution. Software projects suffer immensely if poor solutions make it to market, specially on sensitive topics like security and privacy.

Portfolio

You are as good as your last project. Nothing can communicate your technical and organisational abilities better than a portfolio.

And if you are a keen developer or designer looking to join a software development team, do check out our Jobs section and drop us a line.

Previously: a 3-minute piece by Dev Mukherjee Dev Mukherjee

Open-Source at Anomaly

Read more