Errol Hassall

View Original

Professional Software Engineer

What is a professional software engineer

Software engineering is a funny field, it’s complicated and as a result, you would expect some form of education requirement to practice it. Much like law or medicine or other engineering fields, they all require people to pass a specific set of requirements and to meet a set standard. We do not have this in software engineering, and as a result anyone can be allowed in as long as there is a company willing to hire them. There in lies the problem, most people won’t have any formal education or training, they won’t have to meet any sort of requirements. This results in poor overall professionalism in the workplace. It is by no means a way to say that you need a university degree and self-taught or a short course is bad, and you can’t be great. No, it’s simply the lack of time and experience that results in people not knowing what they don’t know. I regard university as something that most people do not need, however, the one thing it does do, it forces you to commit to a set course for x number of years meeting certain requirements along the way. University may teach you a lot about nothing and be very outdated. However, it does produce people who have at least followed the path, this is essential. It raises the barrier of entry not to an elite level, just to a minimum standard. You wouldn’t want any random person working on the electrical wiring in your house. They might start a fire or burn your house down as a result of a poor job. This is why there are requirements to be an electrician. What trades do best is 3-5 years of supervised on the job training from an experienced tradesman, with minimal book learning. You have a certain path to follow with your course work, which is mostly ticking boxes and understanding the basics. The rest is learning on the tools, which is precisely what we should have for software engineering. I have said it many times, but you will learn the most from doing, and you do the most when you have a 9-5 job, working in a team of experienced developers. This is not the norm, so I digress. All of this is not to say you can’t be a professional, it’s just not taught well outside the university setting. If you don’t come from the university path and even if you do, you need to actively work at being a professional in the workplace. The nature of a 3-5 year university course does stress a greater level of importance when it comes to quality. Compared to a 12-week intensive bootcamp, the skills you come out with are entirely opposite to that of university. For the bootcamp, you will understand modern technologies and how to put something together in a short period of time. In university, you spend years learning about theory, having it drilled into you the quality that is required to achieve great marks. University doesn’t do much right, but it does spit out people with a higher emphasis on quality.

What is a professional?

A professional is someone who does not cut corners, someone that prides themselves on writing clean code, testing that code and working in a respectful and productive manner. A professional is someone you would love to have on your team because regardless of anything that happens, they will get the work done to a high standard and not complain about it. A professional won’t blame others for their mistakes, they take accountability for everything they do and won’t settle for second best. A professional is someone who produces high-quality work no matter if they are at home, the office, or have 1000 eyes staring at their code. A professional is the ultimate workplace champion. A professional is someone you must have on your team if you want to deliver high-quality software that will last. Many businesses fail because they don’t have professionals in their ranks.

Why is it a must

When you think about all the people you could work with, would you want to work with someone who blames others, writes poor code and cuts corners? No, you also wouldn’t want this in the builder who is building your house. You would want a professional who doesn’t cut corners, who builds it water tight and to specification. This is the same in software development, you most likely won’t put anyone at risk of death or injury; however, you should still treat your work as something to take pride in. The work you produce is a reflection of you. If you produce shoddy code and cut corners, you won’t be respected, and you will not progress far. Your career is all about your reputation, a good reputation will take you farther than you can imagine. I have had it in the past that a reputation as let me skip parts of an interview process or the entire process. A good reputation takes a long time to build and can be destroyed in seconds. You must take pride in the work you output, if not for yourself, but for your team. You exist in an ecosystem of people all working to reach a goal. If one person is constantly pulling everyone back, then they will begin to despise you. You will not be liked, and eventually, you will be removed from the team. You must strive to be an effective member of the team, a professional member of the team. Others around you will drop to the lowest quality of the team, so it’s your job to raise this as much as possible, to set an example of what the team should be doing. The more you practice this skill of professionalism the better your career will be, the easier it will be and the more respect and enjoyment you will get out of your career. People will want to work with you, they will ask for you to be in their team on new projects. Your boss will put you in projects that are more interesting or have higher stakes for the company, where the action is! All these things come from being a professional, holding yourself accountable, and striving to be better each day. No matter the background of your career, it's never too late to start being more of a professional. It doesn’t matter if you had a university degree, self-taught, change of career, or did a short course. You can be unprofessional and professional from all background, it's up to you to be a professional, carry yourself above medicare standards and produce work that you are proud of.

How do you become a professional

It takes work, hard work and dedication, but you can do it, anyone can. Where most people would simply push their code, you strive to have it well tested and all edge cases sorted. You don’t accept bandaid fixes, instead finding the root cause and fixing that. You refactor code when you see that can be improved, nothing major, just little bits here and there. Furthermore, you always leave the code better than you found it, for you know that code rots over time. Being well-read when it comes to the field also helps you be a professional. However, mostly, it just takes work. Work which most people don’t put in! Most people are too lazy, or don’t care enough to do a good job, they just get the job done. At the end of the day, you can choose to become a professional, but it will take hard work. Your reward will be producing high-quality code, well-tested code, and having the reputation that you always output code this way. The reputation will take a long time to foster, but once you have that reputation you will be known as the Professional who always produces great work. You will be selected for teams and jobs that are the most interesting or require the best people. This is where you want to go, this is where the professional path takes you!

Where can you go?

The sky is honestly the limit when you are a professional, you will find easy to come by. You will stand above the rest, you will skip steps in the interview process, you will get the best jobs. Being a professional is the fast track to a great career, but it takes effort. Being a professional is something you have to do every day of your career, but if you do it, you will go far. If you took two people, both with the same experience, you know who would get the job, the person who is more professional. It's all well and good to have delivered a project for a big company, but having that professional, will not only deliver the project, but they will lift others up. You might even take someone with a lesser resume if you think their influence on the team would have a greater positive impact than someone who is technically better. This is the power of a professional attitude to your work. A team of professional programmers can move mountains, these are the elite of the elite when it comes to delivering projects. If you ever get a chance to work on one of these teams, this is a team to treasure.

The answer to where it can take you, is that it can take you to the moon and back if you let it. The world lacks professional software engineers, if you are one, you will stick out and get all the work.