Everybody knows: in order to win a battle, we need to sharpen our weapons first. In last week's newsletter, we talked about the hardware equipment for a software engineer to work with. We will discuss about the software methodology and tools to prepare later. And this week, we'd like to see what are the traits to be developed to be a software engineer.
The goal for software development is to deliver quality products or projects phase by phase, and maintain the system robustly. It's not an one time delivery. According to SDLC (Software Development Life Cycle), which may be required by software companies when you apply for Software Engineer positions, coding is only a part of it. Software engineers are different from programmers. Programming is one of the core skills that a software engineers may acquire, but that's not all.
- Be self-motivated
- Be passionate
- Be focus
- Be hands-on
- Be patient
- Be collaborative
- Follow the processes
- Deliver robust code on time
Even if there is project management in process, it's better not to lay back and wait for project manager to push you to deliver certain functionality so that you may find chances to explore new technologies and new skills coming across in your area.
Find the most interesting area you want to be involved in and ready to work your butt off. Your effort will be paid back when you deliver quality work in advance and become more competent.
At one time, focus on the task and functionality you need to deliver, do enough research work and make sure the code is well-tested with normal and exceptional cases.
After receive the requirement for what to build, get your hands dirty by quickly picking up of the new project, set up the environment and start the design and code implementation.
Debugging and trouble shooting usually takes great effort than coding itself, especially in most cases, you must maintain and fix bugs from other people's code.
It's great to work as a team member since most of the project are delivered by a few developers who may focus on various areas.
There are project management process and software development life cycle process defined in each company to follow. They are important to ensure that the team will deliver quality product in time.
Usually after a new cycle gets kicked off, schedule is tight. Not only you need to make sure your work is delivered on time, but also, you need to make sure the quality of your work is promising instead of getting kicked back many times by the QA (Quality Assurance) team.
If you have the above qualification, I believe you will be competent for most of the software engineer positions in the industry.