I have been a software developer for over twenty years. This industry has been very good to me and I am thankful. I suppose it is not unlike any other industry – there have been lean years and years of plenty. However; like it or not, computers are here to stay and nearly everything is becoming dependent on them. That means that “software development” is a huge industry with hundreds (if not thousands) of niches. The need (dare I say “demand”) for developers is here to stay.
A lot of people ask me what software development is like. The see only someone sitting at a desk, staring at a computer all day and think it must be one of the more boring jobs on the planet. I’m afraid nothing has a simple answer… There are many different types of personalities, some lend themselves to development, some do not. I have only recently began to understand this. Most people think software developers are working on “word processing” software or “spreadsheet” software (or insert the thing you use most often). In reality, that is not the case. Software is running nearly everything these days – fuel injection systems on engines, flight displays on aircraft instrument panels, power plant control systems, environment controls in nearly all modern buildings, the traffic information signs on the highway, and so forth – nearly everything. I have spent most of my career working on transportation and parking control systems that communicate with radio-frequency transponder readers, large traffic signs, traffic lights, gates, door locks, traffic loops (buried in the road), microwave motion detectors, and so forth. I have found this work to be rewarding to my creative side – particularly when you see a full blown production system in operation. So, if you want to be a developer but are having a hard time seeing anything other than “gaming” to be of interest, rest assured, there is a great deal of really cool work being done by developers.
Would I make a good Developer?
Everyone is different and there is no easy answer. I am self-motivated, detail oriented, decision oriented, and learn best by reading/doing. I do not consider myself to be “artistic” but I am “creative”. Let’s break these down.
Motivation
It seems the people in the industry that go the farthest are those that are self-motivated. The software industry is always changing – there are constantly new or updated operating systems, programming languages, tools, concepts, and paradigms. Those that are motivated jump into whatever is new at the moment, absorb it, learn it, enjoy it, and seem to drag everyone else along. Those that are motivated by money, accolades, title, etc… seem to pick up the “new” only because of the “award” and only when necessary. I’m not suggesting that there is anything wrong with this. However; this personality type tends to make for an “average” developer (at best). If you are self-motivated, you are already a step ahead. A question that often answers the question (if you do not know) is: “How often to I spend my own time doing something for my job/work?” If the answer is never, you are either in the wrong line of work or are not self motivated. I spent a large amount of my own time reading career related books/articles and playing with new concepts/tools/languages to improve my skills, become more valuable, and be more productive at work.
Learning Style
The classic learning styles are visual, auditory, read/write, kinesthetic/tactile. In the early days of my career, the only way to learn software development was reading. The industry has come a long ways since then and there are now quite a few seminars, webinars, videos, and so forth (targeting the visual and auditory learners). There are also workshops and online “experiences” (private sandbox in which to work with the “thing” while following a syllabus or documentation of some sort (for the kinesthetic/tactile learners). Of course, there are thousands of books for the readers. Generally speaking; I believe the person that learns by reading has an advantage. Especially the people that can read quickly and can scan for information quickly. If you do not know what your learning style is, there are a number of online surveys that can help you. I strongly encourage you to answer this question and then focus on learning in that style. In any case, work on becoming a better reader.
Attention to Detail
I am very detail oriented and so are all of the good developers that I know. I’m afraid that knowing how to teach this concept eludes me. I have worked with many people that are not detail oriented and it is always a very frustrating experience. The Project Manager does not want to hear all the details (but often needs to in order to make good decisions), the support person cannot even think at a detail level, the customer… well, forget it – they just want it to work. I wish I had a sentence that would teach this but I do not – it is a very important trait.
Decision Oriented
There are quite a few people that are detail oriented but not decision oriented. This type of person tends to get hung up on the unimportant decisions. A decision oriented person is able to quickly determine if the item/issue/question is important and, if not, make a decision and carries on. An example would be whether or not the labels for a series of textboxes should be right or left aligned. It really does not matter so pick one and move on. I believe decision oriented developers tend to be more productive. That is not to say that they always make the right decision. I would rather have a developer that is able to make the right decision on nine out of ten items that push all ten items back to the architect, designer, or project manager – this kills everyone’s productivity.
Creativity
“Creative” and “Artistic” are often confused in the software development world – particularly when it comes to website development. It is pretty easy to spot the web sites that have been developed by or had the involvement of an artistic person. This artistic person is the graphic artist or graphic designer. They are very good at picking colors, color pallets, creating graphics, and laying out information so that it is most useable and readable. Developers are often not so good at this and that is ok. It is important to use the right tool for the job. As an example, I could spend all time trying to come up with a decent color pallet for a website and it would be marginal at best. Our graphic designer spends 5 minutes doing the same thing and it looks glorious.
Change
The world of a developer is ALWAYS changing. If you think you will spend some time learning a language and will then spend the rest of your career using that language and never have to experience a learning curve again – forget it. Languages evolve and they come and go but they never sit still. Just when you think you are good at application development (programs that run on a PC), the world of the Internet arrives and you must learn web development. Just when you think you have web development mastered, mobile devices arrive and you must learn that. It is an ever changing world that requires constant education and honing of your skills. I’ve met a number of people that do not like/do this and the world quickly leaves them behind.
Ok, you think you “fit” as a developer and you want to get started. How? Where? What? That is a tough question without any additional information. I tend to believe developers are generally using the tools/languages that they are because of circumstance more than decision. By this I mean that a person is .Net or Java or PHP (or ???) developer because they knew someone that could help/mentor them with that language, there was an opportunity (e.g. current job had an application written with X that needed changed and nobody knew how), or they just had one of the visual development environments (IDE or tool) plopped down in front of them and started working with it (i.e. Visual Studio, BBEdit, etc…). Of course, I am largely talking about non-computer science degreed people. It seems that many people started by tweaking a little HTML and then needed to do a little JavaScript or needed their computer to do something special so they wrote a batch (.BAT) or VBScript (.VBS) program and then they were hooked. Believe it or not, “making” your computer do something yourself is very creative and rewarding for those with the “programmer mentality”. With all of that in mind, I suggest you take stock of what you have and who you know. Based on those results, pick a problem to solve, tool to use, language to learn and dive in.
If you really want a simple place to start, try VBScript (assuming you have a Windows PC). Microsoft MSDN and DevGuru both have some really good starting information. You can use notepad or whatever text editor you have on your computer and do some fun little things like copying files from one folder to another, creating ‘Hello World’ scripts, or nearly anything you can imagine.
I have been using Microsoft tools for years so that is the area that I know. Microsoft is very good to and supportive of the developer community. Many of the tools are free and easily obtained (free!), there are seminars in most large cities, and a tremendous number of webcasts and information online. If you are interested in the Microsoft arena, I strongly urge you to spend some time on the most excellent MSDN website. Here you will find IDE’s (Integrated Development Environments – tools) available for free download and a wealth of information. This includes Visual Studio, SQL Server, Expression, and so on. With these tools you can develop websites, database’s, windows services, windows applications, web services, phone applications, you name it – pretty much anything. The Microsoft world of development is largely in the .Net paradigm, I won’t bore you with the details.
Learning Microsoft .NET Development
The latest version of the .NET framework is 4.0. There are a host of “Beginner’s Guides” available and I suggest purchasing or downloading one of them to get started. If you are a beginner, the step by step guides that teach the basics are the place to start. The VB.Net language is a bit easier to learn as the syntax is less rigid (the C#.Net language is case sensitive and this can be frustrating when early in the learning curve).
Microsoft .NET Development Tools
The Integrated Development Environment or IDE used for .NET Development is Microsoft Visual Studio. The latest version is Visual Studio 2010. There are many editions of this tool but the free one (Express) is more than adequate with which to get started. However; it does have it’s limitations.
Obviously, I am not answering every possible question or giving step by step instructions. Nonetheless; I hope I have helped you decide whether you are a good fit for the role of developer/programmer.
Tom says
Great post you took the time to create for others benefit. It amazes me that no comments were made to thank you.
JD says
Thanks Tom – appreciate that!