Getting Started in Software Development: Part IV – Long Term Strategy
In the last chapter, I talked about some of the current options when it comes to getting started in the programming field. I mentioned several development tools that you can get familiar with to decide what path you want to take as a software developer but getting started is only half the battle. As I said, the field is constantly changing and with so much evolving technology, it can be hard to keep up even if you’re working with it every day. When planning a career, there’s also a desire to have some idea of what things will look like five years down the road and where you should be in relation to them. That’s harder to do in the I.T. world but there are some things that you can plan on and overall strategies that you can use to develop a solid foundation of knowledge.
So What is Coming?
I can’t see five years into the future, especially in the I.T. field, but there are a few things I can predict from my experience over the last 20 and I offer them here for those who don’t know which way to turn with all of the choices out there. First, understand that even though new products and new versions of existing products are released every couple of years, individual companies are not that quick to upgrade. Upgrading to a new development tool is expensive even for a small company because of licensing, training and the effort it takes to upgrade existing projects. There has to be a really good reason to do it and often, there just isn’t. In 2009, I saw a company that still had much of its code in Visual Basic 6.0 which was released in 1998. Microsoft’s support for VB 6.0 ended in 2008. Yet, this company was still using it for software that ran much of its core business.
Although I’m not recommending that you take the time to learn relatively ancient languages like COBOL and FORTRAN, they do hang on because of the sheer volume of code written in them and the expense and risk of rewriting it. Another variant of the VB language, Visual Basic for Applications (VBA), hangs on because it’s available as part of Microsoft Office and is used by many non-I.T. power users who have learned enough about programming to create the necessary apps that their I.T. departments don’t have time to provide. The irony is that when those users leave the organization, I.T. will often end up supporting those rogue applications and there will be some need for people who know VBA. From those extreme examples, you can see that many of the new products coming out right now and even the products that have been out for a few years will still be in use and relevant five years from now. Your hard-earned knowledge will not become obsolete overnight.
Databases will still be around for a lot more than five years. It’s hard to get away from the need to store data somewhere and the major players like MySQL, SQL Server, Oracle and others don’t seem to be in much danger. Learning about relational database principles, stored procedure programming and the intricacies of communication between software and database will serve you well for a long, long time.
The C programming language will still be around and influencing other languages. Microsoft’s C# is easy enough to learn and studying it will introduce you to both C syntax and Microsoft’s .NET framework so that’s a decent place to start. Smartphones and other mobile devices are here to stay and will only get smarter. Google has a pretty good thing going with the Android operating system and no reason to let it go so if you want to do smartphone apps, there’s a lot of support for learning that technology right now. The programming principles that you pick up will continue to serve you in whatever comes next. In your spare time, it’s good to learn what you can about networking and hardware. It’s another part of the perspective that you need to write reliable and useful programs that will work in the environments where they’re needed. So, just dive right in and explore because all the things you learn today will be around long enough to profit from and whatever else comes along in the next few years will just extend your horizons.
Look for the Patterns
When looking at the products that I recommended and any others that you come across, look at them in terms of the larger technologies they represent. Microsoft Visual Studio is only one IDE (Integrated Development Environment). There are many others for different languages but they all have similarities like debugging tools, database management features, programming extension managers, etc.. It’s the same with database systems; various packages have different featues but most popular ones implement the same principles in different ways. Whether I’m looking at SQL Server, MySQL or Microsoft Access, I’m going to be looking at how to design and relate the tables, implement the principles of database normalization and how to transfer data in and out of the system depending on the language and IDE that I’m using.
When you start getting a feel for the commonalities between different software packages, you will know how they measure up against each other and you will also know what to expect when picking up a new piece of software that you’ve never worked with before. Also, pay special attention to concepts like database normalization and object oriented programming that work across different systems. Chances are, when sitting in an interview for a programming job, you will be asked about some of these high-level concepts in order to gauge your experience as a developer and your ability to write reliable programs. It’s essential to get exposure to different products and to avoid getting religious about the merits of one particular package or language. One thought that’s stuck with me over the years is that a programmer is someone who can use the necessary tools to get the job done. There is no single programming tool that fits all situations and the more tools you work with, the more you will be prepared to learn new ones as needed and stay employed.
Throw Away the Crutches
Some development software includes sample code or “code snippets” that you can drop into your program to make something work. It’s also common to find sample code on the Internet that the authors generously invite you to use in your own programs. It’s a rule of mine that I don’t use code like this without understanding how it works. This is important both for your education and for the security of your programs. You cannot claim ownership of a project that is filled with black boxes or code that just works without you knowing why. Query builders and statement auto-completion are also great but make every effort to understand the programming syntax itself so you’re not dependent on them. SQL (Structured Query Language), the scripting language used in many databases, is not hard to learn and there are some queries that must be written manually. When writing T-SQL stored procedures, you’ll still be working manually for the most part. When it comes to optimizing database queries and tracking down those obscure bugs that cause errors, you’ll be glad for the understanding that comes with knowing the language.
Expand Your Knowledge
In the programming world, comfort equals complacency. Remember that no matter how much you know, there is always more to learn. The technology is always changing and if you want to stay current, you have to keep up with it. If you want to provide the best solutions to your employer, your clients or whatever problems you encounter yourself, you need to have a wide base of knowledge in order to make the best recommendations. There is no one tool that is appropriate in every situation. As I suggested in an earlier chapter, take the time once in awhile to scan the job postings on the Internet to see what’s in demand. If you see something you don’t recognize or know, add it to the list.
Remember that there will always be people who know more than you. Seek these people out and learn from them whether it’s through participation in Internet forums, local user groups or a new project that stretches your abilities. Being the most computer-literate person in the office can be fun but it can also lead to complacency. As long as you’re willing to learn, you never have to be afraid to admit what you don’t know. On the other side, every day that you put off learning increases the chance that the knowledge won’t be there when you need it. That time might come when you have to admit to not knowing something that you realize you should have taken the time to learn a year ago or when you don’t meet the requirements for that great job you really want and you know you could have if you’d been more attentive. This is a lesson I’ve learned the hard way more than once.
In their book, The Pragmatic Programmer , Andrew Hunt and David Thomas use the investment portfolio as a metaphor for a person’s collection of knowledge and experience. The development of your ‘knowledge portfolio’ is essential to your success as a developer. Adding to your portfolio nowadays often requires little more than an investment of your time. The state of your portfolio will affect such things as your salary, the respect your get at work and even where you are able to live. So get out there and have fun learning!