10 Things You Should Have Learned With Your Software Engineering Degree—or at Coding Boot Camp—but Probably Didn’t
In many fields, this is an all-too-common circumstance. You go to school for years and then walk out with a newly printed diploma. You are under a mound of unwritten regulations and day-to-day complications that no one warned you about when you first start a job.
Programming jobs are no exception, even with the development of coding boot camps, those expedited courses that promise to teach you everything you need to know about programming in a few months.
It doesn’t matter if you have a bachelor’s degree in computer science or a boot camp certificate. You’re most likely not ready for your first job-building software. Whether or not you acquired them in school, the basic skills listed here can help you start doing honest work with less hand-holding and fewer mistakes. Technical talents, habits and mentality, and soft skills are the three areas we’ve broken the list into.

Technical abilities
Any new developer’s toolkit should include these five technical abilities. It’s time to clean up on your skills if you didn’t learn them at school or boot camp:
1. Version control systems are number one.
Every graduate of any institution should monitor computer source code using Git or a similar version control system and write programs in languages like Ruby, Python, or Java. Every programmer should properly use Git to establish repositories, modify and commit code, and branch and merge as part of a project workflow.
Having a decent workflow behind your work affects how you write code thus, learning this skill isn’t just a practical issue. Version control is used in continuous integration (CI). You write code in smaller chunks that are easier to handle. Refactoring code without version control can be harmful.
Version control systems are commonplace in software development teams these days, and a new employee who doesn’t understand the fundamentals of Git will be at a disadvantage. Knowing about version control systems also means you’ll avoid working for a company that doesn’t utilize one.
Pro Git by Scott Chacon is a great place to start learning Git. It’s accessible in print and online for free. Version Control by Example, by Eric Sink, is also accessible online and provides a more comprehensive overview of version control ideas and techniques.
2. HTML and CSS fundamentals
If you work in app development these days, you’re probably working on online apps, whether or not they’re accessible to the general public. It’s assumed that you know how to make a functional HTML document, just like you know how to make a Microsoft Word document (or a Google Doc). Working knowledge of cascading style sheets (CSS) is now required in addition to HTML knowledge.
Apart from comprehending the mechanics of well-formed HTML documents, the crucial knowledge here is about semantic document markup and how to separate document structure from the display.
3. Developer toolbox: IDEs, editors, and command-line utilities
A carpenter would never finish an apprenticeship knowing only how to operate a hacksaw, so graduates of computer science degrees and coding boot camps must know more than Notepad and Pico.
Programming tools allow programmers to change source code and other development resources to make their lives easier—often significantly easier. Every programmer should be familiar with the Unix command line and standard Unix tools such as the bash shell, find, grep, and sed. Starting with Windows 10, even Windows programmers can use these features.
Brian Hogan’s Small Sharp Software Tools is a great place to learn how to use the command line.
4. The use of regular expressions
Regular expressions are a sophisticated mini-language that allows programmers to identify patterns in text strings in ways that simple string searching cannot. Regexes (as the name is abbreviated) have a terrible reputation in the programming community, thanks to developers who appear terrified of the syntax.
Ignore the naysayers. If you need to confirm that a part number in a database has five letters, a dash, and a digit, for example, you’ll use a regex like /[A-Z]5-d$/ to validate the pattern. If you’re unfamiliar with regular expressions, they can be challenging to read—but you didn’t come out of the womb understanding what f = (9/5) * c + 32 meant either.
5. SQL Server

The days of storing data in flat files are over. SQL, or Structured Query Language, stores and retrieves data in a database.
Someone once mentioned to me at a meetup, “I learned all of my SQL skills on the job. Why do computer science degrees offer databases as an elective? What kind of system doesn’t make use of a database?”
SQL requires you to learn a different way of thinking about problem-solving because it is a declarative rather than a procedural language. Every programmer should know how to do SELECTs, INSERTs, UPDATEs, DELETEs, and the fundamentals of database normalization.
Another significant benefit of understanding SQL and regular expressions is that they force you to think metaphorically. SQL is all about operations on data sets, not loops and branches like imperative programming. Regexes are used to discover patterns in text and decide which sections of the data to use and transform. Introducing new paradigms and thinking methods can help developers improve their problem-solving abilities.
Several SQL tutorials are available online, but I recommend SQL Zoo and Allen Taylor’s SQL For Dummies. I recommend Stephane Faroult’s The Art of SQL next to your SQL education.
Mindsets, habits, and soft skills are all critical.
It takes more than just knowing the suitable languages and tools to be a good programmer. More than only specific software engineering and languages are required of new programmers. They also must understand how to talk with other software developers, stand just on the graves of giants, and avoid errors in their job. That’s when soft skills come into play:
6. Written communication that is clear and effective
Programming is more than just writing code in a programming language. For your projects, you must also prepare release notes. For version control, you write commit messages. You create tickets to report system flaws. All of these jobs and many others necessitate clear and effective communication in English (or another human language)—a skill that computer science degrees rarely emphasize.
The ability to communicate confidently and concisely in English Writing becomes even more critical as more jobs become remote and more teams interact via email, collaboration software like Slack, and scheduling systems.
7. Making use of existing libraries and code
New developers learn to handle problems by building their code, but savvy developers recognize when to use existing code to tackle common software issues. When collections of verified, debugged, and tested correctly code are readily available, no programmer should bother trying to construct code to retrieve the mail server from a URL, for example.
(See my piece on Seven Things You Should Never Code Yourself for a look at some of these everyday coding activities.)
8. Defensive programming is number eight.
Even the most skilled programmers are flawed; most of the world is outside our control, and things continue to go wrong somehow. Coming to terms with these simple truths is the goal of defensive programming.
We wouldn’t have to check file openings for success, assert those customer IDs are valid integers or even test our code to ensure that everything functions correctly if things don’t go wrong.
Compiler warnings are beneficial tools that simplify programmers’ lives, not annoyances to be avoided. In reality, savvy engineers enable as many automated quality checkpoints as possible to discover potential bugs in their code. Every programmer should understand why all PHP programs should begin with error reporting(E ALL) and why all JavaScript projects should utilize the “use warnings” directive.
Having a security attitude is another crucial part of defensive programming. In a world where most programs are web-based, programmers must address the risk of harmful input that isn’t only unexpected. SQL injection attacks, for example, rely on applications that consume untrustworthy external data without question.
9. Troubleshooting
All programmers should debug their code using an interactive debugger or by liberally scattering print statements throughout it. The ability to hunt down an issue through incremental refinement is just too vital for programmers to acquire by winging it.
Specifically, the ability to narrow down problems to discover root causes is linked to communicating successfully. Finding the root of the problem is necessary for writing an effective bug report. Still, it also necessitates the ability to speak clearly so that people understand what you’re talking about.
10. Collaboration
Few coding jobs allow you to work entirely independently, and even those who do wouldn’t benefit from knowing from others. Your code will constantly interact with that of other programmers, and in many circumstances, will be mixed in your code with that of others. No matter how talented they are, programmers who can’t cooperate on projects with others will have severely reduced or even negative productivity, diminishing their worth to their organizations.

Working with the current code is a bonus.
Class assignments in Computer Science school are often new, greenfield projects. In the actual world, things aren’t like that. New software engineers are assigned to solve ticket #8347 in the bug tracking system as soon as they are hired. Following that, they must add a minor new feature to an existing system with a well-established codebase. If you’re lucky, you’ll be able to write new code to answer new challenges months later.
Here’s one-way colleges could make assignments more like the real world of software development, whether in a Computer Science degree program or a programming boot camp: Following the completion of project #5, Alice would conduct a review of Bob’s code as assignment #6, noting what is excellent and what could be improved. Then, for task #7, Alice would extend Bob’s code’s capabilities.
If the original software is frail or faulty, it is up to Alice to repair it—and, of course, criticizing Bob or his code is strictly prohibited.
Contributing to open-source projects is another opportunity to practice these abilities. Working with open source necessitates many of the same abilities as those covered in this article:
- Controlling the versions
- Working in a distributed team
- Communication via the written word
- Projects with a release date
- Using code that already exists
- Using current code as a foundation
- Development that is based on tests
See my post, The Beginner’s Guide To Contributing to Open Source Projects, for ideas on starting engaged with open source.
Additionally, we’re all learning as we go!
Consider this final statement as a nugget for a Computer Science commencement address. New developers must understand that we’re all still learning and that asking for guidance is fine. I’ve met new software engineers who are embarrassed to look in manuals or the internet for old syntax or specific function calling standards.
Don’t be that way. As a software developer, it is not your duty to memorize the sequence of arguments to the substr function. Don’t worry; with enough experience and time, you’ll find that you’ll need to consult the instructions less and less.
However, obtaining answers online and putting them into your code isn’t the only option. As far as looking up solutions to queries on StackOverflow is concerned, it’s critical that you fully comprehend what you’re cutting and pasting into your code. Avoiding straight cut-and-paste operations from online sources is one trick. Retype it by hand instead. This ensures that you read every character you enter into your program.
I hope this article has inspired some ideas and places for future exploration if you’re a novice developer, whether you’re fresh out of school or making a career transition later in life. If you’re a seasoned software engineer, I hope this list has reminded you of something essential or inspired you to volunteer to help junior devs in your organization or community.
Finally, I’d like to recommend two books to all software developers: Steve McConnell’s Code Complete, 2nd Edition, and Andy Hunt and Dave Thomas’s The Pragmatic Programmer: From Journeyman to Master. Both books should be on every programmer’s bookshelves since they include timeless information about the software development discipline.
About Enteros
Enteros offers a patented database performance management SaaS platform. It proactively identifies root causes of complex business-impacting database scalability and performance issues across a growing number of RDBMS, NoSQL, and machine learning database platforms.
The views expressed on this blog are those of the author and do not necessarily reflect the opinions of Enteros Inc. This blog may contain links to the content of third-party sites. By providing such links, Enteros Inc. does not adopt, guarantee, approve, or endorse the information, views, or products available on such sites.
Are you interested in writing for Enteros’ Blog? Please send us a pitch!
RELATED POSTS
Mastering Cloud Bills and Database Performance with Enteros: A Cloud FinOps Approach to Cost-Efficient Scalability
- 13 May 2025
- Database Performance Management
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Optimizing Amortized Cloud Costs in Media and Entertainment: Leveraging Enteros AIOps for Blob Storage and Performance Efficiency
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Enhancing Real Estate Operations with Enteros: Database Performance Optimization and Cloud FinOps Efficiency
- 12 May 2025
- Database Performance Management
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Streamlining Insurance Sector Operations with Enteros: Leveraging Resource Grouping and Observability Platforms for RevOps Efficiency
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…