

Five Years (doing mostly PHP) is Enough - greaterscope
http://alanszlosek.wordpress.com/2008/10/20/five-years-is-enough/

======
compay
Being a hack to make a living sucks, but hey - everybody has to pay the bills.
So there's no need to apologize or feel ashamed.

If you find yourself bored silly with your programming gig, do yourself and
other people a favor. Get involved in an open source project you like and feel
you can make a contribution to. You'll probably start to enjoy programming
again, and other people will benefit too.

~~~
13ren
Regarding interesting open source projects, can anyone recommend an open
source project that contributing to would teach me about real-life, effective
usage of:

(1). git source control

(2). maintaining a medium sized/complexity Java project

I'm interested in the oral tradition i.e. the human operational aspects of how
you use it, what aspect to use it in what circumstances etc, etc, etc - that
aren't in the tool itself or its man pages or tutorials. Thanks for any
pointers.

~~~
DougBTX
I can't recommend a particular project, but looking through [1] for something
which catches your eye would be a good start.

[1] <http://github.com/search?q=java>

~~~
13ren
thanks for that

------
WilliamLP
I'm naive, but isn't doing something over and over again always a sign that
you're doing it wrong? Even if you have to work in PHP and write simple
database table management screens all day long, there's nothing to stop you
from stepping back a layer, for example by writing programs to write that PHP
and MySQL code in whatever language you choose. I believe that if a problem
really is trivial in programming, there's always a way to make it trivial.

~~~
fauigerzigerk
I agree in principle, but at some point you're done with don't-repeat-yourself
framework wizardry and you're up against the basic task of translating
fragmentary verbal requirements into a technical solution. Web frameworks
(sometimes) make that process more productive but no less boring.

~~~
WilliamLP
That's true, but I think we can both agree that the author can do a lot better
than spending 60% of his time to "copy-and-paste chunk of code, then tweak for
new field names, then make sure to update the correct database fields, add
validation, ad nauseum."

~~~
fauigerzigerk
Sure, I totally agree.

------
strlen
This is a great idea - there's nothing wrong with neither PHP nor web
development, but it's great idea to broaden your horizon.

First add another dynamic language to your tool-set: Perl or Python,
preferably. This will be an easy transition and you will have a great degree
of jobs open to you. There are dynamic language related jobs which aren't web-
development: bioinformatics, data mining, toolsmith positions (build/release,
qa, operations), platform engineering (creating custom OS images). Some of
them may require domain specific knowledge for the more senior positions but
would be willing to take on a strong coder on to a more junior position on the
premises that you'd be able to pick up the knowledge and grow into a more
senior role.

These positions will often either themselves involve projects in other
languages (Java, C/C++) that you'd be able to pick up on the job or be in a
larger engineering organization where you will be able to transition to these
jobs.

And in all these cases your experience as a web developer will be appreciated
and considered important.

I did the same transition myself: systems administration (involved in some
internal web app development, lot of Perl scripting)-> undergrad (and becoming
bored with systems administration after learning algorithms, operating
systems, compilers, etc...) -> operations engineering (lot of tools
development) -> Perl/C++/Java development. (At the mean time I've been working
part-time on a Masters in Computer Engineering which is opening newer domain
specific knowledge to me).

------
antigravity
I'd recommend doing a startup and/or side project involving interesting
functions of massive datasets.

Technology-wise, at least consider...

\- learning SML or OCaml or Erlang

\- learning Python

\- going deeper into Python. It's a fantastic way to express oneself. It
beautifully offers (generators, coroutines, multithreading, subprocesses, and
networking) for piping and distributing your computation, a flexible blend of
functional and imperative, and its syntax is the most conducive to elegance,
simplicity, and rereadability of anything I've tried.

...then building the core algorithms in C/C++ with SWIG wrappers, the tip of
the iceberg with Django, and everything else in pure Python.

A must-read: "Generator Tricks For Systems Programmers"

<http://www.dabeaz.com/generators/Generators.pdf>

~~~
greaterscope
Most of the the side-projects I started were definitely interesting to me in
some way. They were a way for me to explore how something could be made
easier, how it should be done, and how it could help me get more done.

For my company/startup (<http://greaterscope.com>) I'm also building online
storefront software, which has plenty of interesting problems. It can involve
massive datasets (for me), clever algorithms, etc. It has been the perfect
opportunity for me to harden and field-test my tools. This is written in PHP,
because it's the language I know best, and I feel like the problem isn't
"solved" for PHP yet.

But those are beside the point because I've started to think more about "what
I really want to do" and how to "not get stuck doing something I don't want to
do". So I defintely feel the need to find something I like doing even more
than storefront software in PHP.

Thanks for the technology recommendations. Python is high on my list at the
moment. I'm on the lookout.

------
hs
"I can’t stand having 60% of the work day tied up with: copy-and-paste chunk
of code, then tweak for new field names, then make sure to update the correct
database fields, add validation, ad nauseum."

no wonder with that approach (copy paste, field names, etc) ... one will get
bored

a good approach is "do without"

how do i write better, simpler code w/o copy paste

how do i eliminate using field names (i don't know in php, but maybe use list
and map ... nullify the need for temp variables)

maybe do w/o database? maybe use in memory persistence, load once, write every
time?

how about javascript validation instead of php equivalent? better user
experience

how about cutting the 100 loc (peppered with temp var, fn, loops and other
nasties) to 5 loc (say using map, apply, lambda, closure -- again, i don't use
php)

i do notice that codebase that has limits (like can't be > 1000 loc) is
usually better than the no-limits equivalent

"do without" will force u to think and it's more fun because your code won't
be similar to others' boilerplate

the code probably won't be 'best industry practice' aka code that
coworkers/employers will appreciate; however, the beauty of your own code can
only be enjoyed by you only ... and i think that itself is a great reward

but of course u can't hide from responsibility when the code breaks, otherwise
one can always blame the copy-paste or legacy codes -- anyway holding the
responsibility alone is a priviledge, not liability

------
nir
Find a niche which is new - so no one has years of experience doing it - and
appealing enough that there's a strong demand for skilled coders. Right now,
iPhone and Android are two examples of such fields, there's probably some
more.

Build a small app in it, and put it online for people to download. This will
both teach you the skills and show you can produce results. That should be
enough - no one will care about your experience/education/etc if you can show
past work in an in-demand field.

------
edw519
I wonder if OP may be confusing the technical environment (PHP) with the user
environment (boring apps).

I think you can work on really cool stuff in _any_ platform.

Similarly, you can also work on mind-numbingly boring stuff in any platform.

Perhaps he should just try to find something cool to work on (something that
_really_ turns him on), _without regard_ to technology, and then just learn
that technology _in order to_ work on in.

It's not about which hammer or screwdriver you use.

It's about satisfying those who will live in the thing you build.

~~~
andr
While it's possible to have a very cool and challenging PHP project, most of
the work you get paid for is glorified HTML forms. What I do to fight the
boredom is build my own framework. Over 2-3 projects I've gotten to something
that is close to Rails in functionality (tailored to my taste, of course).

~~~
edw519
_What I do to fight the boredom is build my own framework._

Excellent idea. I have done this myself several times.

My dilemma: At what point do you realize that your code is so cool that you
_don't_ want to develop it on someone else's machine (and dime)? I often find
myself saying, "This is WAY more than they're paying for and will be worthless
to me since they will own it."

~~~
greaterscope
To the parent: This where I've been. I've built many of my own tools and
frameworks. Problem is, they're still related to the space that I no longer
enjoy being employed in. It was fun work, with plenty of great challenges, and
proved to be a great strategy for securing most of my sanity. Elevate anything
to a "higher purpose" and you'll find some extra motivation to get the job
done.

To edw519: This where I'm going (in addition to looking for another line of
work I might enjoy more). I've been making my own tools for about three years.
I guess that's my "breaking point". I'm using them personally, but I don't
want to be at shops without some kickass tools and practices already in place.
I like my tools, but working at a place without any useful abstractions is no
fun. In the meantime, I'm trying to make the best use of my tools and talents
on my own dime, for my company (<http://greaterscope.com>). There I can solve
the problems I want to solve, without restrictions (until I get customers).
Hopefully it'll be a much better ride and I won't post another similar thing
in another five years.

~~~
edw519
greaterscope looks very promising!

Good luck and keep us posted.

------
hendler
PHP isn't like nationalism - you aren't unpatriotic to criticize. If you are
enlightened, all languages must have either some utility, or some feature that
teaches you something. Keep exploring.

Also, I dealt with this by getting _deeper_ into PHP by seeing what made it
tick - writing C/C++ extensions for PHP. Not super fun, but helped me
understand the value of Python/SWIG.

~~~
fauigerzigerk
Or the even greater value of ctypes:
<http://docs.python.org/library/ctypes.html>

------
thomasmallen
Pft. Web development involves solving a very different set of problems, but
it's no less a profession. Web development is more concerned with usability
and business needs than desktop development, so while the code challenges are
less extreme, you often are working under the watch of far more direct users.
Information architecture is also more of a focus in web applications.

~~~
greaterscope
You're right. It's just not for me. I'm a big self-motivator, and am learning
more of what makes me happy and unhappy.

------
bprater
You might consider some iPhone development. Strong demand for programmers and
the work is pretty diverse.

~~~
wizlb
Diverse? How so?

Maybe I'm wrong but the way I see it, not many business people are using it
and - do we really need another Zippo Lighter app?

Oh, you can do games I guess if that's what you're into. I just don't see a
big need for utility apps other than what's out there already.

------
Haskell
What you want to do is game development. Preferentially for mobile devices,
aka iPhone and Android.

Game development can involve all fields of computer science and software
engineering, in addition to a considerable amount of Physics, Mathematics,
Design, Music and Story Telling. There's nothing more complete and fun than
it.

~~~
whather
Unless you're working on someone else's game. Yes, it still gets boring.

------
sharkfish
Interesting I should read this today. I saw an ad for a job I wanted back in
early September. I wasn't qualified for it that I could tell from the ad. I
applied anyway and went through the interview process. I didn't know exactly
why I wanted the job until I was close to actually getting an offer. I figured
out I was just bored doing web development. I was already 3 months on a job I
had just taken, doing .NET, PHP and web dev using a variety of CMS's. I did it
for three months and I realized I just didn't enjoy it anymore. I started
doing web dev back in 1999-ish and that's all I know in real world experience.

But this new company took a chance on me. If I can keep up, I'll have that
low-level C++ programming experience I have always wanted, including
multithreaded stuff.

My intense interest registered and my new employer decided to take a chance on
me. Of course, there is more to the story. Such as, I had spent significant
time learning C++ on my own and had code to show for it. I'm also older and
maybe people take me seriously :)

I have a feeling the top developers are going to all start getting bored with
web dev soon. It stands to reason all these 20-somethings start branching out
and discovering the underlying software that makes the web work and will want
some of that action.

I'm just glad I'm ahead of the curve so I had little competition for this job.
The wave will be behind me! Yay!

More comments by me and possibly others here:
[http://www.crazyontap.com/topic.php?TopicId=41745&Posts=...](http://www.crazyontap.com/topic.php?TopicId=41745&Posts=2)

------
swombat
s/enough/too much/ ?

5 minutes of PHP is too much.

------
Fuca
Be a man an do a startup

Best of Luck

