Sign In

Navigation

On This Page

Archive

<September 2008>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

Categories

Blogroll

Contact

Send mail to the author(s) Email Me
MCPD
MCTS

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way


Copyright ©  2010
 Creative Commons License
This work by Jeff Klawiter is, unless explicitly stated in the article,  available under the Creative Commons Attribution 3.0 United States License.

Pick a theme:
# Monday, September 29, 2008
by Jeff Klawiter - Monday, September 29, 2008 3:28:37 PM (Central Standard Time, UTC-06:00)
Being a developer is one of the luckiest professions in the world. Just take a minute and think about this: How many professions out there are you paid to learn? Seriously, if we wish to succeed we must learn. Many times we need to learn during the project. We are given the opportunity and often encouraged to learn new ways of doing something, come up with innovative ideas, implement new technologies. Many companies offer compensation for developers to get certified, keep up, to learn. I've also found that many of the people I know that went to college for CS came out ill prepared for the real development world.

I was lucky in some ways. I got a job running websites during high school, I was paid to learn and mature as a programming. I wasn't lucky that pay sucked and I had to get food from charity at times. But there was always being able to learn on the job and the outlook that real developers jobs paid very well.

Over the years as I've matured as a developer I've learned quite a lot. I strive to keep on learning, branching out into new areas. I've found that my inner urge to learn is also what has allowed me to succeed. Below are some of my tips to being a successful programmer

Be passionate

The one thing I've seen in every great developer I've ever met is passion. Passion for the job, passion for learning, passion for being challenged. There is no way to improve without having a need for it. If being a developer is just a job, just a way to make money, I'm sorry but you should find something else to do. I've seen many developers that have that attitude and they just don't make it. They make mistakes and never learn from them, they have difficulties completing anything on time, and wind up getting fired quite a bit.

Never be afraid to try something new

While sometimes it's hard to break out of things you know that work, learning that things can/cannot be done another way expands your experience and keeps your mind trying to work outside the box.

Keep up with the Joneses

This one can be very hard if you have a full schedule. But trying to keep up with the new technologies will expose you to new ideas, new ways of tackling problems. One cannot grow if one does not see another way.

Pursue certifications

Some people see certifications as a croc. They see that lots of tech schools teach for the test and thats it. I can understand that. I have persued certifications as a professional goal. Going through the MCTS certifications for ASP.NET and Winforms has exposed me to many things I probably wouldn't have known about in .NET. I try to read through the entire training kit books MS puts out for the certifications.

Gaining the certifications are also good for ones ego. Having the goal to set out and earn the certification can keep you discleplined and give you a sense of accomplishment. It's something you can show your bosses and peers that you do indeed know what you're talking about. It gives you more bargaining power when negotiating a raise or looking for a new job. While some may not help you as much as you'd hope, having both real world experience and certifications can be a 1-2 combo.

Microsoft's certification track is the best I've seen. You can start out by getting Technological specific certifications with the MCTS series. You can get just certified in ASP.NET, Windows Applications, Windows Mobile.. and on. Then you can expand on those with Professional certifications with the MCPD's. These ones include application lifecycle components. Professional ways of breaking down an application into logical, component and class diagrams to implementation of architectures and finishing with deployment and maintenance.

Learn new languages

This one can be hard for people that only use one language at work. Learning a new language again helps you get exposed to new ideas and ways of tackling problems.

The hardest thing is actually finding something to do in that language to learn it. I've found that the best way is to have something you implement in every language. Whether it's some tool you've developed or a little game. I had the Al Bhed translator. I originally developed it in PHP to help me out with the game Final Fantasy 10. I then tried doing it in JavaScript, then Java, then C++, XUL (firefox extension) and then in C#.NET Winform. It gave me a common goal in each of the languages and forced me to find out how to do it in each one. They all had their own strengths and weaknesses. PHP's Array functions made some of it very easy to implement, where javascript was a bit clunky. C# wasn't as elegant as the PHP but it was much faster in execution.

Try to find languages that have a different goal than just another application. Languages like F# for example. While it's possible to write every day applications with it, it's real power lies in analyzing and transforming data. Learning it opens up a world of mathmatics in new ways.

Learn new platforms 

Simply this means do not just be a web developer or an application developer. Continuously expanding the platforms you know can increase your understanding of how other people develop. I started out as a web programmer and over the years I've written programs for the commandline, windows services, web services, mobile phones, automated scripts, desktop applications, rich internet apps (flash, silverlight), dynamic web sites and more. I'm currently picking up XNA and trying to learn what programming a game is like. I'm learning a newfound respect for game programmers.

Seek out challenges

If your current job is not challenging you find a way to be challenged. Sometimes even playing around things outside of work is enough. Go to your boss and see if theres ways you can increase your workload, or get into more complex projects. Express an interest in new things. If you are stuck at a job where that is impossible, I recommend it may be time to look elsewhere. Get some certifications and new skills under your belt and start looking. There are some great tech jobs out there, good places to find a place to be challenged are in start ups or smaller custom software companies. Places like where I work at, Sierra Bravo. When I joined I had 6 years experience but still would consider myself a novice programmer. Within the next year I worked on more than 20 projects, on many platforms and felt like I had finally become a professional developer.

Now being on the verge of 4 years later I feel like I'm an accomplished developer, I'm able to start incorporating more advanced concepts in to my projects. I can see a much larger picture. As the years have gone on the scope of the picture I can see has expanded. I once could only see the single web page I was working on. Then I was able to start understanding the system of web pages I would design. I then started graduating onto being able to write a complete web site. That is when I decided that desktop applications were next. The scope expanded to understanding state, threads, and desktop experience. My first applications were cluttered, did not have much for layers. I started to learn more about the concept of breaking out applications into libraries and layers. These days I've graduated to an architect that can take the project proposal. Break it down to sections, logical components and build the applications architecture. Define the database, the data layers, the data objects and the front end. I can incorporate n-tier designs, abstract out business logic to a web service. Write API's that work for websites as well as windows mobile.

Really it all boils down to is: Have passion for your job, passion to learn new things and keep yourself challenged. Never be afraid to learn new skills. In this day an age a developer needs to know more than just one platform. They need to understand a larger scope to make it.

Comments [0] #      blog  |  kick it on DotNetKicks.com Shout it
All comments require the approval of the site owner before being displayed.
Name
E-mail
(will show your gravatar icon)
Home page

Comment (Some html is allowed: a@href@title, b, blockquote@cite, em, i, strike, strong, sub, sup, u) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview