As many of you have been wondering which path to go under as a CS Engineer, picking the right field can be a tough one!
I've been a programmer for the last 6 years, doing the run-of-the-mill corporate grind for the past 3.
Here's my insight: Your happiness in programming probably depends on the job environment. If you're working for a gaming company, I've been told to expect to work long, hard hours, but in a laid back environment. That is, the people are friendly, nice, generally young, and do fun stuff together, even at work. If you work for a big company, your hours will probably be pretty flexible, and you won't be expected to work all that hard. There's enough bureaucracy to give you a steady, but uninteresting job. You may or may not need to be called for support at 4am, but probably not. If you're at a small company, you'll be the go-to-guy for everything. You know programming? That means you know everything else, and can do everything. You'll feel very useful, and do a wide enough variety of things to keep interested. But you'll also likely be the go-to-guy at 4am when there's a problem. Obviously, that's some massive generalization-- there are always exceptions.
For me, programming is made more fun by writing more tangible things-- desktop applications, web pages-- stuff like that. Doing more obscure things like writing a linker for code compilation, or writing data analysis code, or whatever, isn't as fun, because it's less "hands-on". You won't find much use for it in your everyday life, unlike writing web pages, where you can use your on-the-job skills to also do fun personal projects. Cyber Security? I haven't has much experience with it. I haven't been overly impressed with my company's networking group, but that seems to be because we either get "the incompetent guy", or we get they guy that's ALWAYS too busy. And from what I've seen, they're VERY frequently on call, and called in to work weekends, because that's the only time of day when people aren't using the network, and makes it the only time that changes can be made.
So my vote is for Software Engineering, but there are a lot of variables involved. You also have to understand that you can not be an excellent Cyber Security Engineer without being a master software engineer, or at least it give you an easier time in CSE. Full Stack software engineers have to know pretty much all.
I will give you the break down in jobs and salary:
Cyber Security Engineer:
Engineer, implement and monitor security measures for the protection of computer systems, networks and information technology
Identify and define system security requirements
Design system security architecture and develop detailed security designs
Prepare and document standard operating procedures and protocols
Configure and troubleshoot security infrastructure devices
Develop technical solutions and new security tools to help mitigate security vulnerabilities and automate repeatable tasks
Write comprehensive reports including assessment-based findings, outcomes and propositions for further system security enhancement
Provides courteous and prompt service to all internal and external customers. Prioritizes and addresses requests and assignments in a professional manner to develop cooperative relationships and to ensure that customer confidentiality is secured.
Identifies opportunities and recommends methods to improve service, work processes and financial performance, e.g. expense management.
Assists in the implementation of quality improvement initiatives.
Assists co-workers in the completion of tasks and assignments to ensure continuity of service. Orients new co-workers and actively supports teamwork throughout the organization.
Performs other services as required.
Bachelor of Science Degree in Computer Science, Cyber Engineering, or equivalent
Information Security Industry certification desired from recognized authority such as ISC2, GIAC, and/or ISACA. Examples of recognized certifications include CISA, CRISC, CISSP, CISA, GSLC, GSNA.
2+ years of security engineering experience.
Proven working experience in building and maintaining security systems
Detailed technical knowledge of database and operating system security
Hands on experience in security systems, including firewalls, intrusion detection systems, anti-virus software, authentication systems, log management, content filtering, etc
Experience with network technologies and with system, security, and network monitoring tools
Thorough understanding of the latest security principles, techniques, and protocols
Familiarity with web related technologies (Web applications, Web Services, Service Oriented Architectures) and of network/web related protocols
Ability to effectively communicate with a diverse group of individuals and deal effectively with interpersonal relationships.
Must possess a high degree of professionalism including the ability to maintain high levels of confidentiality.
Must be highly organized and capable of performing multi-tasking in a fast-paced environment.
Critical thinking skills are essential.
Light to moderate levels of lifting, kneeling, bending, sitting and walking is required. Lifting requirements will not typically exceed 25 pounds. This position may be required to travel and perform after hours/weekend assignments on an as needed basis. Availability to co-workers is required on a 24/7 basis.
Average Salary: $116,000
Bachelor’s Degree in Computer Science or related field
Minimum 3-5 years’ experience with Java or any other OOP language technologies
Strong grasp of software design patterns and effective development methodologies