Category Archives: Uncategorized

Why I am AGAINST Net Neutrality

No, I’m not saying this just to get a rise out of you, I am actually against net neutrality and here is why:

Net neutrality is this principle that says internet service providers should treat all data on the internet equally. I actually like this idea; I agree with it; I hope internet providers choose to treat all data equally. I agree that it provides greater freedom and opportunity to people using the internet and building businesses that utilize the internet.

But, I am not in support of sacrificing one entity’s freedom for the “greater good” of the rest of the world. Freedom is freedom. Internet service providers should have every right to be complete jerks and charge for the use of their services however they see fit.

chained Why I am AGAINST Net Neutrality

No matter how much I generally despise ISPs, I can’t in good conscious argue that we should limit their freedoms in order to increase our own. Why?

… Because, the two are the same.

Once you are willing to go down the slippery slope of taking away the rights of others in order to placate the masses, you are in real danger of completely losing the idea of personal freedom. Our individual liberties can’t be evaluated solely on how they impact other people.

If we refuse to let people or entities deal with their personal property in a way that doesn’t suit us, simply because it doesn’t suit us, we will quickly have the entire world at a standstill, because just about every action anyone takes could be considered to be harmful or undesirable to another.

Now, normally I avoid political discussions on this blog. So, you might think I’m being a bit hypocritical here—and to some degree I am—but, this political discussion is deeply rooted in technology, so I am giving myself a pass here.

So, in essence, I am actually in support of the idea of net neutrality, I am just not willing to join the mob in stripping away the rights of legitimate holders of personal property in the name of an ideal all the while violating another, overarching, more important ideal: freedom.

Don’t get me wrong, I’m not saying that the government shouldn’t ever regulate and prevent monopolies. I’m not trying to push a political agenda. I guess, I can just see myself in the position of owning a company that provides a service and being told what I can charge and how I can provide that service.

Perhaps it is because I am a landlord and I rent out property that I have a bit of a different perspective than most techies. When I hear about forced net neutrality,  I immediately think of someone telling me that I can’t charge whatever rent I want for a property I own, because it isn’t in the best interest of the people.

Damn the people! I am in business to make profit and so is every other legitimate business in the world. Comcast, Verizon and the rest of the internet service providers don’t provide internet services to make the world a better place and to equally spread ideas and give you personal freedom, they provide internet services to make a profit. And, if you are a shareholder of one of those companies, this is exactly what you want them to do.

I didn’t bust my ass working extra hours, saving money and living frugally so I could create cheap housing for the poor, I did it to make money. Now, that doesn’t mean I’m a heartless bastard—I give away 10 percent of my income to charity—but, no one should be able to force me to do it. If internet providers want to be dicks, so be it—it’s their right.

(Oh, look, I’m not the only one against Net Neutrality, someone wrote a book. Although, I admit, I have no idea how good it is.)

I’m not afraid

Even if the internet service providers succeed in earning the right to charge how they see fit for whatever level of service they provide to whoever they want and “destroy the internet,” I think there is still hope.

I have a bit more confidence in the internet than thinking that just because internet service providers choose to violate net neutrality principles it will spell doom and disaster.

Think about what would happen if Comcast started giving Netflix a high-speed traffic lane in exchange for a hefty fee. First of all, it might not be that bad. I don’t watch Netflix, but I hear that most of the world does, so for those people, there might be some real benefit in getting super-fast Netflix.

But, let’s suppose that people don’t like their super-fast Netflix, they’d rather have all their internet traffic arrive at the same speed. They’d like their torrents to download just as fast as House Of Cards. What then?

Well, if there is truly a demand for net neutrality internet providers, it will be profitable for Verizon to move in and start expanding their service to unhappy Comcast customers. They’ll promise completely neutral internet access and people will pay for it.

I don’t think that will happen though. I think that if net neutrality disappears, we won’t even notice it. For the most part, it won’t affect small businesses who don’t generate much traffic anyway, and for bigger businesses, it will be worth paying some extra fees to deliver content faster. It might even bring down the cost of internet service for the end-user. (Especially if it creates more differentiators in the market and thus more competition.)

Plus, let’s not forget that internet speeds are increasing all the time and technology is not going to stand still either. Sure, they are lagging behind in the US, but Google is putting some serious pressure on ISPs with its fiber offerings. You can only consume so much “internetz.” As speeds increase, bandwidth issues become less and less of a concern.

And let’s not forget about other technologies like Clear, who provides pretty fast internet wirelessly. Just because big ISPs already have cables laid in the ground doesn’t mean that other companies can’t lay new cables and that internet service can’t be provided wirelessly.

Overall, I’m not really all that scared of ISPs providing unequal internet service. Sure, I don’t like the idea. I would rather if they didn’t, but I think the pundits are really over exaggerating the effects.

To all those naysayers out there

As I am writing this post, I already know what the likely response will be: A bunch of flaming insults talking about how stupid I am and how I don’t understand the big IPSs are monopolies and that we have to protect the people against monopolies.

naysayers Why I am AGAINST Net Neutrality

How could I be against the internet being more free?

Well, it is pretty interesting because I have found that the people who claim to be the upholders of freedom the most seem to be the same people who secretly hate it. They hate that I could hold a different opinion than they do. They hate the fact that I don’t just go along with the masses and say that net neutrality is good and should be enforced—regardless of how we do it.

Like I said, if it were up to me the net would stay neutral. But, I believe more important things are at stake. I was against SOPA for the exact same reason that I am against the enforcement of net neutrality: we shouldn’t try to tell providers of a service how to provide that service.

But, like I said, this is just my opinion. I have pretty strong convictions about it, but I’m not beyond reasoning. I very well understand and accept that I could be wrong, but I’m not just going to assume I am just because everyone else on the internet says I am. And that is actually the beauty and real value of the internet, I can express my opinion freely, as can you. I don’t think Netflix streaming loading up a little bit faster than this blog post will change that.

For more infuriating posts about software development, technology and self-improvement, join over 5,000 other Simple Programmers and don’t miss a post.

Whitepaper on Getting QA and Developers To Work Together and Upcoming Webinar

Just wanted to do a short post to talk about a whitepaper I wrote for one of the companies that has been a big supporter of this blog, Zephyr, and also invite you to check out a webinar I’ll be doing next week on “How trying to learn too much may actually be hurting you–and what to do about it.”

Zephyr is a company that creates test management software, but they are also establishing themselves as thought leaders in the development and software testing space by creating and sponsoring quality content, so I was pretty happy to help them out by sharing some of my experiences.

You can check out the whitepaper here: “Getting QA and Developers to Work Together.”

(You do have to sign up using a form on their site, but don’t worry, they won’t spam you.)

whitepaper Whitepaper on Getting QA and Developers To Work Together and Upcoming Webinar

In the paper I tried to address the difficulty of getting QA teams and development teams working together, especially in an Agile environment. I’ve seen many teams adopting a staggered approach to development where they have the development team work on one iteration while the QA team tests the previous iteration.

If you’ve been in that situation, you know it doesn’t work.

And as for the webinar, if you are interested, you can sign up here: “How trying to learn too much may actually be hurting you–and what you can do about it.”

The webinar will be live on Tuesday, July 22nd at 8:00 AM PDT, 11:00 AM EST.

I’ll be talking about why I think many developers are overly stressing themselves out trying to learn too much with the crazy pace of technology increases, and I’ll be talking about some ways to be more effective in your learning, while keeping your sanity.

It will be a very interactive session and I intent to answer many questions live.

So, if you are interested in either of these, check it out. I’ll probably be doing more work with Zerphyr in the future, since they seem to have many of the same views on software development as I do.

Developer Productivity Tool Review: Telerik’s Devcraft

I don’t do many product reviews on this blog–and there is a good reason for it.

I get plenty of requests for companies asking me to “pimp” their stuff on this blog, but most of the stuff I am asked to write about I just don’t use or would never really find myself using.

However, I was pretty excited when Telerik contacted me and asked if I would be interested in letting them sponsor a post about their Devcraft developer tools, because I actually really like these tools–I’ve always been a big fan of Telerik–and the whole Devcraft package is something that I truly feel increases developer productivity.

So, yes, this is a sponsored post. Those of you who follow this blog know that this blog is one of my main income streams. But, as I am sure you can tell if you read this blog regularly, I hardly ever allow sponsored posts or guest posts, because the money is not worth trying to make up some crap about how some product I’ll never use is so great.

That that said, here is my honest opinion of Telerik’s Devcraft offering.

What is it?

I guess, before I can really get into what I think of Devcraft, I have to address what it is.

You can check it out for yourself here: Telerik Devcraft.

devcraft Developer Productivity Tool Review: Teleriks Devcraft

But, essentially it is a collection of almost all of Telerik’s .NET focus tools–all together. So, if you aren’t a .NET developer, you might not find all that much value–although, I have to say that the Kendo UI part (which is a jQuery-based framework with a bunch of responsive widgets and and other nice HTML components, including an MVVM framework) is great for any kind of web development.

Here is roughly how it is broken up:

Web

There are a bunch of different UI controls for ASP.NET AJAX, ASP.NET MVC, Silverlight and even SharePoint. Plus, the Kendo UI framework that I already talked about. It is really a crazy amount of controls, and they look really good.

Desktop

Again, tons of controls, and all of them look really great. I designed some custom controls for Windows Forms myself back in the day and these controls put everything I ever did to shame. They have controls for both WPF and the old Windows Forms.

Mobile

As you might have guessed, the mobile side has Windows Phone 8, Windows 8 XAML and Windows 8 HTML controls. I would have liked some Android and iOS controls, but I guess you can’t have everything. I haven’t done a lot of Windows Phone or Windows 8 development myself, but I played around with some of the controls and I was really impressed. Again, polished top-notch controls that were really easy to get working.

Also, on the mobile side I found I could combine Kendo UI with PhoneGap to create some pretty nice mobile applications. (Although, I knew Telerik has their AppBuilder platform, which basically does this for you–it used to be called Icenium)

Dev Tools

Telerik doesn’t just have UI controls, they have everything else as well. They have an NUnit-like testing framework–which is actually free.

But, they also have JustCode, which is a Visual Studio plugin that makes you more productive and adds all kinds of automatic refactorings to Visual Studio. (Think Resharper, but faster.)

JustCode Developer Productivity Tool Review: Teleriks Devcraft

And, I really like the JustMock tools that is part of Devcraft. I found this mocking engine very easy to use and I liked how it had the power to mock non-virtual methods, non-public members, sealed classes and even static methods. (Although, I’d suggest using that power with care.)

There were even tools on the debugging side. JustTrace turned out to be a very robust .NET memory and performance profiling tools–with a very nice and easy to use UI. I finally felt like I could actually us a profiling tool and understand what it was doing.

I’m also pretty well acquainted with JustDecompile. I’ve been using that .NET decompiler ever since that whole Redgate fiasco over .NET reflector. Telerik has done a pretty good job of making this decompiler easy to use.

I’ll also include the reporting and data access tool in this grouping–although I suppose you could argue that they aren’t really developer tools. Devcraft also has a reporting solution that is pretty lightweight and seems to be nice for generating reports and they also have a data access component that is basically a visual object-relational mapper. (The data access component is free.)

I’m not too much into reporting or data access these days, so I didn’t really use these parts very much–but they looked pretty nice to me.

So, what do I think?

Well, I have to say, many of the tools in Devcraft I was already using. I have been familiar with Telerik’s products for quite a while, but I never really had a chance to dig into many of their controls until now.

I was always very impressed with how the controls looked, but I now I am equally impressed with how easy they are to use and especially with the documentation available.

It was obvious that controls for desktop apps and ASP.NET AJAX would be fairly easy to use, but I am most impressed with how easy Telerik made it to use their ASP.NET MVC controls and the Kendo-UI bits.

kendo grid Developer Productivity Tool Review: Teleriks Devcraft

Without knowing anything about how the ASP.NET MVC controls worked–and without reading any documentation ahead of time–I decided to just pick a few controls and see if I could get them working.

I found that for each control there was a live demo on Telerik’s site. I could simply go to the control, see how it worked, and see the source code below. This made using any control I wanted extremely easy. I didn’t have to memorize how to use each control, since I could just learn how to use a control when I needed to use it.

The big problem I have now is that I don’t see how I can go on using regular controls or trying to create my own UIs for ASP.NET MVC apps anymore. I know that sounds a little lame, but I am actually a bit worried. I have to figure how to convince clients I do work for that they need to invest in these controls, because I can’t see recreating some of this stuff, like I did before, now that I know it exists and how easy it is to use.

It’s also crazy how well all this stuff fits in together. The ASP.NET MVC controls are actually wrappers around the Kendo UI stuff, so you can actually utilize the same Kendo UI controls in your ASP.NET MVC applications very easily.

There also seems to be controls for just about everything you can imagine. I spent hours just looking through the controls and trying them out. I was getting great ideas for applications I could build, just from looking at the controls. I’m really excited now to use some of these controls on my next project.

Productivity enhancements

All together though, the biggest thing for me about Devcraft was the productivity enhancements. I am all about developer productivity, so that is one of the main reasons why I like Devcraft.

I know what it is like to spend days trying to make a custom grid control or customize a grid control to do what I want. I know how much time can be wasted looking for that perfect jQuery plugin to use for your app. I think there is a huge value in having all of that in one big package.

It’s also pretty nice to not have to hunt for different solutions for testing, mocking, refactoring, tracing and more. Having everything together without me having to think about it, and knowing the quality is high, makes things much more simple and allows me to focus on what is really important.

Overall

So, overall I would have to say I am very impressed with Devcraft. I’ve been using bits and pieces of Telerik’s software here and there over the years, but until I did this review, I didn’t realize how well it all integrated together and just how much stuff there was available.

Now, the price is a bit high. At the time of this writing, there are three editions:

  • The UI Edition at $1,299
  • The Complete edition at $1,499
  • The Ultimate edition at $1,999

pricing Developer Productivity Tool Review: Teleriks Devcraft

But, with the value in these collections, I still think it is a pretty good bargain. I’ve purchases–or been responsible for the purchase–of many of the individual components in the past, and it seems like a no-brainer to me to get everything all together than trying to buy them piecemeal.

Also, Telerik has kindly offered to give away a license for Kendo UI Professional. To enter the contest, just leave a comment below. I’ll randomly select a winner in a week.

 

 

 

Do Software Developers Really Need Degrees?

When I first started out my career as a software developer, I didn’t have a degree.

I took my first real job when I was on summer break from my first year of college. By the time the summer was up and it was time to enroll back in school, I found that the salary I was making from that summer job was about what I had expected to make when I graduated college—only I didn’t have any debt at this point—so, I dropped out and kept the job.

But, did I make the right choice?

Do you really need a university degree to be a computer programmer?

The difference between education and school

Just because you have a college degree doesn’t mean you have learned anything. That is the main problem I have with most traditional education programs today. School has become much more about getting a degree—a piece of paper—than it has about actually learning something of value.

To some extent, I am preaching to the choir. If you have a degree that you worked hard for and paid a large amount of money for, you are more inclined to believe that piece of paper has more value than it really does.

school Do Software Developers Really Need Degrees?

If you don’t have a degree, you are probably more inclined to believe that degrees are worthless and completely unnecessary—even though you may secretly wish you had one.

So, whatever side you fall on, I am going to ask you to momentarily suspend your beliefs—well, biases really—and consider that both views are not exactly correct, that there is a middle-ground somewhere in between the two viewpoints where a degree isn’t necessarily worthless and it isn’t necessarily valuable either.

You see, the issue is not really whether or not a particular degree has any value. The degree itself represents nothing but a cost paid and time committed. A degree can be acquired by many different methods, none of which guarantee any real learning has taken place. If you’ve ever taken a college course, you know that it is more than possible to pass that course without actually learning much at all.

Now, don’t get me wrong, I’m not saying that you can’t learn anything in college. I’m not saying that every degree that is handed out is a fraud. I’m simply saying that the degree itself does not prove much; there is a difference between going to school and completing a degree program and actually learning something.

Learning is not just memorizing facts. True learning is about understanding. You can memorize your multiplication tables and not understand what they mean. With that knowledge, you can multiply any two numbers that you have memorized the answer for, but you would lack the ability to multiply any numbers that you don’t already have a memorized answer for. If you understand multiplication, even without knowing any multiplication tables, you can figure out how to work out the answer to any multiplication problem—even if it takes you a while.

You can be highly educated without a degree

Traditional education systems are not the only way to learn things. You don’t have to go to school and get a degree in order to become educated. Fifty years ago, this probably wasn’t the case—although I can’t say for sure, since I wasn’t alive back then. Fifty years ago we didn’t have information at our fingertips. We didn’t have all the resources we have today that make education, on just about any topic, so accessible.

A computer science degree is merely a collection of formalized curriculum. It is not magic. There is no reason a person couldn’t save the money and a large degree of the time required to get a computer science degree from an educational institution by learning the exact same information on their own.

Professors are not gifted beings who impart knowledge and wisdom on students simply by being in the same room with them. Sure, it may be easier to obtain an education by having someone spoon-feed it to you, but you do not need a teacher to learn. You can become your own teacher.

In fact, today there are a large number of online resources where you can get the equivalent of a degree, for free—or at least very cheap.

Even if you have a degree, self-education is something you shouldn’t ignore—especially when it’s practically free.

You can also find many great computer science textbooks online. For example, one the best ones is: Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science)

So, is there any real benefit to having a degree?

My answer may surprise you, but, yes right now I think there is.

I told you that I had forgone continuing my education in order to keep my job, but what I didn’t tell you is that I went back and got my degree later. Now, I didn’t go back to college and quit my job, but I did think there was enough value in having an actual computer science degree that I decided to enroll in an online degree program and get my degree while keeping my job.

degree Do Software Developers Really Need Degrees?

Why did I go back and get my degree?

Well, it had nothing to do with education. By that point, I knew that anything I wanted or needed to learn, I could learn myself. I didn’t really need a degree. I already had a good paying job and plenty of work experience. But, I realized that there would be a significant number of opportunities that I might be missing out on if I didn’t go through the formal process of getting that piece of paper.

The reality of the situation is even though you and I may both know that degrees don’t necessarily mean anything, not everyone holds the same opinion. You may be able to do your job and you may know your craft better than someone who has a degree, but sometimes that piece of paper is going to make the difference between getting a job or not and is going to have an influence on how high you can raise in a corporate environment.

We can’t simply go by our own values and expect the world to go along with them. We have to realize that some people are going to place a high value on having a degree—whether you actually learned anything while getting one or not.

But, at the same time, I believe you can get by perfectly well without one—you’ll just have a few less opportunities—a few more doors that are closed to you. For a software developer, the most important thing is the ability to write code. If you can demonstrate that ability, most employers will hire you—at least it has been my experience that this is the case.

I have the unique situation of being on both sides of the fence. I’ve tried to get jobs when I didn’t have a degree and I’ve tried to get jobs when I did have a degree. I’ve found that in both cases, the degree was not nearly as important as being able to prove that I could actually write good code and solve problems.

So, I know it isn’t necessary to have a degree, but it doesn’t hurt either.

What should you do if you are starting out?

If I were starting out today, here is what I would do: I would plan to get my degree as cheaply as possible and to either work the whole time or, better yet, create my own product or company during that time.

I’d try and get my first two years of school at a community college where the tuition is extremely cheap. During that time, I’d try to gain actual work experience either at a real job or developing my own software.

Once the two-year degree was complete, then I’d enroll in a university, hopefully getting scholarships that would pay for most of my tuition. I would also avoid taking on any student debt. I would make sure that I was making enough money outside of school to be able to afford the tuition. I realize this isn’t always possible, but I’d try to minimize that debt as much as possible.

What you absolutely don’t want to do is to start working four year later than you could be and have a huge debt to go with it. Chances are, the small amount of extra salary your degree might afford you will not make up for the sacrifice of losing four years of work experience and pay and going deeply into debt. Don’t make that mistake.

The other route I’d consider is to completely get your education online—ignoring traditional school completely. Tuition prices are constantly rising and the value of a traditional degree is constantly decreasing—especially in the field of software development.

If you go this route, you need to have quite a bit of self-motivation and self-discipline. You need to be willing to create your own education plan and to start building your own software that will prove that you know what you are doing.

The biggest problem you’ll face without a degree is getting that first job. It is difficult to get a job with no experience, but it is even more difficult when you don’t have a degree. What you need is a portfolio of work that shows that you can actually write code and develop software.

I’d even recommend creating your own company and creating at least one software product that you sell through that company. You can put that experience down on your resume and essentially create your own first job. (A mobile app is a great product for a beginning developer to create.)

What if you are already an experienced developer?

Should you go back and get your degree now?

It really depends on your goals. If you are planning on climbing the corporate ladder, then yes. In a corporate environment, you are very likely to hit a premature glass-ceiling if you don’t have a degree. That is just how the corporate world works. Plus, many corporations will help pay for your degree, so why not take advantage of that.

If you just want to be a software developer and write code, then perhaps not. It might not be worth the investment, unless you can do it for very cheaply—and even then the time investment might not be worth it. You really have to weigh how much you think you’ll be able to earn extra versus how much the degree will cost you. You might be better off self-educating yourself to improve your skills than you would going back to school to get a traditional degree.

If you liked this post and would like to learn more about improving your software development career, join over 4,000 other Simple Programmers here.

Don’t Overwhelm Yourself Trying to Learn Too Much

It’s a great idea to educate yourself.

I fully subscribe to the idea of lifetime learning–and you should too.

But, in the software development field, sometimes there are so many new technologies, so many things to learn, that we can start to feel overwhelmed and like all we ever do is learn.

overwhelmed Dont Overwhelm Yourself Trying to Learn Too Much

You can start to feel like you are always playing catch-up, but never actually getting ahead–not even keeping up. The treadmill is going just a few paces faster than you can run, and you are slowly losing ground, threatening to drop off the end at any time.

Trying to learn too much

The problem is trying to learn too much. There are 100 different technologies you have to work with or want to work with at your job. You might feel that in order to be competent, in order to be the best you can be, you need to learn and master all of them. The problem though, is that you feel like you haven’t even mastered one of them.

It can be a pretty disparaging feeling. To counter that feeling–which sometimes demonstrates itself as impostor syndrome–you grab books, video courses, and all kinds of resources on all the technologies you feel that you need to master.

You spend your nights and weekends reading books, going through online training, and reading blog posts.

But. is it really effective, or does it just stress you out more?

Do you even remember half of what you read?

Will you actually ever use it, or are you storing it away for a someday-I-might-need-this-bucket?

bucket Dont Overwhelm Yourself Trying to Learn Too Much

My point isn’t that you shouldn’t be learning, it’s just that perhaps you are placing too much pressure on yourself and trying to learn too much.

I’m only saying this, because I’ve been there. I’ve done that. I know how it feels.

I also know that this forced pace of learning isn’t very effective. I don’t remember much of the majority of books I read about technologies I didn’t end up using or barely ended up working with.

I know that the technologies I learned the best were the technologies that I actually put into practice. In fact, some of my most useful, and retained learning, came from learning I did on the spot, right when I was working on a problem I couldn’t solve and had to go find an answer.

Just-in-time learning

It may seem strange that someone like me who makes a decent portion of their living creating learning materials for software developers would tell you to not try and learn too much.

It probably would make much more sense for me to preach that you should absorb all the information that you can; that you should be continuously watching my Pluralsight courses while you eat, sleep and commute to work.

But, the truth is, I don’t think that is the most effective way to learn. I don’t think you’ll get much out of one of my courses, or anyone else’s, if you just repeatedly watch them.

Instead, I think the best way to improve your skills and to learn what you need to do is to do the learning as close to the time you need the information as possible–just-in-time learning.

Now, this doesn’t mean that you should just start working with a technology before you know anything about it. You’ll waste a lot of time flopping around trying to get started if you just dive right in without any prior knowledge. But, I’ve found you only need to learn three things before you can dive in and start working with a technology:

  1. How to get started
  2. What you can do with the technology–how big it is.
  3. The basics–the most common things you’ll do 90% of the time.

It is no coincidence that I structure most of my online courses in that way. I try to tell you how to get started, show you what is possible and then give you the very basics. I try to avoid going into details about every little aspect of a technology, because you are better off learning that information when you need it. As long as you know what you can do, you can always find out how later.

Often the hardest part of learning a new technology is learning what is possible.

I’ve found that the faster you start actually using a technology and trying to solve real problems with it the better. Once you’ve covered the three bases I’ve mentioned above, your time is much better spent actually working with the technology rather than learning about it further.

It’s difficult to break away and jump in though. Our instincts tell us that we need to keep reading, keep watching videos and continue to learn, before we get started.

You might feel compelled to master a technology before you start using it, but you have to learn to resist the urge. You have to be willing to fail and learn your way by making mistakes and hitting roadblocks. Real learning takes place when you use information for a purpose, not by trying to acquire it ahead of time.

If you know what can be done in a technology and you know enough of the basics, it won’t be difficult to figure out what search term you’ll need to come up with in order to answer any questions you have along the way. This just-in-time learning will be more effective in the long run and save you many wasted hours consuming information that you won’t fully digest.

You can’t know everything

Even if you had all the time in the world to learn, and even if you apply just-in-time learning techniques, you still won’t ever learn a fraction of what there is to learn in the software development field. New technologies are popping up every day and the depth of existing ones increases at an alarming rate.

It is important to face the reality that you just can’t know it all. Not only can you not know it all, but what you can know is just a tiny fraction of what there is to know.

This is one of the main reasons why I talk about specializing so much. You are much better off picking a single technology that you can focus on learning in-depth than spreading yourself too thin trying to be a master at everything.

That doesn’t mean you shouldn’t expand your skills in many different directions; you should definitely try to have a broad base. Just don’t expect to be an expert in more than one or two main areas of focus. Try to focus your learning on two main areas:

  1. A single specialty that you will master
  2. General software development skills that will apply to more than one technology. (For example, a book like Code Complete falls in this category.)

Don’t try and spread yourself too thin. Rely on your ability to learn things as you need them. If you have a solid base, with time and experience, you’ll find that you can learn whatever you need to know when you need to know it. Trust yourself.

Sometimes it can seem like there are super-programmers out there who seem to know everything and can do everything, but it is only an illusion. Those super-programmers are usually programmers that have one or two areas of expertise and a large amount of general knowledge that they apply to a variety of different domains.

Like this post? Get more like it and other exclusive content when you sign up here.