150 likes | 504 Views
Free Technology – How to Increase your Marketability. Development Track Patrick El-Azem Principal Consultant, Net Gain Solutions LLC. Agenda. Audience and Goals Tools The Foundation: IDEs Adding On: Good Tools to have Branching Out: Beyond “Just Code” Learning Resources
E N D
Free Technology – How to Increase your Marketability Development Track Patrick El-Azem Principal Consultant, Net Gain Solutions LLC
Agenda • Audience and Goals • Tools • The Foundation: IDEs • Adding On: Good Tools to have • Branching Out: Beyond “Just Code” • Learning Resources • Hiring: what the heck are they looking for?!?
Audience and Goals • Audience • Entry-Level through Mid-Level Developers • General-Purpose Software Development (i.e. not Embedded, iPhone, etc.) => free tools • Goals • Review free tools available across platforms • Review free learning resources • Non-Goals / Non-Topical • “Soft” skills • Domain knowledge (e.g. UML, Agile, etc. etc.)
Tools – IDEs - 1 • The Foundation: IDEs • IDE = “Integrated Development Environment” • Offers capabilities like syntax assistance, debugging, build, and much more • Can be multi-language / multi-framework • Major Technology Domains: • Microsoft .NET (VB.NET, C#, F#) • Java, C/C++ • Dynamic Languages (JavaScript, Ruby, PHP, Python, etc.)
Tools – IDEs - 2 • Microsoft: Visual Studio 2008 Express • Visual Studio 2008 Express; C#, VB.NET, Web, C++ • www.microsoft.com/express/download/ • Limited capabilities; full version is Visual Studio 2008 for $$-$$$ (3-month trial versions avl. though) • SharpDevelop • Open-Source Microsoft-compatible IDE; C#, VB, Boo • www.icsharpcode.net/OpenSource/SD/ • Includes excellent 3rd-pty add-on tools • Capabilities exceed Visual Studio Express
Tools – IDEs - 3 • Eclipse: Java, PHP, Ruby, Python, and more • www.eclipse.org • Cross-platform, multi-language, extensible • Many add-ons avl.; e.g. Google “Eclipse Ruby” • NetBeans: Java, PHP, Ruby, Python, and more • www.netbeans.org • Cross-platform, multi-language
Tools – Adding On - 1 • Unit Testing (TDD!!) • Why use? Developer = first responsibility for quality! • .NET: nUnit (www.nunit.org), xUnit (xunit.codeplex.com) • Java: jUnit (www.junit.org) • Many, many more avl.; these are general-purpose
Tools – Adding On - 2 • Source Code Control • Why use? History, rollback, concurrency mgmt. • Subversion Server & Client: subversion.tigris.org (if you set up your own server, be sure to read tinyurl.com/68hdb9) • Server with GUI: VisualSVN (www.visualsvn.com) • More avl. (CVS, Git, etc.) but Subversion is easy, cross-platform, low learning curve • Read up on “TTB” and learn how to tag, branch, and merge
Tools – Adding On - 3 • Analysis • Why use? Check your code against rule bases of “best practices”, look for problem patterns. • FxCop: .NET static analysis tool; tinyurl.com/dm5fp8 • StyleCop: .NET code style analysis tool; tinyurl.com/5rzmqa • Gendarme: .NET/Mono static analysis tool; tinyurl.com/a2o2ec • Many more tools: tinyurl.com/y25zj3
Tools – Adding On - 4 • Build • Why use? Automate build processes that include more than just “compile code” – copy files, call ext. executables, etc. • .NET: Nant (www.nant.org) • Java: Ant (ant.apache.org) • Coverage • Why use? Determine how much code is “covered” by unit tests; gauge code complexity • .NET: PartCover (sourceforge.net/projects/partcover) • Java: see java-source.net/open-source/code-coverage
Tools – Branching Out - 1 • Database • Good competencies: database design/normalization, query writing, index design, execution plan tuning • Microsoft SQL Server 2008 Express (tinyurl.com/69a3uh) • MySQL Community Server; also included in some OSes and IDEs (dev.mysql.com/downloads) • PostGreSQL (www.postgresql.org) • IDEs typically have pluginsavl. for database management, or DBs come with management UI
Tools – Branching Out - 2 • Web Frameworks • jQuery: JavaScript library (www.jquery.com) • Microsoft Ajax Control Toolkit (www.asp.net/ajax) • Microsoft ASP.NET MVC (www.asp.net/mvc) • Ruby on Rails (www.rubyonrails.org) • Frameworks • Microsoft Web Platform Installer (tinyurl.com/bgpsj9) • LAMP Stack Installer (tinyurl.com/5x2kr)
Tools – Branching Out - 3 • Object-Relational Mappers • Why use? Simplify OO/DB development • Subsonic (www.subsonicproject.com) – fast, easy to learn • Hibernate (www.hibernate.org) – powerful, complex
Learning Resources • MSDN Learning Center – enormous resources; tinyurl.com/54fut6 • Microsoft Thrive - tinyurl.com/mmsaeu • Ruby on Rails; wiki.rubyonrails.org/start • Java; java.about.com • Much more online: Google specifics (language + topic)
Hiring • Perspective: Hiring Manager • Companies and cultures vary! Also, right now hiring is “risky”. Don’t despair. • My experience: our best hires = self-motivated, passionate over resume alphabet-soup • Be willing to freelance, tackle small projects, do pro bono • Show ability to try new tech, apply to business problems • Prototype – show source – bring screenshots or some sort of demo; show eagerness. Free/open-source = “you’ll save me money”. Pragmatism > Dogma. • Blog interesting stuff you do/try – and put blog on resume • Use LinkedIn – update it, post status updates; join groups like LIDNUG, Scrum Club, etc. • Think on your feet – don’t be afraid to ask questions – and use the whiteboard instead of freezing! We want to see you think, not see someone who “knows everything”. • Network! Go to SwANH events, Chamber of Commerce events (e.g. www.ecoast.org), Professionals groups (e.g. www.mypn.org, www.catapult.org) etc. Get (good!) business cards (free @ VistaPrint.com), elevator pitch.