Software developer means a person, who is responsible in an organization to create programs to develop certain technology
such as radio technology, signal processing and also creating new algorithms to solve a business problem
Software means it is a set of instruction’s which is responsible for performing a certain operation on a hardware platform
Nowadays, software development is done on a tight time frame, the job of a software developer become similar to a professional athlete
As you might know, how a professional athlete is passionate about winning an Olympic medal, the same kind of passion also required for software development to sustain, and also it requires genuine love towards software development
“The software developers who hired at Space X were asked to solve the standard Space X problem requires five hundred or more lines of code” by Ashlee Vance
Step #1: choose one technology
Many technologies exist out there but few of them are mentioned here first: choose one technology with which you are comfortable second: determine what kind of software developer you would like to become
For example, the job titles for 5G technology will be 5G software developer, 4G software developer, 3G software developer, physical layer software developer, Baseband software developer, digital radio algorithms developer
- Big Data
- 5G,4G,3G,2G technology
- Internet of things(IoT)
- Blockchain
- Quantum computing
- Artificial intelligence
- DARQ
- AS-a –Service
- Robotic process automation
- 3D printing
- Cognitive cloud computing
- Augmented Virtuality and extended reality
Different technologies will have a different kind of software developers so, be specific about the kind of developer you would like to become
Remember software developer is a general term and being a software developer doesn’t mean that you can develop any program related to any technology
Step #2:Develop technical skills required by your chosen technology
Determine the skillset that required for the kind of software developer you would like to be and to determine the skillset you can take help from any job portal website by visiting it and searching for jobs related to your chosen technology
Next, write down 2 to 3 job description from the website then analyze which skills are important for your chosen technology
As you have noted the skillset that is required for the chosen technology then at this instance a question arises that how to develop the required skillset?
Usually, people choose two ways to develop technical skills
- Going to college
- Self-learning
If you have chosen the route of going to college then it will be better to have some kind of written plan with you otherwise the majority of students end up nowhere with dept
Almost all software developer were self-taught and also it is important to know that no one will teach you anything always learning is your responsibility
The analysis of the skillset which is required for your chosen technology should be accurate otherwise you will acquire a skill set that no one wants
First, start learning one or two programming language which you have identified to develop a skillset for the chosen technology
Learning a programming language
I like to share with you some resources that might help you learn your first programming language the resources that I used to learn a C are
· Data structures using C by Reema Thareja
· Let us C by Yashavant Kanetkar
· The C programming language by Brian W.Kernighan Dennis M.Ritchie
Honestly, I haven’t studied all the books available on C in the market but I will share with you the experience
The book by Dennis M.Ritchie I find it a bit hard to understand, on the other hand, I find let us C a bit simple to understand
Data structures using C by Reema Thareja, the book is meant to teach data structures but before she introduces the data structures and algorithms she gives a short and crisp introduction to C
Note: once you learned the first programming you need to it review once in and while otherwise, you will have a hard time when you are writing a program because you have forgotten the concepts of C such as functions, and pointers(“software development is a continuous process, not a destination”)
Second: learn data structures and algorithms, being good with algorithms will help you solve problems quickly
- Solve problems and develop solutions plus, for every piece of code you write try to evaluate its time and space efficiency
- Try to write code on paper. yes of course!, Coding on a compiler gives you the benefits of syntax highlighter, the indentation of code, and quick debugging and it is also true that writing code on paper is a slow process
- Test the written code on paper because during interviews you need to write on a whiteboard so, it will be better to practice in advance
- Finally, type the paper code into the computer so, that you can evaluate your accuracy
Really good small notes
Whatever programming language or algorithms you have learned from a text, online then at that instant you need to make notes of it
You need to make really good small notes that are easy to revise quickly, if it is large and complex and takes a lot of time to revise then you would not be able to use it
Whatever notes you have made you need to revise them on regular bases otherwise you will forget and all the knowledge you gathered will become zero
The benefit of note-making is that you can recall the concept or the logic quickly but if you don’t revise it on regular bases then you need to spend more time to recall the concepts from the written notes
For example, suppose you have studied the python programming language book and made really good notes of it but if you don’t revise them on regular bases then all the knowledge you have gathered will become zero
Before the interview, you just need to revise all the concepts or problems that you have solved from the notes
Remember: at the time of the interview, you need to recall the exact same thing which you have studied
So, at the time of the interview, you just need to go through your small notes, and also you can use notes only when you have revised them on regular bases
Memorizing the algorithms
We don’t have to cram the algorithms or memorize the algorithms but understand the algorithm
Why?
Because if you understand the algorithm then it will be easy for you to memorize it
Remember: understanding is a solution to remembering a particular piece of code
If you understand it, then, in that case, you don’t have to memorize some lines of code
Third: learn some design patterns
Step #3:Build projects
“Steve Davis, the director of advanced projects at space X. he’s been working 16 hours a day every day for years” by Ashlee Vance
Finally, build some projects related to the chosen technology and the skillset that you have developed to showcase a potential employer
The project should create certain value and solves a business problem furthermore, You should create at least 4 to 5 project to show a potential employer
Suppose you build an audio plugin and showed the project to the employer then suppose if he asked you. Why you have used C/C++ instead of Matlab?
at that instance, you can’t say
everybody doing like that, “I have seen in a youtube video that is done in that way only”
No!
You can’t say like that, you need to prove it, why you have used certain thing over other. If you can’t explain why you have used certain thing over other then that means you copied and pasted it
How to write an abstract for your project?
Writing a good description of your project will be beneficial in many ways (people judge a book by its cover)
Use the framework mentioned below to describe your projects
- Introduction
- Problem statement
- How do you overcome the problem?
- Process, how you did it? with what tools?
Step#4: Need a lot of concentration/passion
Writing good software is hard so, you need a lot of concentration and require a lot of love and passion
It is better if you can switch off your mobile phone/tv/movies and other distractions so, that you focus effectively
Sometimes people who write software forget to eat when they are totally into the project they are building
Step#5:Collaboration(sharing resources with others)
It is human nature that we hide whatever we know or resources with others
But in software development, individual collaboration and trust in other members is the critical factor for the success of the software project
You should understand that by sharing and discussing what you know with others a new world open’s up and with this method you will know it better
Remember great things in software development are never done by one person but they are done by a team of people
Whatever you know and whatever you have learned you should share it by sharing you will get multiplied
Step#6: Ask the right questions
You can use online platforms like Udemy or any other platform to collaborate especially when you are a beginner so that you won’t get left alone and ask lots of questions on platforms like StackOverflow, Quora
Asking the right questions will let you find the right way to proceed
Ex: How did you do that?
Why you used this library?
You rarely take things how it is given you always ask questions
Why? Why? Why?
Until and unless you get the facts if someone said “it will be done like that only” then should you smell the danger
Being realistic lets you know, how difficult things are? Whether it is feasible? How much time will take to complete?
Always proceed from a plan and always rely on facts then depending on accidents or assumptions
Step #7:Listen to the chosen technology expert
Always listen to the chosen technology expert. read their blogs, books, watch videos of them by listening to the expert you can estimate the future better than your competitors
Step #8:develop software project management and product development skills
to become an efficient software developer one needs to master software project management and product development
why?
Because many programmer’s wastes their time struggling to achieve deadline without providing any value to the client
Being good at software project management you can handle time, energy, resources, cost, efficiently also project planning let you know whether the project is practical or an unrealistic plan
Learn some product development approaches like agile and lean
Step #9:Preparing for job interviews
Creating online presence: create your profile on the platforms such as GitHub, LinkedIn, StackOverflow, create your blog on WordPress
Having an online presence represents that you have a passion for technology and also make you more trustworthy
Note: concentrate on building a great Linkedin profile and also personal brand because recruiters will look at this when they consider any candidate
Resume: resume will be the first thing an interviewer will notice so, make it stand out from others, by matching skill set with the job description
It is always better that you apply for 1 or 2 jobs a day than applying for 200 to 300 jobs a day
Don’t execrate the skillset because the interviewer will know it so, be genuine and honest what you know
Cover letter: Read carefully the job descriptions for what skills and practices are needed for the role you are applying for? why you are the best fit for the role? How you will fulfill the role requirements? How will you impact the role you are applying for? Why you have applied for this job?
Note: don’t copy everything from the job description
Draw the connection between skills needed and the relevant experience that you have
Elevator pitch: write your pitch and practice it, tell them about what value you can provide? and how you are good to the company? Also what contribution you can bring to the company?
Leave a Reply