background preloader

Interesting Reads

Facebook Twitter

The 5 types of programmers & Steven Benner's Blog - StumbleUpon. In my code journeys and programming adventures I’ve encountered many strange foes, and even stranger allies. I’ve identified at least five different kinds of code warriors, some make for wonderful comrades in arms, while others seem to foil my every plan. However they all have their place in the pantheon of software development. Without a healthy mix of these different programming styles you’ll probably find your projects either take too long to complete, are not stable enough or are too perfect for humans to look upon.

The duct tape programmer The code may not be pretty, but damnit, it works! This guy is the foundation of your company. When something goes wrong he will fix it fast and in a way that won’t break again. The OCD perfectionist programmer You want to do what to my code? This guy doesn’t care about your deadlines or budgets, those are insignificant when compared to the art form that is programming. The anti-programming programmer I’m a programmer, damnit. The half-assed programmer. Signs that youre a bad programmer - Software Engineering Tips.

Why was this written? Most of these faults were discovered the hard way by the author himself, either because he committed them himself or saw them in the work of others. This paper is not meant for grading programmers, it was intended to be read by programmers who trust their ability to judge when something is a sign of bad practice, and when it's a consequence of special circumstances. This paper was written to force its author to think, and published because he thinks you lot would probably get a kick out of it, too. 1. Inability to reason about code Reasoning about code means being able to follow the execution path ("running the program in your head") while knowing what the goal of the code is.

Symptoms Remedies To get over this deficiency a programmer can practice by using the IDE's own debugger as an aide, if it has the ability to step through the code one line at a time. 2. Object Oriented Programming is an example of a language model, as is Functional or Declarative programming. 3. 4. How to Think Like a Computer Scientist & How to Think Like a Computer Scientist: Learning with Python - StumbleUpon. Version date: October 2012 by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers (based on 2nd edition by Jeffrey Elkner, Allen B. Downey, and Chris Meyers) Corresponding author: p.wentworth@ru.ac.za Source repository is at For offline use, download a zip file of the html or a pdf version (the pdf is updated less often) from Search PageCopyright NoticeForewordPrefacePreface-3 This Rhodes Local Edition (RLE) of the bookContributor ListChapter 1 The way of the programChapter 2 Variables, expressions, and statementsChapter 3 Hello, little turtles!

Extreme Programming Rules. Planning User stories are written. Release planning creates the release schedule. Make frequent small releases. The project is divided into iterations. Iteration planning starts each iteration. Managing Give the team a dedicated open work space. Set a sustainable pace. A stand up meeting starts each day. The Project Velocity is measured. Move people around. Fix XP when it breaks. Designing Simplicity. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk.

No functionality is added early. Refactor whenever and wherever possible. Software Engineering Proverbs - StumbleUpon. Collected by Tom Van Vleck Drawn by Angus Macdonald A clever person solves a problem. A wise person avoids it. -- Einstein André Bensoussan once explained to me the difference between a programmer and a designer: "If you make a general statement, a programmer says, 'Yes, but...' while a designer says, 'Yes, and...'" No matter what the problem is, it's always a people problem. Jerry Weinberg Wexelblat's Scheduling Algorithm: Choose two: Good Fast Cheap Craziness is doing the same thing and expecting a different result. Tom DeMarco, rephrasing Einstein, who said Insanity: doing the same thing over and over again and expecting different results.

"There's no time to stop for gas, we're already late" -- Karin Donker Deming's 14 points Create constancy of purpose. We know about as much about software quality problems as they knew about the Black Plague in the 1600s. -- Tom Van Vleck The Troops Know The schedule doesn't have enough time for maintenance in it. To go faster, slow down. -- Scott Cherf -- W. - StumbleUpon. This article has been translated into Serbo-Croatian here: Thanks to Jovana Milutinovich for creating this translation. In the CS department where I currently teach I recently got involved in a debate on which programming language should be used to teach beginners. Java and C are the most commonly used languages in the department, and for many subjects this is appropriate, but not (I believe) for absolute beginners. I believe Python is a much better choice for beginners, and to firm up my own position I performed the very brief, very unscientific test described below.

The Test I wanted to look at what was involved in writing very simple programs in a (small) variety of languages. "Hello World" seemed a bit too trivial, so I decided on the relatively simple task of reading two numbers from the user, adding them together and printing out the result. Time to write: 15 seconds. Things to explain: Line numbers Variables INPUT PRINT RUN Java. 11 programming trends to watch. Depending on your perspective and proximity to the bleeding edge, the world of programming evolves either too fast or too slow. But whether you're banging out Cobol or hacking Node.js, one fact remains clear: Programmers must keep an eye on the latest programming trends to remain competitive in ever-shifting job markets. From JavaScript everywhere to everything on the JVM, the times and the tools are a-changing.

So too is the way programmers work, thanks to the rise of frameworks and walled gardens, as well as a shift away from openness. Concerns around bandwidth, energy, and scalability are finding a place at the programming table, as are parallelism and the video card. There's so much happening that you might find yourself thinking of going back to school, if only traditional education wasn't fading from relevance. Every so often, our understanding of the ways and means of programming needs to be renewed or replaced just like an operating system or a library.

Take Google Web Toolkit.